From 9d4c1b9de597fee69892160a52c94592f5a62097 Mon Sep 17 00:00:00 2001 From: Takuji Tanaka Date: Wed, 15 Jun 2022 14:37:45 +0000 Subject: ptexenc: refine encoding detection git-svn-id: svn://tug.org/texlive/trunk@63602 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/texk/ptexenc/ptexenc.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) (limited to 'Build') 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) { -- cgit v1.2.3