diff options
Diffstat (limited to 'tools/xway-swap-bytes.c')
| -rw-r--r-- | tools/xway-swap-bytes.c | 38 | 
1 files changed, 38 insertions, 0 deletions
| diff --git a/tools/xway-swap-bytes.c b/tools/xway-swap-bytes.c new file mode 100644 index 000000000..3a6d82d54 --- /dev/null +++ b/tools/xway-swap-bytes.c @@ -0,0 +1,38 @@ +#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); +} |