diff --git a/tools/varrec.c b/tools/varrec.c new file mode 100644 index 0000000..390f889 --- /dev/null +++ b/tools/varrec.c @@ -0,0 +1,34 @@ +/* + * A little tool to convert files with variable records to byte streams. + * + * Each record consist of 2 bytes of length (little endian) followed by + * that number of data bytes. + * + * If the length is odd, there is a padding byte. This byte does not have + * to be 0. + */ +#include + +int main(int argc, char **argv) +{ + while (!feof(stdin)) { + int count, savecount; + unsigned char ch; + + ch = getchar(); + count = ch; + ch = getchar(); + count += ch << 8; + + savecount = count; + + while (count-- > 0) { + ch = getchar(); + putchar(ch); + } + + if (savecount & 1) { + getchar(); + } + } +}