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