/* * ww4convert - convert Word Writer 4 documents to HTML * * This program is a simplistic, brain-dead attempt to convert Word Writer 4 * documents into HTML. Word Writer 4 was a popular word processor for the * Commodore 64 in the late 1980's. * * To compile: * cc -o ww4convert ww4convert.c * * To use: * ww4convert < input_file > output_file.html * * Bash commands to convert every file in a directory: * for i in *; do new=`echo $i | sed 's/ /_/g'`; ww4convert < "$i" > /tmp/html/$new.html ; done * * This program is public domain -- do whatever you want with it. * * David Simmons * March 20, 2007 * */ #include /* delimiter ctrl-d */ /* mark (bookmark) ctrl-s set mark ... c= n next mark outliner index line - F6 lower index = ctrl-L raise index = ctrl-R */ int main(int argc, char **argv) { int n; unsigned char c; unsigned char header[28]; int checkmark=0; int marknum=0; /* read the WW4 header */ fread(header, 28, 1, stdin); /* HTML header */ printf("\n\nexported ww4 document\n\n\n"); /* process each character in the stream */ while ((n=getchar())!=EOF) { c = (char)n; if (checkmark) { if (c == 0xFF) { printf(" -->\n"); checkmark=0; continue; } } /**** ascii translation ****/ if (c == 0x00) { putchar('@'); } else if ((c >= 0x01) && (c <= 0x1A)) { putchar(c+0x60); } else if (c == 0x1E) { putchar('^'); /* caret */ } else if (c == 0x20) { /* space */ putchar(' '); } else if ((c > 0x20) && (c <= 0x3F)) { if (c == '<') { printf("<"); } else if (c == '>') { printf(">"); } else { putchar(c); } } else if ((c >= 0x1B) && (c<=0x1F)) { if (c == 0x1C) { printf("£"); } else { putchar(c+0x40); } } else if ( ((c >= 0x40) && (c <= 0x5A)) ) { putchar(c); } else if (c == 0x7A) { /* "check-mark" directives in the WW4 doc */ printf(""); printf("",++marknum); } } printf("\n"); /* * other (unhandled) control codes: * d7/97 code1 * d8/98 code2 * d9/99 code3 */ /* close the HTML document */ printf("\n\n"); return 0; }