static void flush(void) { if (writeall(1, buf, buflen) == -1) _exit(errno); buflen = 0; } static void wrch(const char ch) { if (buflen >= sizeof buf) flush(); buf[buflen++] = ch; return; } char inbuf[128]; int main(int argc, char **argv) { long long r, i; for (;;) { r = read(0, inbuf, sizeof inbuf); if (r == -1) _exit(errno); if (r == 0) break; for (i = 0; i < r; ++i) { wrch("0123456789abcdef"[15 & (inbuf[i] >> 4)]); wrch("0123456789abcdef"[15 & inbuf[i]]); } } wrch('\n'); return 0; }