summaryrefslogtreecommitdiff
path: root/tests/misc/head-c.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tests/misc/head-c.sh')
-rwxr-xr-xtests/misc/head-c.sh21
1 files changed, 18 insertions, 3 deletions
diff --git a/tests/misc/head-c.sh b/tests/misc/head-c.sh
index 6807c4d5..d6433d0d 100755
--- a/tests/misc/head-c.sh
+++ b/tests/misc/head-c.sh
@@ -1,7 +1,7 @@
#!/bin/sh
-# exercise the fix of 2001-08-18, based on test case from Ian Bruce
+# exercise head -c
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -18,13 +18,28 @@
. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
print_ver_ head
+require_ulimit_v_
+getlimits_
+# exercise the fix of 2001-08-18, based on test case from Ian Bruce
echo abc > in || framework_failure_
-
(head -c1; head -c1) < in > out || fail=1
case "$(cat out)" in
ab) ;;
*) fail=1 ;;
esac
+# Test for a bug in coreutils 5.0.1 through 8.22.
+printf 'abc\ndef\n' > in1 || framework_failure_
+(dd bs=1 skip=1 count=0 status=none && head -c-4) < in1 > out1 || fail=1
+case "$(cat out1)" in
+ bc) ;;
+ *) fail=1 ;;
+esac
+
+# Only allocate memory as needed.
+# Coreutils <= 8.21 would allocate memory up front
+# based on the value passed to -c
+(ulimit -v 20000; head --bytes=-$SSIZE_MAX < /dev/null) || fail=1
+
Exit $fail