1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-01-19 11:31:26 +01:00

20698: Fix tail for POSIX conformance

This commit is contained in:
Peter Stephenson 2005-01-13 10:34:17 +00:00
parent 81b9354238
commit ec4aa9f409
2 changed files with 32 additions and 3 deletions

View file

@ -1,3 +1,8 @@
2005-01-13 Peter Stephenson <pws@csr.com>
* 20698: Test/ztst.zsh: improve 20692 by using tail function
to overcome POSIX problems.
2005-01-12 Oliver Kiddle <opk@zsh.org>
* 20701: Src/system.h: fix compilation on Mac OS X

View file

@ -28,9 +28,6 @@ emulate -R zsh
[[ -n $LC_COLLATE ]] && LC_COLLATE=C
[[ -n $LANG ]] && LANG=C
# POSIXLY_CORRECT can cause spurious error messages with "tail -<num>".
unset POSIXLY_CORRECT
# Set the module load path to correspond to this build of zsh.
# This Modules directory should have been created by "make check".
[[ -d Modules/zsh ]] && module_path=( $PWD/Modules )
@ -60,6 +57,33 @@ ZTST_testname=$1
integer ZTST_testfailed
# This is POSIX nonsense. Because of the vague feeling someone, somewhere
# may one day need to examine the arguments of "tail" using a standard
# option parser, every Unix user in the world is expected to switch
# to using "tail -n NUM" instead of "tail -NUM". Older versions of
# tail don't support this.
tail() {
emulate -L zsh
if [[ -z $TAIL_SUPPORTS_MINUS_N ]]; then
local test
test=$(echo "foo\nbar" | command tail -n 1 2>/dev/null)
if [[ $test = bar ]]; then
TAIL_SUPPORTS_MINUS_N=1
else
TAIL_SUPPORTS_MINUS_N=0
fi
fi
integer argi=${argv[(i)-<->]}
if [[ $argi -le $# && $TAIL_SUPPORTS_MINUS_N = 1 ]]; then
argv[$argi]=(-n ${argv[$argi][2,-1]})
fi
command tail "$argv[@]"
}
# The source directory is not necessarily the current directory,
# but if $0 doesn't contain a `/' assume it is.
if [[ $0 = */* ]]; then