From owner-freebsd-standards@FreeBSD.ORG Sun Mar 20 18:00:11 2005 Return-Path: Delivered-To: freebsd-standards@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 6DC6B16A4CE for ; Sun, 20 Mar 2005 18:00:11 +0000 (GMT) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id D105043D2F for ; Sun, 20 Mar 2005 18:00:10 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.3/8.13.3) with ESMTP id j2KI0ADs031953 for ; Sun, 20 Mar 2005 18:00:10 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.3/8.13.1/Submit) id j2KI0AwG031946; Sun, 20 Mar 2005 18:00:10 GMT (envelope-from gnats) Resent-Date: Sun, 20 Mar 2005 18:00:10 GMT Resent-Message-Id: <200503201800.j2KI0AwG031946@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-standards@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, David Magda Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id EC65416A4CE for ; Sun, 20 Mar 2005 17:50:32 +0000 (GMT) Received: from tomts10-srv.bellnexxia.net (tomts10.bellnexxia.net [209.226.175.54]) by mx1.FreeBSD.org (Postfix) with ESMTP id 145B643D5A for ; Sun, 20 Mar 2005 17:50:32 +0000 (GMT) (envelope-from dmagda@magda.ca) Received: from number6.magda.ca ([65.95.110.102]) by tomts10-srv.bellnexxia.netESMTP <20050320175030.ZPNL19622.tomts10-srv.bellnexxia.net@number6.magda.ca> for ; Sun, 20 Mar 2005 12:50:30 -0500 Received: from number6.magda.ca (localhost.magda.ca [127.0.0.1]) by number6.magda.ca (8.13.1/8.13.1) with ESMTP id j2KHoUT4045208 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Sun, 20 Mar 2005 12:50:30 -0500 (EST) (envelope-from dmagda@magda.ca) Received: (from dmagda@localhost) by number6.magda.ca (8.13.1/8.13.1/Submit) id j2KHoUJg045207; Sun, 20 Mar 2005 12:50:30 -0500 (EST) (envelope-from dmagda) Message-Id: <200503201750.j2KHoUJg045207@number6.magda.ca> Date: Sun, 20 Mar 2005 12:50:30 -0500 (EST) From: David Magda To: FreeBSD-gnats-submit@FreeBSD.org X-Send-Pr-Version: 3.113 Subject: standards/79055: Add an IFS regression test for shells X-BeenThere: freebsd-standards@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: David Magda List-Id: Standards compliance List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Mar 2005 18:00:11 -0000 >Number: 79055 >Category: standards >Synopsis: Add an IFS regression test for shells >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-standards >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Sun Mar 20 18:00:10 GMT 2005 >Closed-Date: >Last-Modified: >Originator: David Magda >Release: FreeBSD 4.10-STABLE i386 >Organization: We're organized? >Environment: System: FreeBSD number6.magda.ca 4.10-STABLE FreeBSD 4.10-STABLE #5: Wed Dec 1 16:07:51 EST 2004 dave@number6.magda.ca:/usr/obj/usr/src/sys/MYKERNELE i386 >Description: Not so much a bug report but simply a way to test that the IFS code in sh(1) is up to snuff. Glenn Fowler at AT&T Research has a shell script [1] that tests how good a shell's IFS code is. The script can be downloaded from [1] but is also attached to the end of this PR. [1] http://www.research.att.com/~gsf/public/ifs.sh >How-To-Repeat: /bin/sh ifs.sh >Fix: On my 4.10 box sh(1) has the following results: [...] # tests 6856 passed 1097 failed 5759 ordered 1644 I don't have any other systems to test on. Here's the script: # Usage: $SHELL ifs.sh # # This script generates 6856 tests for the set(1) and read(1) # builtins w.r.t. IFS whitespace and non-whitespace characters. # Each failed test produces one line on the standard output that # contains the test along with the expected and actual results. # The last output line contains the test result counts. ordered>0 # are the number of tests where IFS=": " produced different results # than IFS=" :". If a test fails the same way for IFS=": " and # IFS=" :" then the second output line is suppressed. TESTS=6856 ksh_read=0 echo 1 | read ksh_read ksh_arith=0 eval '((ksh_arith+=1))' 2>/dev/null failed=0 ordered=0 passed=0 split() { i=$1 s=$2 r=$3 S='' R='' for ifs in ': ' ' :' do IFS=$ifs set x $i shift IFS=' ' g="[$#]" while : do case $# in 0) break ;; esac g="$g($1)" shift done case $g in "$s") case $ksh_arith in 1) ((passed+=1)) ;; *) passed=`expr $passed + 1` ;; esac case $S in '') S=$g ;; "$g") ;; *) case $ksh_arith in 1) ((ordered+=1)) ;; *) ordered=`expr $ordered + 1` ;; esac ;; esac ;; "$S") case $ksh_arith in 1) ((failed+=1)) ;; *) failed=`expr $failed + 1` ;; esac ;; *) case $ksh_arith in 1) ((failed+=1)) ;; *) failed=`expr $failed + 1` ;; esac case $s in "$S") ;; ?0*) echo "IFS=\"$ifs\"; x=\"$i\"; set x \$x; shift; echo \"[\$#]\" # expected \"$s\" got \"$g\"" ;; ?1*) echo "IFS=\"$ifs\"; x=\"$i\"; set x \$x; shift; echo \"[\$#](\$1)\" # expected \"$s\" got \"$g\"" ;; ?2*) echo "IFS=\"$ifs\"; x=\"$i\"; set x \$x; shift; echo \"[\$#](\$1)(\$2)\" # expected \"$s\" got \"$g\"" ;; ?3*) echo "IFS=\"$ifs\"; x=\"$i\"; set x \$x; shift; echo \"[\$#](\$1)(\$2)(\$3)\" # expected \"$s\" got \"$g\"" ;; *) echo TEST ERROR i="'$i'" s="'$s'" ;; esac case $S in '') S=$g ;; "$g") ;; *) case $ksh_arith in 1) ((ordered+=1)) ;; *) ordered=`expr $ordered + 1` ;; esac ;; esac esac case $ksh_read in 1) echo "$i" | IFS=$ifs read x y; g="($x)($y)" ;; *) g=`export ifs; echo "$i" | ( IFS=$ifs; read x y; echo "($x)($y)" )` ;; esac case $g in "$r") case $ksh_arith in 1) ((passed+=1)) ;; *) passed=`expr $passed + 1` ;; esac case $R in '') R=$g ;; "$g") ;; *) case $ksh_arith in 1) ((ordered+=1)) ;; *) ordered=`expr $ordered + 1` ;; esac ;; esac ;; "$R") case $ksh_arith in 1) ((failed+=1)) ;; *) failed=`expr $failed + 1` ;; esac ;; *) case $ksh_arith in 1) ((failed+=1)) ;; *) failed=`expr $failed + 1` ;; esac case $r in "$R") ;; *) echo "echo \"$i\" | ( IFS=\"$ifs\" read x y; echo \"(\$x)(\$y)\" ) # expected \"$r\" got \"$g\"" ;; esac case $R in '') R=$g ;; "$g") ;; *) case $ksh_arith in 1) ((ordered+=1)) ;; *) ordered=`expr $ordered + 1` ;; esac ;; esac ;; esac done } for str in \ '-' \ 'a' \ '- -' \ '- a' \ 'a -' \ 'a b' \ '- - -' \ '- - a' \ '- a -' \ '- a b' \ 'a - -' \ 'a - b' \ 'a b -' \ 'a b c' \ do IFS=' ' set x $str shift case $# in 0) continue ;; esac f1=$1 case $f1 in '-') f1='' ;; esac shift case $# in 0) for d0 in '' ' ' do for d1 in '' ' ' ':' ' :' ': ' ' : ' do case $f1$d1 in '') split "$d0$f1$d1" "[0]" "()()" ;; ' ') ;; *) split "$d0$f1$d1" "[1]($f1)" "($f1)()" ;; esac done done continue ;; esac f2=$1 case $f2 in '-') f2='' ;; esac shift case $# in 0) for d0 in '' ' ' do for d1 in ' ' ':' ' :' ': ' ' : ' do case ' ' in $f1$d1|$d1$f2) continue ;; esac for d2 in '' ' ' ':' ' :' ': ' ' : ' do case $f2$d2 in '') split "$d0$f1$d1$f2$d2" "[1]($f1)" "($f1)()" ;; ' ') ;; *) split "$d0$f1$d1$f2$d2" "[2]($f1)($f2)" "($f1)($f2)" ;; esac done done done continue ;; esac f3=$1 case $f3 in '-') f3='' ;; esac shift case $# in 0) for d0 in '' ' ' do for d1 in ':' ' :' ': ' ' : ' do case ' ' in $f1$d1|$d1$f2) continue ;; esac for d2 in ' ' ':' ' :' ': ' ' : ' do case $f2$d2 in ' ') continue ;; esac case ' ' in $f2$d2|$d2$f3) continue ;; esac for d3 in '' ' ' ':' ' :' ': ' ' : ' do case $f3$d3 in '') split "$d0$f1$d1$f2$d2$f3$d3" "[2]($f1)($f2)" "($f1)($f2)" ;; ' ') ;; *) x=$f2$d2$f3$d3 x=${x#' '} x=${x%' '} split "$d0$f1$d1$f2$d2$f3$d3" "[3]($f1)($f2)($f3)" "($f1)($x)" ;; esac done done done done continue ;; esac done case $ksh_arith in 1) ((tests=passed+failed)) ;; *) tests=`expr $passed + $failed` ;; esac case $ordered in 0) ordered="" ;; *) ordered=" ordered $ordered" ;; esac case $tests in $TESTS) fatal="" ;; *) fatal=" -- fundamental IFS error -- $TESTS tests expected" esac echo "# tests $tests passed $passed failed $failed$ordered$fatal" >Release-Note: >Audit-Trail: >Unformatted: From owner-freebsd-standards@FreeBSD.ORG Sun Mar 20 18:10:03 2005 Return-Path: Delivered-To: freebsd-standards@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 34A5D16A4CE for ; Sun, 20 Mar 2005 18:10:03 +0000 (GMT) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id D983543D5F for ; Sun, 20 Mar 2005 18:10:02 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.3/8.13.3) with ESMTP id j2KIA2sD036488 for ; Sun, 20 Mar 2005 18:10:02 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.3/8.13.1/Submit) id j2KIA2MD036487; Sun, 20 Mar 2005 18:10:02 GMT (envelope-from gnats) Resent-Date: Sun, 20 Mar 2005 18:10:02 GMT Resent-Message-Id: <200503201810.j2KIA2MD036487@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-standards@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, David Magda Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id E15BF16A4CE; Sun, 20 Mar 2005 18:00:14 +0000 (GMT) Received: from tomts20-srv.bellnexxia.net (tomts20-srv.bellnexxia.net [209.226.175.74]) by mx1.FreeBSD.org (Postfix) with ESMTP id F258243D2F; Sun, 20 Mar 2005 18:00:13 +0000 (GMT) (envelope-from dmagda@magda.ca) Received: from number6.magda.ca ([65.95.110.102]) by tomts20-srv.bellnexxia.netESMTP <20050320180013.PTGE2034.tomts20-srv.bellnexxia.net@number6.magda.ca>; Sun, 20 Mar 2005 13:00:13 -0500 Received: from number6.magda.ca (localhost.magda.ca [127.0.0.1]) by number6.magda.ca (8.13.1/8.13.1) with ESMTP id j2KI0CSa045316 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sun, 20 Mar 2005 13:00:13 -0500 (EST) (envelope-from dmagda@magda.ca) Received: (from dmagda@localhost) by number6.magda.ca (8.13.1/8.13.1/Submit) id j2KI0CLw045315; Sun, 20 Mar 2005 13:00:12 -0500 (EST) (envelope-from dmagda) Message-Id: <200503201800.j2KI0CLw045315@number6.magda.ca> Date: Sun, 20 Mar 2005 13:00:12 -0500 (EST) From: David Magda To: FreeBSD-gnats-submit@FreeBSD.org X-Send-Pr-Version: 3.113 cc: tjr@FreeBSD.org Subject: standards/79056: regex(3) regression tests X-BeenThere: freebsd-standards@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: David Magda List-Id: Standards compliance List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Mar 2005 18:10:03 -0000 >Number: 79056 >Category: standards >Synopsis: regex(3) regression tests >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-standards >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Sun Mar 20 18:10:02 GMT 2005 >Closed-Date: >Last-Modified: >Originator: David Magda >Release: FreeBSD 4.10-STABLE i386 >Organization: We're organized? >Environment: System: FreeBSD number6.magda.ca 4.10-STABLE FreeBSD 4.10-STABLE #5: Wed Dec 1 16:07:51 EST 2004 dave@number6.magda.ca:/usr/obj/usr/src/sys/MYKERNELE i386 >Description: A series of regression tests for regex(3) by Glenn Fowler at AT&T Research: http://www.research.att.com/~gsf/testregex/testregex.html It may be useful to test FreeBSD's reges(3) code for regressions. (This isn't really a "bug report", but just an idea that may be useful to have.) >How-To-Repeat: N/A >Fix: N/A >Release-Note: >Audit-Trail: >Unformatted: From owner-freebsd-standards@FreeBSD.ORG Mon Mar 21 02:48:16 2005 Return-Path: Delivered-To: freebsd-standards@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 9887816A4CE; Mon, 21 Mar 2005 02:48:16 +0000 (GMT) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id 7093F43D1D; Mon, 21 Mar 2005 02:48:16 +0000 (GMT) (envelope-from linimon@FreeBSD.org) Received: from freefall.freebsd.org (linimon@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.3/8.13.3) with ESMTP id j2L2mGCB000778; Mon, 21 Mar 2005 02:48:16 GMT (envelope-from linimon@freefall.freebsd.org) Received: (from linimon@localhost) by freefall.freebsd.org (8.13.3/8.13.1/Submit) id j2L2mGbX000774; Mon, 21 Mar 2005 02:48:16 GMT (envelope-from linimon) Date: Mon, 21 Mar 2005 02:48:16 GMT From: Mark Linimon Message-Id: <200503210248.j2L2mGbX000774@freefall.freebsd.org> To: linimon@FreeBSD.org, freebsd-bugs@FreeBSD.org, freebsd-standards@FreeBSD.org Subject: Re: standards/79067: /bin/sh should be more intelligent about IFS X-BeenThere: freebsd-standards@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Standards compliance List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 21 Mar 2005 02:48:16 -0000 Synopsis: /bin/sh should be more intelligent about IFS Responsible-Changed-From-To: freebsd-bugs->freebsd-standards Responsible-Changed-By: linimon Responsible-Changed-When: Mon Mar 21 02:47:27 GMT 2005 Responsible-Changed-Why: Looks like a standards issue. http://www.freebsd.org/cgi/query-pr.cgi?pr=79067 From owner-freebsd-standards@FreeBSD.ORG Mon Mar 21 11:01:33 2005 Return-Path: Delivered-To: freebsd-standards@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 4941816A4DC for ; Mon, 21 Mar 2005 11:01:33 +0000 (GMT) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id 1CDD843D3F for ; Mon, 21 Mar 2005 11:01:33 +0000 (GMT) (envelope-from owner-bugmaster@freebsd.org) Received: from freefall.freebsd.org (peter@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.3/8.13.3) with ESMTP id j2LB1Xw4013633 for ; Mon, 21 Mar 2005 11:01:33 GMT (envelope-from owner-bugmaster@freebsd.org) Received: (from peter@localhost) by freefall.freebsd.org (8.13.3/8.13.1/Submit) id j2LB1VNY013627 for freebsd-standards@freebsd.org; Mon, 21 Mar 2005 11:01:31 GMT (envelope-from owner-bugmaster@freebsd.org) Date: Mon, 21 Mar 2005 11:01:31 GMT Message-Id: <200503211101.j2LB1VNY013627@freefall.freebsd.org> X-Authentication-Warning: freefall.freebsd.org: peter set sender to owner-bugmaster@freebsd.org using -f From: FreeBSD bugmaster To: freebsd-standards@FreeBSD.org Subject: Current problem reports assigned to you X-BeenThere: freebsd-standards@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Standards compliance List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 21 Mar 2005 11:01:33 -0000 Current FreeBSD problem reports Critical problems Serious problems S Submitted Tracker Resp. Description ------------------------------------------------------------------------------- o [2001/03/05] bin/25542 standards /bin/sh: null char in quoted string p [2002/02/25] standards/35307standards standard include files are not standard c o [2002/12/13] kern/46239 standards posix semaphore implementation errors o [2003/04/21] standards/51209standards [PATCH] add a64l()/l64a/l64a_r functions p [2003/06/05] standards/52972standards /bin/sh arithmetic not POSIX compliant o [2003/06/18] kern/53447 standards poll(2) semantics differ from susV3/POSIX o [2003/07/12] standards/54410standards one-true-awk not POSIX compliant (no exte o [2004/01/01] standards/60772standards _Bool and bool should be unsigned o [2004/11/03] standards/73500standards 'set +o' in /bin/sh does not include unse o [2005/03/03] standards/78357standards getaddrinfo() doesn't appear to support A o [2005/03/09] standards/78650standards ttyname_r() is not standards compliant o [2005/03/16] standards/78907standards does not define pthread typ 12 problems total. Non-critical problems S Submitted Tracker Resp. Description ------------------------------------------------------------------------------- o [2000/09/24] bin/21519 standards sys/dir.h should be deprecated some more o [2001/01/16] bin/24390 standards Replacing old dir-symlinks when using /bi s [2001/01/24] standards/24590standards timezone function not compatible witn Sin s [2001/06/18] kern/28260 standards UIO_MAXIOV needs to be made public p [2001/11/20] standards/32126standards getopt(3) not Unix-98 conformant o [2002/02/27] misc/35381 standards incorrect floating-point display of large s [2002/03/19] standards/36076standards Implementation of POSIX fuser command o [2002/06/14] standards/39256standards [v]snprintf aren't POSIX-conformant for s o [2002/07/09] kern/40378 standards stdlib.h gives needless warnings with -an p [2002/08/12] standards/41576standards POSIX compliance of ln(1) o [2002/10/23] standards/44425standards getcwd() succeeds even if current dir has o [2002/12/09] standards/46119standards Priority problems for SCHED_OTHER using p o [2002/12/23] standards/46504standards Warnings in headers o [2003/06/22] standards/53613standards FreeBSD doesn't define EPROTO o [2003/07/24] standards/54809standards pcvt deficits o [2003/07/25] standards/54833standards more pcvt deficits o [2003/07/25] standards/54839standards pcvt deficits o [2003/07/31] standards/55112standards glob.h, glob_t's gl_pathc should be "size o [2003/09/05] standards/56476standards cd9660 unicode support simple hack o [2003/10/29] standards/58676standards grantpt(3) alters storage used by ptsname p [2003/12/26] standards/60597standards FreeBSD's /usr/include lacks of cpio.h s [2004/02/14] standards/62858standards malloc(0) not C99 compliant p [2004/02/21] standards/63173standards Patch to add getopt_long_only(3) to libc o [2004/03/29] kern/64875 standards [patch] add a system call: fdatasync() o [2004/05/07] standards/66357standards make POSIX conformance problem ('sh -e' & o [2004/05/11] standards/66531standards _gettemp uses a far smaller set of filena o [2004/08/22] standards/70813standards [PATCH] ls not Posix compliant o [2004/08/26] docs/70985 standards [patch] sh(1): incomplete documentation o o [2004/09/22] standards/72006standards floating point formating in non-C locales o [2005/03/20] standards/79055standards Add an IFS regression test for shells o [2005/03/20] standards/79056standards regex(3) regression tests o [2005/03/21] standards/79067standards /bin/sh should be more intelligent about 32 problems total.