6d2f2e3
diff -urNp tar-1.22-orig/src/buffer.c tar-1.22/src/buffer.c
6d2f2e3
--- tar-1.22-orig/src/buffer.c	2009-03-05 08:04:13.000000000 +0100
6d2f2e3
+++ tar-1.22/src/buffer.c	2009-06-25 21:42:34.000000000 +0200
6d2f2e3
@@ -679,6 +679,19 @@ archive_read_error (void)
6d2f2e3
   return;
6d2f2e3
 }
6d2f2e3
 
6d2f2e3
+static bool
6d2f2e3
+archive_is_dev ()
6d2f2e3
+{
6d2f2e3
+ struct stat st;
6d2f2e3
+
6d2f2e3
+ if (fstat (archive, &st))
6d2f2e3
+ {
6d2f2e3
+ stat_diag (*archive_name_cursor);
6d2f2e3
+ return false;
6d2f2e3
+ }
6d2f2e3
+ return S_ISBLK (st.st_mode) || S_ISCHR (st.st_mode);
6d2f2e3
+}
6d2f2e3
+
6d2f2e3
 static void
6d2f2e3
 short_read (size_t status)
6d2f2e3
 {
6d2f2e3
@@ -690,7 +703,8 @@ short_read (size_t status)
6d2f2e3
 
6d2f2e3
   if (left && left % BLOCKSIZE == 0
6d2f2e3
       && verbose_option
6d2f2e3
-      && record_start_block == 0 && status != 0)
6d2f2e3
+      && record_start_block == 0 && status != 0
6d2f2e3
+      && archive_is_dev ())
6d2f2e3
     {
6d2f2e3
       unsigned long rsize = status / BLOCKSIZE;
6d2f2e3
       WARN ((0, 0,
6d2f2e3
diff -urNp tar-1.22-orig/tests/sparsemvp.at tar-1.22/tests/sparsemvp.at
6d2f2e3
--- tar-1.22-orig/tests/sparsemvp.at	2008-10-19 23:56:00.000000000 +0200
6d2f2e3
+++ tar-1.22/tests/sparsemvp.at	2009-06-25 21:55:43.000000000 +0200
6d2f2e3
@@ -56,7 +56,5 @@ Test archive
6d2f2e3
 sparsefile
6d2f2e3
 Compare archive
6d2f2e3
 ],
6d2f2e3
-[tar: Record size = 12 blocks
6d2f2e3
-tar: Record size = 12 blocks
6d2f2e3
-],[],[],[pax])])
6d2f2e3
+[],[],[],[pax])])
6d2f2e3
 
6d2f2e3
diff -urNp tar-1.22-orig/tests/volsize.at tar-1.22/tests/volsize.at
6d2f2e3
--- tar-1.22-orig/tests/volsize.at	2008-10-19 23:54:53.000000000 +0200
6d2f2e3
+++ tar-1.22/tests/volsize.at	2009-06-25 21:56:08.000000000 +0200
6d2f2e3
@@ -52,9 +52,7 @@ Extracted directory
6d2f2e3
 abc
6d2f2e3
 abc/CCC
6d2f2e3
 ],
6d2f2e3
-[tar: Record size = 5 blocks
6d2f2e3
-tar: Record size = 5 blocks
6d2f2e3
-])
6d2f2e3
+[])
6d2f2e3
 
6d2f2e3
 AT_CLEANUP
6d2f2e3