diff options
author | Takuji Tanaka <ttk@t-lab.opal.ne.jp> | 2022-06-15 14:37:45 +0000 |
---|---|---|
committer | Takuji Tanaka <ttk@t-lab.opal.ne.jp> | 2022-06-15 14:37:45 +0000 |
commit | 9d4c1b9de597fee69892160a52c94592f5a62097 (patch) | |
tree | 6904ddd657659ab3f114d1ed13ef541780e39a92 /Build/source | |
parent | f33901b389d4b5a3b1b072558171bb4a6deb8067 (diff) |
ptexenc: refine encoding detection
git-svn-id: svn://tug.org/texlive/trunk@63602 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source')
-rw-r--r-- | Build/source/texk/ptexenc/ptexenc.c | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/Build/source/texk/ptexenc/ptexenc.c b/Build/source/texk/ptexenc/ptexenc.c index db05d6c2451..55c0b155873 100644 --- a/Build/source/texk/ptexenc/ptexenc.c +++ b/Build/source/texk/ptexenc/ptexenc.c @@ -826,7 +826,8 @@ char *ptenc_guess_enc(FILE *fp) #endif /* DEBUG */ enc = xmalloc(sizeof(char)*18); - while ((k0 = fgetc(fp)) != EOF && maybe_sjis+maybe_euc+maybe_utf8>1) { + while ((k0 = fgetc(fp)) != EOF && + (maybe_sjis+maybe_euc+maybe_utf8>1 || pos_db || pos_utf8)) { lbyte++; if (k0==ESC) { k0 = fgetc(fp); @@ -858,15 +859,18 @@ char *ptenc_guess_enc(FILE *fp) if (maybe_sjis) { cdb[1] = k0; k1 = JIStoUCS2(SJIStoJIS(HILO(cdb[0],cdb[1]))); - if (k1) { #ifdef DEBUG + fprintf(stderr, "Character for guess encoding: 0x%02X%02X", cdb[0], cdb[1]); + if (k1) { i = UCStoUTF8S(k1, str0); str0[i] = '\0'; - fprintf(stderr, "Character for guess encoding: 0x%02X%02X", cdb[0], cdb[1]); fprintf(stderr, " sjis (%s)\n", str0); + } else { + fprintf(stderr, " not sjis\n"); + } #endif /* DEBUG */ + if (k1) continue; - } } maybe_sjis = 0; } @@ -897,8 +901,8 @@ char *ptenc_guess_enc(FILE *fp) } pos_db = 0; #ifdef DEBUG + fprintf(stderr, "Character for guess encoding: 0x%02X%02X", cdb[0], cdb[1]); if (maybe_sjis || maybe_euc) { - fprintf(stderr, "Character for guess encoding: 0x%02X%02X", cdb[0], cdb[1]); if (maybe_sjis) { i = UCStoUTF8S(k1, str0); str0[i] = '\0'; @@ -910,6 +914,8 @@ char *ptenc_guess_enc(FILE *fp) fprintf(stderr, " euc (%s)", str0); } fprintf(stderr, "\n"); + } else { + fprintf(stderr, " not sjis nor euc\n"); } #endif /* DEBUG */ } @@ -955,8 +961,10 @@ char *ptenc_guess_enc(FILE *fp) } } - if (pos_db) maybe_sjis = maybe_euc = 0; - if (pos_utf8) maybe_utf8 = 0; + if (k0==EOF) { + if (pos_db) maybe_sjis = maybe_euc = 0; + if (pos_utf8) maybe_utf8 = 0; + } if (is_ascii) strcpy(enc,"ASCII"); else if (maybe_sjis+maybe_euc+maybe_utf8>1) { |