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 12int 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