|  | #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); | 
|  | } |