aboutsummaryrefslogtreecommitdiff
path: root/libio/dbz/byteflip.c
diff options
context:
space:
mode:
Diffstat (limited to 'libio/dbz/byteflip.c')
-rw-r--r--libio/dbz/byteflip.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/libio/dbz/byteflip.c b/libio/dbz/byteflip.c
new file mode 100644
index 00000000000..d54c6591fa1
--- /dev/null
+++ b/libio/dbz/byteflip.c
@@ -0,0 +1,38 @@
+#include <stdio.h>
+
+#define MAXWORD 32
+
+int
+main(argc, argv)
+int argc;
+char *argv[];
+{
+ register int len;
+ int inmap[MAXWORD];
+ int outmap[MAXWORD];
+ char in[MAXWORD];
+ char out[MAXWORD];
+ register int i;
+ register int a;
+
+ a = 1;
+ len = atoi(argv[a++]);
+ if (len > MAXWORD)
+ abort(); /* kind of drastic... */
+ for (i = 0; i < len; i++)
+ inmap[i] = atoi(argv[a++]);
+ if (atoi(argv[a++]) != len)
+ abort();
+ for (i = 0; i < len; i++)
+ outmap[i] = atoi(argv[a++]);
+
+ while (fread(in, 1, len, stdin) == len) {
+ for (i = 0; i < len; i++)
+ out[outmap[i]] = in[inmap[i]];
+ fwrite(out, 1, len, stdout);
+ }
+#ifdef DBZ_FINISH
+ DBZ_FINISH;
+#endif
+ exit(0);
+}