diff options
author | Takuji Tanaka <KXD02663@nifty.ne.jp> | 2016-06-19 12:18:53 +0000 |
---|---|---|
committer | Takuji Tanaka <KXD02663@nifty.ne.jp> | 2016-06-19 12:18:53 +0000 |
commit | 8458789326466ec3260d103c6bde435ade583877 (patch) | |
tree | 9a282099ba844ff1dd5b0e9455366710d9c99fe2 | |
parent | 4a3c2489f0b0fd32dacc4410ad8972fee2c528c1 (diff) |
upmendex 0.51
git-svn-id: svn://tug.org/texlive/trunk@41497 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r-- | Build/source/texk/README | 2 | ||||
-rw-r--r-- | Build/source/texk/upmendex/ChangeLog | 6 | ||||
-rw-r--r-- | Build/source/texk/upmendex/fwrite.c | 61 | ||||
-rw-r--r-- | Build/source/texk/upmendex/main.c | 2 |
4 files changed, 40 insertions, 31 deletions
diff --git a/Build/source/texk/README b/Build/source/texk/README index 98c16d85903..e429b23a05e 100644 --- a/Build/source/texk/README +++ b/Build/source/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/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) { |