/* swap each pair of bits; read from stdin, write to stdout */
/* usage: swapbits < somefile > somefile.swapped-bits       */
/*        swapbits < somefile.swapped-bits > somefile       */

/* ari edelkind (08/19/2001)                                */
/* last modified 08/19/2001                                 */


#include <stdio.h>
#include <unistd.h>

#define BS 8192

int main(void) {
	char buf[BS];
	int size, len;
	char ibyte;
	char obyte;

	while (1) {
		len = size = read (0, buf, BS);

		if (size < 0) _exit (1);
		if (!size)    _exit (0);

		while (size--) {
			ibyte = buf[size];

			/* 0x55 == 01010101 */
			/* 0xAA == 10101010 */
			obyte  = (ibyte & 0x55) << 1;
			obyte |= (ibyte & 0xAA) >> 1;

			buf[size] = obyte;
		}

		size = write (1, buf, len);

		if (size < 0) _exit (1);
		if (!size)    _exit (0);
	}

	return 0;
}
