diff --git a/ksh.changes b/ksh.changes index 7dcb6de..52b20da 100644 --- a/ksh.changes +++ b/ksh.changes @@ -1,3 +1,12 @@ +------------------------------------------------------------------- +Tue Mar 19 15:14:00 UTC 2013 - werner@suse.de + +- Make Shift_JIS patch more reliable as requestef from upstream +- Drop remaining part of the patch ksh93-zerofill.dif for zerofilled + variables (bnc#785360 as the first part of the patch is upstream + together with an other change. This fix a side effect of cutting + variables if TMOUT is used (bnc#808956) + ------------------------------------------------------------------- Thu Feb 28 13:10:09 UTC 2013 - werner@suse.de diff --git a/ksh.spec b/ksh.spec index 03f98eb..6a101ca 100644 --- a/ksh.spec +++ b/ksh.spec @@ -114,8 +114,6 @@ Patch24: ksh93-builtin.dif Patch27: astksh_builtin_poll20120806_001.diff # PATCH-FIX-UPSTREAM ksh93-env.dif [bnc#785266, bnc#803613] Patch28: ksh93-env.dif -# PATCH-FIX-UPSTREAM ksh93-zerofill.dif [bnc#785360] -Patch29: ksh93-zerofill.dif # PATCH-EXTEND-UPSTREAM ksh93-pathtemp.dif [bnc#786134] # the fix is part of ksh93u+ 2012-06-28 # nevertheless the /dev/shm extension is useful @@ -206,7 +204,6 @@ fi %patch24 %patch27 %patch28 -%patch29 %patch30 %patch31 %patch32 @@ -389,7 +386,7 @@ fi fi done MEMORY="-s 128 ${MEMORY:+-e ${MEMORY}}" - RPM_OPT_FLAGS=$(echo "${RPM_OPT_FLAGS}"|sed -r 's/[[:blank:]]+-g[0-9]?/ -g2/g') + RPM_OPT_FLAGS=$(echo "${RPM_OPT_FLAGS}"|sed -r 's/([[:blank:]]+)-g[[:digit:]]+/\1-g2/g;s/([[:blank:]]+)-g([[:blank:]]+|$)/\1-g2\2/g') UNIVERSE=att LDFLAGS="-lm" LDSOFLG="" diff --git a/ksh93-shift_ijs.dif b/ksh93-shift_ijs.dif index fe491ec..688edbb 100644 --- a/ksh93-shift_ijs.dif +++ b/ksh93-shift_ijs.dif @@ -116,7 +116,7 @@ else { --- src/cmd/ksh93/sh/macro.c -+++ src/cmd/ksh93/sh/macro.c 2013-02-07 13:26:07.897952986 +0000 ++++ src/cmd/ksh93/sh/macro.c 2013-03-19 13:31:04.604732787 +0100 @@ -54,6 +54,7 @@ #if SHOPT_MULTIBYTE # undef isascii @@ -125,7 +125,7 @@ #else # define mbchar(p) (*(unsigned char*)p++) #endif /* SHOPT_MULTIBYTE */ -@@ -2026,6 +2027,10 @@ static void comsubst(Mac_t *mp,register +@@ -2026,6 +2027,11 @@ static void comsubst(Mac_t *mp,register struct _mac_ savemac; int savtop = stktell(stkp); char lastc=0, *savptr = stkfreeze(stkp,0); @@ -133,33 +133,36 @@ + const Lc_t *lc=lcinfo(LC_CTYPE)->lc; + wchar_t lastw=0; +#endif /* SHOPT_MULTIBYTE */ ++ ssize_t len; int was_history = sh_isstate(SH_HISTORY); int was_verbose = sh_isstate(SH_VERBOSE); int was_interactive = sh_isstate(SH_INTERACTIVE); -@@ -2209,6 +2214,17 @@ static void comsubst(Mac_t *mp,register +@@ -2209,17 +2215,34 @@ static void comsubst(Mac_t *mp,register } else if(lastc) { +- mac_copy(mp,&lastc,1); ++ char mb[8]; ++ mb[0] = lastc; ++ len = 1; +#if SHOPT_MULTIBYTE + if(lastw) -+ { -+ int n; -+ char mb[8]; -+ n = mbconv(mb, lastw); -+ mac_copy(mp,mb,n); -+ lastw = 0; -+ } -+ else ++ len = mbconv(mb, lastw); ++ lastw = 0; +#endif /* SHOPT_MULTIBYTE */ - mac_copy(mp,&lastc,1); lastc = 0; ++ mac_copy(mp,mb,len); } -@@ -2220,6 +2236,17 @@ static void comsubst(Mac_t *mp,register - ssize_t len = 1; - + newlines = nextnewlines; + if(++c < bufsize) + str[c] = 0; + else + { +- ssize_t len = 1; +- /* can't write past buffer so save last character */ +#if SHOPT_MULTIBYTE -+ if ((len = mbsize(str))>1 && !(lc->flags & LC_utf8)) ++ if ((lc->flags & LC_utf8)==0 && (len = mbsize(str))>1) + { + len = mb2wc(lastw,str,len); + if (len < 0) @@ -172,25 +175,25 @@ c -= len; lastc = str[c]; str[c] = 0; -@@ -2240,6 +2267,17 @@ static void comsubst(Mac_t *mp,register +@@ -2240,8 +2263,16 @@ static void comsubst(Mac_t *mp,register } if(lastc) { +- mac_copy(mp,&lastc,1); ++ char mb[8]; ++ mb[0] = lastc; ++ len = 1; +#if SHOPT_MULTIBYTE + if(lastw) -+ { -+ int n; -+ char mb[8]; -+ n = mbconv(mb, lastw); -+ mac_copy(mp,mb,n); -+ lastw = 0; -+ } -+ else ++ len = mbconv(mb, lastw); ++ lastw = 0; +#endif /* SHOPT_MULTIBYTE */ - mac_copy(mp,&lastc,1); lastc = 0; ++ mac_copy(mp,mb,len); } -@@ -2340,13 +2378,13 @@ static void mac_copy(register Mac_t *mp, + sfclose(sp); + return; +@@ -2340,13 +2371,13 @@ static void mac_copy(register Mac_t *mp, if(mp->pattern) { char *sp = "&|()"; @@ -228,7 +231,7 @@ int len; --- src/cmd/ksh93/tests/sjis.sh +++ src/cmd/ksh93/tests/sjis.sh 2011-05-20 15:11:29.000000000 +0000 -@@ -0,0 +1,67 @@ +@@ -0,0 +1,77 @@ +######################################################################## +# # +# Copyright (c) 2007 SuSE Linux Products GmbH, Nuernberg, Germany # @@ -295,6 +298,16 @@ + print -u2 -n "\t" + print -u2 -r ${0##*/}[$LINENO]: "Shift-JIS encoding failed" +fi ++ ++LANG=POSIX ++typeset -r utf8_euro_char1=$'\u[20ac]' ++typeset -r utf8_euro_char2=$'\342\202\254' ++(( (${#utf8_euro_char1} == 1) && (${#utf8_euro_char2} == 1) )) || export LC_ALL='en_US.UTF-8' ++if [[ "$(printf '\u[20ac]')" != $'\342\202\254' ]] ; then ++ : err_exit ++ print -u2 -n "\t" ++ print -u2 -r ${0##*/}[$LINENO]: "Locale overrride failed." ++fi +exit $err --- src/lib/libast/comp/setlocale.c +++ src/lib/libast/comp/setlocale.c 2007-12-20 17:50:28.000000000 +0000 diff --git a/ksh93-zerofill.dif b/ksh93-zerofill.dif deleted file mode 100644 index 4f1d624..0000000 --- a/ksh93-zerofill.dif +++ /dev/null @@ -1,20 +0,0 @@ ---- src/cmd/ksh93/bltins/typeset.c -+++ src/cmd/ksh93/bltins/typeset.c 2012-10-19 14:56:49.000000000 +0000 -@@ -756,6 +756,7 @@ static int setall(char **argv,regist - } - if (tp->aflag == '-') - { -+ int oldnum; - if((flag&NV_EXPORT) && (strchr(name,'.') || nv_isvtree(np))) - errormsg(SH_DICT,ERROR_exit(1),e_badexport,name); - #if SHOPT_BSH -@@ -774,6 +775,9 @@ static int setall(char **argv,regist - else if(!(flag&NV_LJUST)) - newflag &= ~NV_LJUST; - } -+ oldnum = nv_size(np); -+ if (oldnum > 0) -+ tp->argnum = oldnum; - } - else - {