]> Dogcows Code - chaz/tar/blobdiff - src/misc.c
Merge recent gnulib changes, and remove some lint.
[chaz/tar] / src / misc.c
index 8112ee8698dc8ba1e327aa96b94240db712b566b..bca569a5a8c11681600eaeb978ee6e8c25b9ecf7 100644 (file)
@@ -1,7 +1,7 @@
 /* Miscellaneous functions, not really specific to GNU tar.
 
    Copyright (C) 1988, 1992, 1994, 1995, 1996, 1997, 1999, 2000, 2001,
-   2003 Free Software Foundation, Inc.
+   2003, 2004 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 the
@@ -329,34 +329,36 @@ remove_any_file (const char *path, enum remove_option option)
 }
 
 /* Check if PATH already exists and make a backup of it right now.
-   Return success (nonzero) only if the backup in either unneeded, or
+   Return success (nonzero) only if the backup is either unneeded, or
    successful.  For now, directories are considered to never need
-   backup.  If ARCHIVE is nonzero, this is the archive and so, we do
-   not have to backup block or character devices, nor remote entities.  */
-int
-maybe_backup_file (const char *path, int archive)
+   backup.  If THIS_IS_THE_ARCHIVE is nonzero, this is the archive and
+   so, we do not have to backup block or character devices, nor remote
+   entities.  */
+bool
+maybe_backup_file (const char *path, int this_is_the_archive)
 {
   struct stat file_stat;
 
   /* Check if we really need to backup the file.  */
 
-  if (archive && _remdev (path))
-    return 1;
+  if (this_is_the_archive && _remdev (path))
+    return true;
 
   if (stat (path, &file_stat))
     {
       if (errno == ENOENT)
-       return 1;
+       return true;
 
       stat_error (path);
-      return 0;
+      return false;
     }
 
   if (S_ISDIR (file_stat.st_mode))
-    return 1;
+    return true;
 
-  if (archive && (S_ISBLK (file_stat.st_mode) || S_ISCHR (file_stat.st_mode)))
-    return 1;
+  if (this_is_the_archive
+      && (S_ISBLK (file_stat.st_mode) || S_ISCHR (file_stat.st_mode)))
+    return true;
 
   assign_string (&before_backup_name, path);
 
@@ -376,7 +378,7 @@ maybe_backup_file (const char *path, int archive)
        fprintf (stdlis, _("Renaming %s to %s\n"),
                 quote_n (0, before_backup_name),
                 quote_n (1, after_backup_name));
-      return 1;
+      return true;
     }
   else
     {
@@ -386,7 +388,7 @@ maybe_backup_file (const char *path, int archive)
              quotearg_colon (before_backup_name),
              quote_n (1, after_backup_name)));
       assign_string (&after_backup_name, 0);
-      return 0;
+      return false;
     }
 }
 
@@ -587,15 +589,18 @@ close_error (char const *name)
 }
 
 void
-close_fatal (char const *name)
+close_warn (char const *name)
 {
-  call_arg_fatal ("close", name);
+  call_arg_warn ("close", name);
 }
 
 void
-close_warn (char const *name)
+close_diag (char const *name)
 {
-  call_arg_warn ("close", name);
+  if (ignore_failed_read_option)
+    close_warn (name);
+  else
+    close_error (name);
 }
 
 void
@@ -648,6 +653,15 @@ open_warn (char const *name)
   call_arg_warn ("open", name);
 }
 
+void
+open_diag (char const *name)
+{
+  if (ignore_failed_read_option)
+    open_warn (name);
+  else
+    open_error (name);
+}
+
 void
 read_error (char const *name)
 {
@@ -660,7 +674,9 @@ read_error_details (char const *name, off_t offset, size_t size)
   char buf[UINTMAX_STRSIZE_BOUND];
   int e = errno;
   ERROR ((0, e,
-         _("%s: Read error at byte %s, reading %lu bytes"),
+         ngettext ("%s: Read error at byte %s, reading %lu byte",
+                   "%s: Read error at byte %s, reading %lu bytes",
+                   size),
          quotearg_colon (name), STRINGIFY_BIGINT (offset, buf),
          (unsigned long) size));
 }
