1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #include <unistd.h> 5 6 #ifndef BUFSIZ 7 # define BUFSIZ 4096 8 #endif 9 10 #undef BUFSIZ 11 # define BUFSIZ 64 12 int main (void) 13 { 14 short ibuff[BUFSIZ], obuff[BUFSIZ]; 15 int rc, i, len; 16 17 while ((rc = read (0, ibuff, sizeof (ibuff))) > 0) { 18 memset (obuff, 0, sizeof (obuff)); 19 for (i = 0; i < (rc + 1) / 2; i++) { 20 obuff[i] = ibuff[i ^ 1]; 21 } 22 23 len = (rc + 1) & ~1; 24 25 if (write (1, obuff, len) != len) { 26 perror ("read error"); 27 return (EXIT_FAILURE); 28 } 29 30 memset (ibuff, 0, sizeof (ibuff)); 31 } 32 33 if (rc < 0) { 34 perror ("read error"); 35 return (EXIT_FAILURE); 36 } 37 return (EXIT_SUCCESS); 38 } 39