]> Dogcows Code - chaz/tar/commitdiff
Minor fixes
authorSergey Poznyakoff <gray@gnu.org.ua>
Sat, 8 Aug 2009 19:33:16 +0000 (22:33 +0300)
committerSergey Poznyakoff <gray@gnu.org.ua>
Sat, 8 Aug 2009 19:33:16 +0000 (22:33 +0300)
NEWS
src/misc.c
tests/filerem01.at

diff --git a/NEWS b/NEWS
index 93e2ac64c18897278c22a8571679c00fd2dc5b59..5e796b2ba4625c54a41f295a2bf6e2bd2c2702ea 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -39,7 +39,7 @@ was explicitly listed in the command line, or was gathered
 during file system scan.
 
 If the file was explicitly listed in the command line, tar
 during file system scan.
 
 If the file was explicitly listed in the command line, tar
-issues error messages and exits with the code 2, meaning
+issues error message and exits with the code 2, meaning
 fatal error.
 
 Otherwise, if the file was gathered during the file system
 fatal error.
 
 Otherwise, if the file was gathered during the file system
index b11b20eb67142a084f4783af28c3d1601e22768b..116eb9673a615e7144b1e110ab5ff580e648435d 100644 (file)
@@ -762,9 +762,13 @@ dir_removed_diag (const char *name, bool top_level,
                   void (*diagfn) (char const *name))
 {
   if (!top_level && errno == ENOENT)
                   void (*diagfn) (char const *name))
 {
   if (!top_level && errno == ENOENT)
-    WARNOPT (WARN_FILE_REMOVED,
-            (0, 0, _("%s: Directory removed before we read it"),
-             quotearg_colon (name)));
+    {
+      WARNOPT (WARN_FILE_REMOVED,
+              (0, 0, _("%s: Directory removed before we read it"),
+               quotearg_colon (name)));
+      if (exit_status == TAREXIT_SUCCESS)
+       exit_status = TAREXIT_DIFFERS;
+    }
   else
     diagfn (name);
 }
   else
     diagfn (name);
 }
index a0832a58adaaf412e929c807adf700b034f611d2..70f47bf0e816d83055af39749014c92d2b7707e8 100644 (file)
 # GNU General Public License for more details.
 
 # You should have received a copy of the GNU General Public License
 # GNU General Public License for more details.
 
 # You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Description: when a file in a deep directory disappeared during creation
+# of incremental dump, tar v. <1.23 would exit with TAREXIT_FAILURE (2).
+# However, such events are quite common and don't necessarily constitute
+# an error.  Exiting with code 2 in such cases makes it impossible to
+# distinguish serious errors from benign ones.
+#
+# Starting from tar 1.22.90, tar exits with TAREXIT_DIFFERS (1)
+# instead.
+#
+# Reported by: Solar Designer <solar@openwall.com>
+# 
+# References: <20090228235820.GA13362@openwall.com>
+#             http://lists.gnu.org/archive/html/bug-tar/2009-03/msg00000.html
+#
 
 AT_SETUP([file removed as we read it (ca. 22 seconds)])
 AT_KEYWORDS([create incremental filechange filerem filerem01])
 
 AT_SETUP([file removed as we read it (ca. 22 seconds)])
 AT_KEYWORDS([create incremental filechange filerem filerem01])
@@ -32,7 +45,7 @@ genfile --run --checkpoint=3 --unlink dir/file1 -- \
        --checkpoint-action='echo' -c -f archive.tar \
        --listed-incremental db -v dir >/dev/null
 ],
        --checkpoint-action='echo' -c -f archive.tar \
        --listed-incremental db -v dir >/dev/null
 ],
-[0],
+[1],
 [ignore],
 [tar: dir: Directory is new
 tar: dir/sub: Directory is new
 [ignore],
 [tar: dir: Directory is new
 tar: dir/sub: Directory is new
This page took 0.028892 seconds and 4 git commands to generate.