From 333b605b2afd472b823aeda0adf0e8b1ea9843c0 Mon Sep 17 00:00:00 2001 From: fishsoupisgood Date: Mon, 27 May 2019 02:41:51 +0100 Subject: initial commit from asl-1.41r8.tar.gz --- unumlaut.c | 91 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 unumlaut.c (limited to 'unumlaut.c') diff --git a/unumlaut.c b/unumlaut.c new file mode 100644 index 0000000..73caab7 --- /dev/null +++ b/unumlaut.c @@ -0,0 +1,91 @@ +#include "stdinc.h" + +#include "chardefs.h" + +typedef struct + { + int isochar; + char *syschar; + } chartrans; + +static chartrans specchars[]= + {{0344,CH_ae}, + {0366,CH_oe}, + {0374,CH_ue}, + {0304,CH_Ae}, + {0326,CH_Oe}, + {0334,CH_Ue}, + {0337,CH_sz}, + {0262,CH_e2}, + {0265,CH_mu}, + {0340,CH_agrave}, + {0000,""}}; + +#define TMPNAME "tempfile" + + void doexec(char *cmdline) +{ + int res=system(cmdline); + if (res!=0) + { + fprintf(stderr,"command \"%s\" failed\n",cmdline); exit(2); + } +} + + int main(int argc, char **argv) +{ + FILE *src,*dest; + int ch; + unsigned char cmdline[1024]; + long charcnt,metacnt,crcnt; + chartrans *z2; + + if (argc<2) + { + fprintf(stderr,"usage: %s [destfile]\n",argv[0]); + exit(1); + } + + src=fopen(argv[1],OPENRDMODE); + if (src==NULL) + { + fprintf(stderr,"error opening %s for reading\n",argv[1]); exit(2); + } + dest=fopen((argc==2)?TMPNAME:argv[2],OPENWRMODE); + if (dest==NULL) + { + fprintf(stderr,"error opening %s for writing\n",TMPNAME); exit(2); + } + charcnt=metacnt=crcnt=0; + while (!feof(src)) + { + ch=fgetc(src); charcnt++; + switch (ch) + { + case EOF: + break; + case 10: + fputc(13,dest); fputc(10,dest); crcnt++; break; + default: + for (z2=specchars; z2->isochar!=0000; z2++) + if (ch==z2->isochar) + { fputs(z2->syschar,dest); metacnt++; break; } + if (z2->isochar==0000) fputc(ch,dest); + } + } + fclose(src); fclose(dest); + if (argc==2) + BEGIN +#if defined (__MSDOS__) || defined(__EMX__) + sprintf(cmdline,"copy %s %s",TMPNAME,argv[1]); +#else + sprintf(cmdline,"cp %s %s",TMPNAME,argv[1]); +#endif + doexec(cmdline); + unlink(TMPNAME); + END + printf("%s: %ld char(s), %ld cr(s) added, %ld meta char(s) reconverted\n", + argv[1],charcnt,crcnt,metacnt); + + return 0; +} -- cgit v1.2.3