From 8458789326466ec3260d103c6bde435ade583877 Mon Sep 17 00:00:00 2001 From: Takuji Tanaka Date: Sun, 19 Jun 2016 12:18:53 +0000 Subject: upmendex 0.51 git-svn-id: svn://tug.org/texlive/trunk@41497 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/texk/upmendex/ChangeLog | 6 ++++ Build/source/texk/upmendex/fwrite.c | 61 +++++++++++++++++++----------------- Build/source/texk/upmendex/main.c | 2 +- 3 files changed, 39 insertions(+), 30 deletions(-) (limited to 'Build/source/texk/upmendex') 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 + + * 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 * 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;k0) { - 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) { -- cgit v1.2.3