summaryrefslogtreecommitdiff
path: root/Build/source
diff options
context:
space:
mode:
authorTakuji Tanaka <ttk@t-lab.opal.ne.jp>2022-06-15 14:37:45 +0000
committerTakuji Tanaka <ttk@t-lab.opal.ne.jp>2022-06-15 14:37:45 +0000
commit9d4c1b9de597fee69892160a52c94592f5a62097 (patch)
tree6904ddd657659ab3f114d1ed13ef541780e39a92 /Build/source
parentf33901b389d4b5a3b1b072558171bb4a6deb8067 (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.c22
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) {