summaryrefslogtreecommitdiff
path: root/Build/source/texk/upmendex
diff options
context:
space:
mode:
authorTakuji Tanaka <KXD02663@nifty.ne.jp>2016-06-19 12:18:53 +0000
committerTakuji Tanaka <KXD02663@nifty.ne.jp>2016-06-19 12:18:53 +0000
commit8458789326466ec3260d103c6bde435ade583877 (patch)
tree9a282099ba844ff1dd5b0e9455366710d9c99fe2 /Build/source/texk/upmendex
parent4a3c2489f0b0fd32dacc4410ad8972fee2c528c1 (diff)
upmendex 0.51
git-svn-id: svn://tug.org/texlive/trunk@41497 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/upmendex')
-rw-r--r--Build/source/texk/upmendex/ChangeLog6
-rw-r--r--Build/source/texk/upmendex/fwrite.c61
-rw-r--r--Build/source/texk/upmendex/main.c2
3 files changed, 39 insertions, 30 deletions
diff --git a/Build/source/texk/upmendex/ChangeLog b/Build/source/texk/upmendex/ChangeLog
index e02a843a150..d3d014f1b07 100644
--- a/Build/source/texk/upmendex/ChangeLog
+++ b/Build/source/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/Build/source/texk/upmendex/fwrite.c b/Build/source/texk/upmendex/fwrite.c
index 75ae1591d59..f0288b7cfdf 100644
--- a/Build/source/texk/upmendex/fwrite.c
+++ b/Build/source/texk/upmendex/fwrite.c
@@ -68,32 +68,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 +850,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 +884,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/Build/source/texk/upmendex/main.c b/Build/source/texk/upmendex/main.c
index 6b2d689828b..eb5a68db6e7 100644
--- a/Build/source/texk/upmendex/main.c
+++ b/Build/source/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)
{