]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
tests: fix dd skip=greater_max_file_size test on Solaris 10
authorPádraig Brady <P@draigBrady.com>
Fri, 6 Feb 2009 02:01:43 +0000 (02:01 +0000)
committerJim Meyering <meyering@redhat.com>
Fri, 6 Feb 2009 06:46:08 +0000 (07:46 +0100)
* tests/dd/skip-seek-past-file: I had previously commented that
on some systems lseek(> max file size) may succeed, but left
the possibility of failure in that case, so that I could determine
specific systems to put in the comments for both failure modes.

tests/dd/skip-seek-past-file

index 9c055bd0914d170669a58cf17c2cd4c01e29fffb..fd8bdc6a1894e7f23a7d1ee42de77e6f46fd1406 100755 (executable)
@@ -75,17 +75,22 @@ echo "dd: \`standard input': cannot skip: Value too large for defined data type
 compare err_ok err || fail=1
 
 # skipping > max file size should fail immediately
-# Note I'm guessing there is a small chance that an lseek() could actually work
-# and only a write() would fail (with EFBIG) when offset > max file size.
-# So this test will both test for that, and ensure that dd
-# exits immediately with an appropriate error when lseek() does error.
 if ! truncate --size=$OFF_T_MAX in 2>/dev/null; then
   # truncate is to ensure file system doesn't actually support OFF_T_MAX files
-  dd bs=1 skip=$OFF_T_MAX count=0 status=noxfer < file 2> err && fail=1
-  echo "dd: \`standard input': cannot skip: Invalid argument
-0+0 records in
-0+0 records out" > err_ok || framework_failure
-  compare err_ok err || fail=1
+  dd bs=1 skip=$OFF_T_MAX count=0 status=noxfer < file 2> err \
+    && lseek_ok=yes \
+    || lseek_ok=no
+  printf '%s\n' "dd: \`standard input': cannot skip: Invalid argument" \
+    '0+0 records in' '0+0 records out' > err_ok || framework_failure
+
+  if test $lseek_ok = yes; then
+    # On Solaris 10 at least, lseek(>max file size) succeeds,
+    # so just check for the skip warning.
+    compare skip_err err || fail=1
+  else
+    # On Linux at least lseek(>max file size) fails.
+    compare err_ok err || fail=1
+  fi
 fi
 
 Exit $fail