Package: texlive-bin / 2016.20160513.41080.dfsg-2+deb9u1

upstream-svn41497-svn41498-fix-upmendex Patch series | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
diff --git a/texk/README b/texk/README
index 98c16d8..e429b23 100644
--- a/texk/README
+++ b/texk/README
@@ -98,7 +98,7 @@ ttf2pk2 - maintained here, by us
 
 ttfdump - ?
 
-upmendex 0.50 - 
+upmendex 0.51 - by Takuji Tanaka
   http://www.ctan.org/pkg/upmendex
   http://www.t-lab.opal.ne.jp/tex/uptex_en.html
 
diff --git a/texk/upmendex/ChangeLog b/texk/upmendex/ChangeLog
index e02a843..d3d014f 100644
--- a/texk/upmendex/ChangeLog
+++ b/texk/upmendex/ChangeLog
@@ -1,3 +1,9 @@
+2016-06-19  TANAKA Takuji  <ttk@t-lab.opal.ne.jp>
+
+	* version 0.51  Beta version.
+	* fwrite.c: Fix bug of option "hanzi_head" in style file.
+	Thanks to Dr. Werner Fink.
+
 2016-02-12  Karl Berry  <karl@tug.org>
 
 	* configure.ac (KPSE_CXX_HACK): add to avoid usual libstdc++.so
diff --git a/texk/upmendex/fwrite.c b/texk/upmendex/fwrite.c
index 75ae159..a54b5dd 100644
--- a/texk/upmendex/fwrite.c
+++ b/texk/upmendex/fwrite.c
@@ -67,33 +67,38 @@ static inline int SAPPENDF(char *buf, const char *format, ...)
 
 static void fprint_uchar(FILE *fp, const UChar *a, const int mode, const int len)
 {
-	int k;
-	char str[15], *ret;
-	UChar istr[5];
+	char str[3*INITIALLENGTH+1];
+	UChar istr[INITIALLENGTH];
 	int olen, wclen;
 	UErrorCode perr;
 
 	if (len<0) {
-		for (k=0; a[k] || k<4; k++) istr[k]=a[k];
-		wclen=k;
+		u_strcpy(istr,a);
+		wclen=u_strlen(istr);
 	} else {
-		wclen = is_surrogate_pair(a) ? 2 : 1;
+		wclen=is_surrogate_pair(a) ? 2 : 1;
 			      istr[0]=a[0];
 		if (wclen==2) istr[1]=a[1];
+		istr[wclen]=L'\0';
 	}
-	istr[wclen]=L'\0';
 	if (mode==M_TO_UPPER) {
-		perr = U_ZERO_ERROR;
-		u_strToUpper(istr,5,istr,wclen,"",&perr);
+		perr=U_ZERO_ERROR;
+		olen=u_strToUpper(istr,INITIALLENGTH,istr,wclen,"",&perr);
 	} else if (mode==M_TO_LOWER) {
-		perr = U_ZERO_ERROR;
-		u_strToLower(istr,5,istr,wclen, istr[0]==0x130&&turkish_i?"tr":"", &perr);
+		perr=U_ZERO_ERROR;
+		olen=u_strToLower(istr,INITIALLENGTH,istr,wclen, istr[0]==0x130&&turkish_i?"tr":"", &perr);
 	} else if (mode==M_TO_TITLE) {
-		perr = U_ZERO_ERROR;
-		u_strToTitle(istr,5,istr,wclen,NULL,"",&perr);
-	}
-	perr = U_ZERO_ERROR;
-	ret = u_strToUTF8(str, 15, &olen, istr, wclen, &perr);
+		perr=U_ZERO_ERROR;
+		olen=u_strToTitle(istr,INITIALLENGTH,istr,wclen,NULL,"",&perr);
+	} else
+		olen=wclen;
+	if (olen>INITIALLENGTH) {
+		warn_printf(efp, "\nWarning, Too long (%d) header.\n", olen);
+		wclen=INITIALLENGTH;
+	} else
+		wclen=olen;
+	perr=U_ZERO_ERROR;
+	u_strToUTF8(str, 3*INITIALLENGTH+1, &olen, istr, wclen, &perr);
 	fprintf(fp,"%s",str);
 }
 
@@ -844,7 +849,7 @@ static int initial_cmp_char(UChar *ini, UChar ch)
 static int init_hanzi_header(void)
 {
 	UChar strX[2],*pch0,*pch1;
-	int k, hzmode;
+	int k, hzmode, len;
 	struct hanzi_index *hz_idx_init;
 
 	strX[0]=0x5B57;  strX[1]=L'\0';
@@ -878,21 +883,18 @@ static int init_hanzi_header(void)
 	for (k=0;k<hz_index_len;k++) {
 		if (u_strlen(pch0)==0) break;
 		if ((pch1=u_strchr(pch0,L';'))>0) {
-			if (pch1-pch0>=INITIALLENGTH) {
-				warn_printf(efp, "\nWarning, Too long hanzi header.\n");
-				break;
-			}
-			u_strncpy(hz_index[k].idx,pch0,pch1-pch0);
-			hz_index[k].idx[pch1-pch0]=L'\0';
-			pch0=pch1+1;
+			len=pch1-pch0;
 		} else {
-			if (u_strlen(pch0)>=INITIALLENGTH) {
-				warn_printf(efp, "\nWarning, Too long hanzi header.\n");
-				break;
-			}
-			u_strcpy(hz_index[k].idx,pch0);
-			break;
+			len=u_strlen(pch0);
+		}
+		if (len>=INITIALLENGTH) {
+			warn_printf(efp, "\nWarning, Too long (%d) hanzi header.\n", len);
+			len=INITIALLENGTH-1;
 		}
+		u_strncpy(hz_index[k].idx,pch0,len);
+		hz_index[k].idx[len]=L'\0';
+		if (pch1>0) pch0=pch1+1;
+		else break;
 	}
 
 	return hzmode;
diff --git a/texk/upmendex/main.c b/texk/upmendex/main.c
index 6b2d689..eb5a68d 100644
--- a/texk/upmendex/main.c
+++ b/texk/upmendex/main.c
@@ -19,7 +19,7 @@ char *styfile,*idxfile[256],*indfile,*dicfile,*logfile;
 #endif
 KpathseaSupportInfo kp_ist,kp_dict;
 
-#define VERSION "version 0.50"
+#define VERSION "version 0.51"
 
 int main(int argc, char **argv)
 {