39 lines
647 B
C
39 lines
647 B
C
|
#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);
|
||
|
}
|