Hello community, here is the log from the commit of package mksh for openSUSE:Factory checked in at 2014-09-06 12:18:33 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/mksh (Old) and /work/SRC/openSUSE:Factory/.mksh.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mksh" Changes: -------- --- /work/SRC/openSUSE:Factory/mksh/mksh.changes 2014-08-25 11:04:04.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.mksh.new/mksh.changes 2014-09-06 16:59:29.000000000 +0200 @@ -1,0 +2,23 @@ +Thu Sep 4 16:06:24 UTC 2014 - g...@opensuse.org + +- update to version 50b + - [Ypnose] Fix operator description in the manpage + - [tg] Change all mention of “eglibc” to “glibc”, it is merged + back + - [Colona] Fix rare infinite loop with invalid UTF-8 in the edit + buffer + - [tg] Make more clear when a shell is interactive in the manpage + - [tg] Document that % is a symmetric remainder operation, and + how to get a mathematical modulus from it, in the manpage + - [tg, Christopher Ferris, Elliott Hughes] Make the cat(1) + builtin also interruptible in the write loop, not just in the + read loop, and avoid it getting SIGPIPE in the smores function + in dot.mkshrc by terminating cat upon user quit + - [tg] Make some comments match the code, after jaredy from obsd + changed IFS split handling + - [tg] Fix some IFS-related mistakes in the manual page + - [tg] Document another issue as known-to-fail test IFS-subst-3 + - [tg] Improve check.pl output in some cases + - [tg, Jb_boin] Relax overzealous nameref RHS checks + +------------------------------------------------------------------- Old: ---- mksh-R50.tgz New: ---- mksh-R50b.tgz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ mksh.spec ++++++ --- /var/tmp/diff_new_pack.Vkz6vc/_old 2014-09-06 16:59:30.000000000 +0200 +++ /var/tmp/diff_new_pack.Vkz6vc/_new 2014-09-06 16:59:30.000000000 +0200 @@ -21,7 +21,7 @@ # Please see OBS home:mirabile/mksh for a package for other distributions. Name: mksh -Version: 50 +Version: 50b Release: 0 Summary: MirBSD Korn Shell License: MirOS and ISC ++++++ mksh-R50.tgz -> mksh-R50b.tgz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mksh/Build.sh new/mksh/Build.sh --- old/mksh/Build.sh 2014-06-29 12:56:33.000000000 +0200 +++ new/mksh/Build.sh 2014-09-03 21:23:13.000000000 +0200 @@ -1,5 +1,5 @@ #!/bin/sh -srcversion='$MirOS: src/bin/mksh/Build.sh,v 1.662 2014/06/29 10:56:08 tg Exp $' +srcversion='$MirOS: src/bin/mksh/Build.sh,v 1.664 2014/09/03 19:22:48 tg Exp $' #- # Copyright (c) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, # 2011, 2012, 2013, 2014 @@ -1784,7 +1784,7 @@ #define EXTERN #define MKSH_INCLUDES_ONLY #include "sh.h" - __RCSID("$MirOS: src/bin/mksh/Build.sh,v 1.662 2014/06/29 10:56:08 tg Exp $"); + __RCSID("$MirOS: src/bin/mksh/Build.sh,v 1.664 2014/09/03 19:22:48 tg Exp $"); int main(void) { printf("Hello, World!\n"); return (isatty(0)); } EOF case $cm in @@ -2310,7 +2310,7 @@ addsrcs USE_PRINTF_BUILTIN printf.c test 1 = "$USE_PRINTF_BUILTIN" && add_cppflags -DMKSH_PRINTF_BUILTIN test 1 = "$HAVE_CAN_VERB" && CFLAGS="$CFLAGS -verbose" -add_cppflags -DMKSH_BUILD_R=501 +add_cppflags -DMKSH_BUILD_R=502 $e $bi$me: Finished configuration testing, now producing output.$ao @@ -2620,7 +2620,7 @@ MKSH_DONT_EMIT_IDSTRING omit RCS IDs from binary MKSH_MIDNIGHTBSD01ASH_COMPAT set -o sh: additional compatibility quirk MKSH_NOPROSPECTOFWORK disable jobs, co-processes, etc. (do not use) -MKSH_NOPWNAM skip PAM calls, for -static on eglibc, Solaris +MKSH_NOPWNAM skip PAM calls, for -static on glibc or Solaris MKSH_NO_CMDLINE_EDITING disable command line editing code entirely MKSH_NO_DEPRECATED_WARNING omit warning when deprecated stuff is run MKSH_NO_EXTERNAL_CAT omit hack to skip cat builtin when flags passed diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mksh/check.pl new/mksh/check.pl --- old/mksh/check.pl 2014-06-09 15:26:15.000000000 +0200 +++ new/mksh/check.pl 2014-08-19 09:43:57.000000000 +0200 @@ -1,4 +1,4 @@ -# $MirOS: src/bin/mksh/check.pl,v 1.36 2014/06/09 13:25:50 tg Exp $ +# $MirOS: src/bin/mksh/check.pl,v 1.37 2014/08/19 07:43:32 tg Exp $ # $OpenBSD: th,v 1.1 2013/12/02 20:39:44 millert Exp $ #- # Copyright (c) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2011, @@ -348,6 +348,7 @@ print " ($nifailed ignored)" if $nifailed; print " ($nxfailed unexpected)" if $nxfailed; print " (as expected)" if $nfailed && !$nxfailed && !$nifailed; + print " ($nfailed expected)" if $nfailed && ($nxfailed || $nifailed); print "\nTotal passed: $tot_passed"; print " ($nxpassed unexpected)" if $nxpassed; print "\n"; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mksh/check.t new/mksh/check.t --- old/mksh/check.t 2014-06-29 13:28:51.000000000 +0200 +++ new/mksh/check.t 2014-09-03 21:23:14.000000000 +0200 @@ -1,4 +1,4 @@ -# $MirOS: src/bin/mksh/check.t,v 1.654 2014/06/29 11:28:26 tg Exp $ +# $MirOS: src/bin/mksh/check.t,v 1.658 2014/09/03 19:22:49 tg Exp $ # OpenBSD src/regress/bin/ksh updated: 2013/12/02 20:39:44 #- # Copyright © 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, @@ -27,7 +27,7 @@ # http://www.freebsd.org/cgi/cvsweb.cgi/src/tools/regression/bin/test/regress.sh?rev=HEAD expected-stdout: - @(#)MIRBSD KSH R50 2014/06/29 + @(#)MIRBSD KSH R50 2014/09/03 description: Check version of shell. stdin: @@ -36,7 +36,7 @@ category: shell:legacy-no --- expected-stdout: - @(#)LEGACY KSH R50 2014/06/29 + @(#)LEGACY KSH R50 2014/09/03 description: Check version of legacy shell. stdin: @@ -3733,6 +3733,17 @@ expected-stdout: <1> <shift> <1> <2> --- +name: IFS-subst-3 +description: + Check leading IFS non-whitespace after trim does make a field +expected-fail: yes +stdin: + showargs() { for i; do echo -n " <$i>"; done; echo; } + IFS=: + showargs 1 ${-+:foo:bar} +expected-stdout: + <1> <> <foo> <bar> +--- name: IFS-arith-1 description: http://austingroupbugs.net/view.php?id=832 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mksh/dot.mkshrc new/mksh/dot.mkshrc --- old/mksh/dot.mkshrc 2014-01-11 19:10:04.000000000 +0100 +++ new/mksh/dot.mkshrc 2014-07-28 23:46:09.000000000 +0200 @@ -1,5 +1,5 @@ # $Id$ -# $MirOS: src/bin/mksh/dot.mkshrc,v 1.88 2014/01/11 18:09:39 tg Exp $ +# $MirOS: src/bin/mksh/dot.mkshrc,v 1.89 2014/07/28 21:45:44 tg Exp $ #- # Copyright (c) 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, # 2011, 2012, 2013, 2014 @@ -242,20 +242,23 @@ # pager (not control character safe) function smores { - local dummy line llen curlin=0 - - cat "$@" | while IFS= read -r line; do - llen=${%line} - (( llen == -1 )) && llen=${#line} - (( llen = llen ? (llen + COLUMNS - 1) / COLUMNS : 1 )) - if (( (curlin += llen) >= LINES )); then - print -n -- '\033[7m--more--\033[0m' - read -u1 dummy - [[ $dummy = [Qq]* ]] && return 0 - curlin=$llen - fi - print -r -- "$line" - done + ( + set +m + cat "$@" |& + trap "rv=\$?; kill $! >/dev/null 2>&1; exit \$rv" EXIT + while IFS= read -pr line; do + llen=${%line} + (( llen == -1 )) && llen=${#line} + (( llen = llen ? (llen + COLUMNS - 1) / COLUMNS : 1 )) + if (( (curlin += llen) >= LINES )); then + print -n -- '\033[7m--more--\033[0m' + read -u1 || exit $? + [[ $REPLY = [Qq]* ]] && exit 0 + curlin=$llen + fi + print -r -- "$line" + done + ) } # base64 encoder and decoder, RFC compliant, NUL safe diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mksh/edit.c new/mksh/edit.c --- old/mksh/edit.c 2014-01-05 22:57:49.000000000 +0100 +++ new/mksh/edit.c 2014-07-13 13:34:53.000000000 +0200 @@ -28,7 +28,7 @@ #ifndef MKSH_NO_CMDLINE_EDITING -__RCSID("$MirOS: src/bin/mksh/edit.c,v 1.275 2014/01/05 21:57:24 tg Exp $"); +__RCSID("$MirOS: src/bin/mksh/edit.c,v 1.276 2014/07/13 11:34:28 tg Exp $"); /* * in later versions we might use libtermcap for this, but since external @@ -1628,7 +1628,7 @@ int adj = x_adj_done; x_lastcp(); - while (*str && str < xlp && adj == x_adj_done) + while (*str && str < xlp && x_col < xx_cols && adj == x_adj_done) x_zotc3(&str); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mksh/eval.c new/mksh/eval.c --- old/mksh/eval.c 2014-06-09 13:16:32.000000000 +0200 +++ new/mksh/eval.c 2014-07-29 18:29:36.000000000 +0200 @@ -23,7 +23,7 @@ #include "sh.h" -__RCSID("$MirOS: src/bin/mksh/eval.c,v 1.150 2014/06/09 11:16:07 tg Exp $"); +__RCSID("$MirOS: src/bin/mksh/eval.c,v 1.151 2014/07/29 16:29:11 tg Exp $"); /* * string expansion @@ -897,14 +897,14 @@ * word | ws nws 0 * ----------------------------------- * IFS_WORD w/WS w/NWS w - * IFS_WS -/WS w/NWS - - * IFS_NWS -/NWS w/NWS w + * IFS_WS -/WS -/NWS - + * IFS_NWS -/NWS w/NWS - * (w means generate a word) * Note that IFS_NWS/0 generates a word (AT&T ksh * doesn't do this, but POSIX does). */ if (word == IFS_WORD || - (!ctype(c, C_IFSWS) && c && word == IFS_NWS)) { + (word == IFS_NWS && c && !ctype(c, C_IFSWS))) { emit_word: *dp++ = '\0'; cp = Xclose(ds, dp); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mksh/funcs.c new/mksh/funcs.c --- old/mksh/funcs.c 2014-06-09 15:26:17.000000000 +0200 +++ new/mksh/funcs.c 2014-07-28 23:46:09.000000000 +0200 @@ -38,7 +38,7 @@ #endif #endif -__RCSID("$MirOS: src/bin/mksh/funcs.c,v 1.256 2014/06/09 13:25:52 tg Exp $"); +__RCSID("$MirOS: src/bin/mksh/funcs.c,v 1.257 2014/07/28 21:45:44 tg Exp $"); #if HAVE_KILLPG /* @@ -3643,12 +3643,14 @@ break; while (n) { w = write(STDOUT_FILENO, cp, n); + eno = errno; + /* give the user a chance to ^C out */ + intrcheck(); if (w == -1) { - if (errno == EINTR) + if (eno == EINTR) /* interrupted, try again */ continue; /* an error occured during writing */ - eno = errno; bi_errorf("%s: %s", "<stdout>", cstrerror(eno)); rv = 1; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mksh/mksh.1 new/mksh/mksh.1 --- old/mksh/mksh.1 2014-06-24 22:48:09.000000000 +0200 +++ new/mksh/mksh.1 2014-07-29 19:26:49.000000000 +0200 @@ -1,4 +1,4 @@ -.\" $MirOS: src/bin/mksh/mksh.1,v 1.336 2014/06/24 20:47:44 tg Exp $ +.\" $MirOS: src/bin/mksh/mksh.1,v 1.340 2014/07/29 17:26:24 tg Exp $ .\" $OpenBSD: ksh.1,v 1.152 2014/02/12 16:28:13 schwarze Exp $ .\"- .\" Copyright © 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, @@ -74,7 +74,7 @@ .\" with -mandoc, it might implement .Mx itself, but we want to .\" use our own definition. And .Dd must come *first*, always. .\" -.Dd $Mdocdate: June 24 2014 $ +.Dd $Mdocdate: July 29 2014 $ .\" .\" Check which macro package we use, and do other -mdoc setup. .\" @@ -208,7 +208,7 @@ .Ar string . .It Fl i Interactive shell. -A shell is +A shell that reads commands from standard input is .Dq interactive if this option is used or if both standard input and standard error are attached @@ -1232,10 +1232,8 @@ whitespace octets, delimit a field. As a special case, leading and trailing .Ev IFS -whitespace and trailing -.Ev IFS -non-whitespace are stripped (i.e. no leading or trailing empty field -is created by it); leading +whitespace is stripped (i.e. no leading or trailing empty field +is created by it); leading or trailing .Pf non- Ev IFS whitespace does create an empty field. .Pp @@ -2697,7 +2695,7 @@ Less than; the result is 1 if the left argument is less than the right, 0 if not. .It \*(Lt= \*(Gt \*(Gt= -Less than or equal, greater than or equal, greater than. +Less than or equal, greater than, greater than or equal. See .Ic \*(Lt . .It \*(Lt\*(Lt\*(Lt \*(Gt\*(Gt\*(Gt @@ -2711,8 +2709,15 @@ .It + \- * / Addition, subtraction, multiplication, and division. .It % -Remainder; the result is the remainder of the division of the left argument by -the right. +Remainder; the result is the symmetric remainder of the division of the left +argument by the right. +To get the mathematical modulus of +.Dq a Ic mod No b , +use the formula +.Do +.Pq a % b + b +.No % b +.Dc . .It Xo .Sm off .Aq Ar arg1 ? @@ -6436,8 +6441,8 @@ .Pp .Nm mksh provides a consistent set of 32-bit integer arithmetics, both signed -and unsigned, with defined wraparound and sign of the result of a modulo -operation, even (defying POSIX) on 64-bit systems. +and unsigned, with defined wraparound and sign of the result of a +remainder operation, even (defying POSIX) on 64-bit systems. If you require 64-bit integer arithmetics, use .Nm lksh Pq legacy mksh instead, but be aware that, in POSIX, it's legal for the OS to make diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mksh/sh.h new/mksh/sh.h --- old/mksh/sh.h 2014-06-29 13:28:53.000000000 +0200 +++ new/mksh/sh.h 2014-09-03 21:23:15.000000000 +0200 @@ -169,9 +169,9 @@ #endif #ifdef EXTERN -__RCSID("$MirOS: src/bin/mksh/sh.h,v 1.691 2014/06/29 11:28:28 tg Exp $"); +__RCSID("$MirOS: src/bin/mksh/sh.h,v 1.694 2014/09/03 19:22:50 tg Exp $"); #endif -#define MKSH_VERSION "R50 2014/06/29" +#define MKSH_VERSION "R50 2014/09/03" /* arithmetic types: C implementation */ #if !HAVE_CAN_INTTYPES @@ -533,7 +533,7 @@ #define mkssert(e) do { } while (/* CONSTCOND */ 0) #endif -#if (!defined(MKSH_BUILDMAKEFILE4BSD) && !defined(MKSH_BUILDSH)) || (MKSH_BUILD_R != 501) +#if (!defined(MKSH_BUILDMAKEFILE4BSD) && !defined(MKSH_BUILDSH)) || (MKSH_BUILD_R != 502) #error Must run Build.sh to compile this. extern void thiswillneverbedefinedIhope(void); int diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mksh/var.c new/mksh/var.c --- old/mksh/var.c 2014-06-26 22:36:27.000000000 +0200 +++ new/mksh/var.c 2014-09-03 21:23:16.000000000 +0200 @@ -28,7 +28,7 @@ #include <sys/sysctl.h> #endif -__RCSID("$MirOS: src/bin/mksh/var.c,v 1.180 2014/06/26 20:36:02 tg Exp $"); +__RCSID("$MirOS: src/bin/mksh/var.c,v 1.181 2014/09/03 19:22:51 tg Exp $"); /*- * Variables @@ -789,8 +789,22 @@ } /* check target value for being a valid variable name */ ccp = skip_varname(qval, false); - if (ccp == qval) + if (ccp == qval) { + if (ksh_isdigit(qval[0])) { + int c; + + if (getn(qval, &c)) + goto nameref_rhs_checked; + } else if (qval[1] == '\0') switch (qval[0]) { + case '$': + case '!': + case '?': + case '#': + case '-': + goto nameref_rhs_checked; + } errorf("%s: %s", var, "empty nameref target"); + } len = (*ccp == '[') ? array_ref_len(ccp) : 0; if (ccp[len]) { /* @@ -801,6 +815,7 @@ errorf("%s: %s", qval, "nameref target not a valid parameter name"); } + nameref_rhs_checked: /* prevent nameref loops */ while (qval) { if (!strcmp(qval, tvar)) -- To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org For additional commands, e-mail: opensuse-commit+h...@opensuse.org