88 lines
1.9 KiB
C
88 lines
1.9 KiB
C
|
--- gdkanji.c.orig Fri Feb 2 05:23:56 2001
|
||
|
+++ gdkanji.c Wed Feb 7 20:59:08 2001
|
||
|
@@ -103,14 +103,18 @@
|
||
|
unsigned char *str;
|
||
|
#endif
|
||
|
{
|
||
|
- static int whatcode;
|
||
|
+ static int whatcode = ASCII;
|
||
|
+ int oldcode = ASCII;
|
||
|
int c, i;
|
||
|
char *lang = NULL;
|
||
|
|
||
|
c = '\1';
|
||
|
i = 0;
|
||
|
|
||
|
- if (whatcode == 0) whatcode = ASCII;
|
||
|
+ if (whatcode != EUCORSJIS && whatcode != ASCII) {
|
||
|
+ oldcode = whatcode;
|
||
|
+ whatcode = ASCII;
|
||
|
+ }
|
||
|
|
||
|
while ((whatcode == EUCORSJIS || whatcode == ASCII) && c != '\0') {
|
||
|
if ((c = str[i++]) != '\0') {
|
||
|
@@ -167,7 +171,7 @@
|
||
|
if ((c >= 64 && c <= 126) || (c >= 128 && c <= 160))
|
||
|
whatcode = SJIS;
|
||
|
else
|
||
|
- if (c >= 253 && c >= 254) whatcode = EUC;
|
||
|
+ if (c >= 253 && c <= 254) whatcode = EUC;
|
||
|
else
|
||
|
if (c >= 161 && c <= 252) whatcode = EUCORSJIS;
|
||
|
}
|
||
|
@@ -184,6 +188,8 @@
|
||
|
debug("Kanji code detected at %d byte.", i);
|
||
|
#endif
|
||
|
|
||
|
+ if (whatcode == EUCORSJIS && oldcode != ASCII) whatcode = oldcode;
|
||
|
+
|
||
|
if (whatcode == EUCORSJIS) {
|
||
|
if (getenv ("LC_ALL")) lang = getenv ("LC_ALL");
|
||
|
else
|
||
|
@@ -310,7 +316,7 @@
|
||
|
error("invalid code specification: \"%s\" or \"%s\"",
|
||
|
EUCSTR, code);
|
||
|
#endif
|
||
|
- strcpy(to, from);
|
||
|
+ ustrcpy(to, from);
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
@@ -328,7 +334,7 @@
|
||
|
else
|
||
|
#endif
|
||
|
error("something happen");
|
||
|
- strcpy(to, from);
|
||
|
+ ustrcpy(to, from);
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
@@ -526,11 +532,10 @@
|
||
|
|
||
|
t = (unsigned char *)gdMalloc(BUFSIZ);
|
||
|
any2eucjp(t, s, BUFSIZ);
|
||
|
- i = strlen(t);
|
||
|
+ i = strlen((const char *)t);
|
||
|
gdFree(t);
|
||
|
return i;
|
||
|
}
|
||
|
-#endif
|
||
|
|
||
|
#ifdef DEBUG
|
||
|
int main()
|
||
|
@@ -543,7 +548,7 @@
|
||
|
while ( (c = fgetc(stdin)) != '\n' && i < BUFSIZ ) input[i++] = c;
|
||
|
input[i] = '\0';
|
||
|
|
||
|
- printf("input : %d bytes\n", strlen(input));
|
||
|
+ printf("input : %d bytes\n", strlen((const char *)input));
|
||
|
printf("output: %d bytes\n", strwidth(input));
|
||
|
|
||
|
output = (unsigned char *)gdMalloc(BUFSIZ);
|
||
|
@@ -555,4 +560,5 @@
|
||
|
|
||
|
return 0;
|
||
|
}
|
||
|
+#endif
|
||
|
#endif
|