#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #ifndef BUFSIZ # define BUFSIZ 4096 #endif #undef BUFSIZ # define BUFSIZ 64 int main (void) { short ibuff[BUFSIZ], obuff[BUFSIZ]; int rc, i, len; while ((rc = read (0, ibuff, sizeof (ibuff))) > 0) { memset (obuff, 0, sizeof (obuff)); for (i = 0; i < (rc + 1) / 2; i++) { obuff[i] = ibuff[i ^ 1]; } len = (rc + 1) & ~1; if (write (1, obuff, len) != len) { perror ("read error"); return (EXIT_FAILURE); } memset (ibuff, 0, sizeof (ibuff)); } if (rc < 0) { perror ("read error"); return (EXIT_FAILURE); } return (EXIT_SUCCESS); }