@@ -671,11 +687,22 @@ read_warn_details (char const *name, off_t offset, size_t size)
   char buf[UINTMAX_STRSIZE_BOUND];
   int e = errno;
   WARN ((0, e,
-        _("%s: Warning: Read error at byte %s, reading %lu bytes"),
+        ngettext ("%s: Warning: Read error at byte %s, reading %lu byte",
+                  "%s: Warning: Read error at byte %s, reading %lu bytes",
+                  size),
         quotearg_colon (name), STRINGIFY_BIGINT (offset, buf),
         (unsigned long) size));
 }
 
+void
+read_diag_details (char const *name, off_t offset, size_t size)
+{
+  if (ignore_failed_read_option)
+    read_warn_details (name, offset, size);
+  else
+    read_error_details (name, offset, size);
+}
+
 void
 read_fatal (char const *name)
 {
@@ -688,7 +715,9 @@ read_fatal_details (char const *name, off_t offset, size_t size)
   char buf[UINTMAX_STRSIZE_BOUND];
   int e = errno;
   FATAL_ERROR ((0, e,
-               _("%s: Read error at byte %s, reading %lu bytes"),
+               ngettext ("%s: Read error at byte %s, reading %lu byte",
+                         "%s: Read error at byte %s, reading %lu bytes",
+                         size),
                quotearg_colon (name), STRINGIFY_BIGINT (offset, buf),
                (unsigned long) size));
 }
@@ -705,6 +734,15 @@ readlink_warn (char const *name)
   call_arg_warn ("readlink", name);
 }
 
+void
+readlink_diag (char const *name)
+{
+  if (ignore_failed_read_option)
+    readlink_warn (name);
+  else
+    readlink_error (name);
+}
+
 void
 savedir_error (char const *name)
 {
@@ -717,6 +755,15 @@ savedir_warn (char const *name)
   call_arg_warn ("savedir", name);
 }
 
+void
+savedir_diag (char const *name)
+{
+  if (ignore_failed_read_option)
+    savedir_warn (name);
+  else
+    savedir_error (name);
+}
+
 void
 seek_error (char const *name)
 {
@@ -749,6 +796,15 @@ seek_warn_details (char const *name, off_t offset)
         STRINGIFY_BIGINT (offset, buf)));
 }
 
+void
+seek_diag_details (char const *name, off_t offset)
+{
+  if (ignore_failed_read_option)
+    seek_warn_details (name, offset);
+  else
+    seek_error_details (name, offset);
+}
+
 void
 symlink_error (char const *contents, char const *name)
 {
@@ -769,6 +825,15 @@ stat_warn (char const *name)
   call_arg_warn ("stat", name);
 }
 
+void
+stat_diag (char const *name)
+{
+  if (ignore_failed_read_option)
+    stat_warn (name);
+  else
+    stat_error (name);
+}
+
 void
 truncate_error (char const *name)
 {
@@ -806,13 +871,16 @@ write_error (char const *name)
 }
 
 void
-write_error_details (char const *name, ssize_t status, size_t size)
+write_error_details (char const *name, size_t status, size_t size)
 {
-  if (status < 0)
+  if (status == 0)
     write_error (name);
   else
-    ERROR ((0, 0, _("%s: Wrote only %lu of %lu bytes"),
-           name, (unsigned long) status, (unsigned long) record_size));
+    ERROR ((0, 0,
+           ngettext ("%s: Wrote only %lu of %lu byte",
+                     "%s: Wrote only %lu of %lu bytes",
+                     size),
+           name, (unsigned long int) status, (unsigned long int) size));
 }
 
 void
This page took 0.027788 seconds and 4 git commands to generate.