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
main(void)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