From d62b7f1f8a3c27c3cd51d4eb41d51e8aba545217 Mon Sep 17 00:00:00 2001 From: Peter Breitenlohner Date: Sun, 19 Dec 2010 15:40:03 +0000 Subject: cjk/utils 4.8.2 plus changes from Akira git-svn-id: svn://tug.org/texlive/trunk@20806 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/texk/cjkutils/cefconv.c | 127 +++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 Build/source/texk/cjkutils/cefconv.c (limited to 'Build/source/texk/cjkutils/cefconv.c') diff --git a/Build/source/texk/cjkutils/cefconv.c b/Build/source/texk/cjkutils/cefconv.c new file mode 100644 index 00000000000..f5932bbf7a4 --- /dev/null +++ b/Build/source/texk/cjkutils/cefconv.c @@ -0,0 +1,127 @@ +#define banner \ +"cefconv (CJK ver. 4.8.2)" \ + +/*2:*/ +#line 100 "./cjkutils-4.8.2/CEFconv/cefconv.w" + +#include +#include +#include + + +int main(int argc,char*argv[]) +{int ch,i; +unsigned char in[16]; +unsigned char out[32]; +unsigned char*inp,*outp; + +fprintf(stdout,"\\def\\CNSpreproc{%s}",banner); + +ch= fgetc(stdin); + +while(!feof(stdin)) +{if(ch=='&') +{inp= in; +outp= out; +*inp= ch; +*(++inp)= fgetc(stdin); + +if(*inp=='C'&&!feof(stdin)) +{*(++inp)= fgetc(stdin); +if(*inp=='0'&&!feof(stdin)) +{*(outp++)= 'B'; +*(outp++)= 'g'; +*(outp++)= '5'; +} +else if(*inp>='1'&&*inp<='7'&&!feof(stdin)) +{*(outp++)= 'C'; +*(outp++)= 'N'; +*(outp++)= 'S'; +*(outp++)= *inp; +} +else if((*inp=='X'||*inp=='Y')&&!feof(stdin)) +{*(outp++)= 'C'; +*(outp++)= 'E'; +*(outp++)= 'F'; +*(outp++)= *inp; +} +else +goto no_macro; +} +else if(*inp=='U'&&!feof(stdin)) +{*(outp++)= 'U'; +*(outp++)= 'T'; +*(outp++)= 'F'; +*(outp++)= '8'; +} +else +goto no_macro; + +*(++inp)= fgetc(stdin); +if(*inp!='-'||feof(stdin)) +goto no_macro; + +*(outp++)= '\177'; +*(outp++)= '\177'; +*(outp++)= '\"'; +*(outp++)= '0'; + +*(++inp)= fgetc(stdin); +if(isxdigit(*inp)&&*inp<0x80&&!feof(stdin)) +*(outp++)= toupper(*inp); +else +goto no_macro; + +*(++inp)= fgetc(stdin); +if(isxdigit(*inp)&&*inp<0x80&&!feof(stdin)) +*(outp++)= toupper(*inp); +else +goto no_macro; + +*(outp++)= '\177'; +*(outp++)= '\"'; +*(outp++)= '0'; + +*(++inp)= fgetc(stdin); +if(isxdigit(*inp)&&*inp<0x80&&!feof(stdin)) +*(outp++)= toupper(*inp); +else +goto no_macro; + +*(++inp)= fgetc(stdin); +if(isxdigit(*inp)&&*inp<0x80&&!feof(stdin)) +*(outp++)= toupper(*inp); +else +goto no_macro; + +*(outp++)= '\177'; +*outp= '\0'; + +*(++inp)= fgetc(stdin); +if(*inp!=';'||feof(stdin)) +goto no_macro; + +outp= out; +fprintf(stdout,"\17772\177"); +while(*outp) +fputc(*(outp++),stdout); + +ch= fgetc(stdin); +continue; + +no_macro: +ch= *inp; +i= inp-in; +inp= in; +while(i--) +fputc(*(inp++),stdout); +continue; +} +else +fputc(ch,stdout); + +ch= fgetc(stdin); +} +exit(EXIT_SUCCESS); +return 0; +}/*:2*/ -- cgit v1.2.3