]> granicus.if.org Git - shadow/commitdiff
* src/vipw.c: Report failures to remove files to stderr.
authornekral-guest <nekral-guest@5a98b0ae-9ef6-0310-add3-de5d479b70d7>
Sat, 9 Aug 2008 23:31:36 +0000 (23:31 +0000)
committernekral-guest <nekral-guest@5a98b0ae-9ef6-0310-add3-de5d479b70d7>
Sat, 9 Aug 2008 23:31:36 +0000 (23:31 +0000)
* src/vipw.c: Report failures to unlock files to stderr.

ChangeLog
src/vipw.c

index 0d4858c3df6b30ca3ad986211b2abc6d78696cae..ab90639a558a4464e1afb31c0894ef6165dea2ba 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2008-08-07  Nicolas François  <nicolas.francois@centraliens.net>
+
+       * src/vipw.c: Report failures to remove files to stderr.
+       * src/vipw.c: Report failures to unlock files to stderr.
+
 2008-08-07  Nicolas François  <nicolas.francois@centraliens.net>
 
        * NEWS, src/groupmems.c: Added syslog support.
index 9b402c422d8233b7f9a6dfa7b993c8890f5be1df..f57c106ffc731a91426196e4e06255a04664cd7b 100644 (file)
@@ -62,7 +62,7 @@ static bool quiet = false;
 /* local function prototypes */
 static void usage (void);
 static int create_backup_file (FILE *, const char *, struct stat *);
-static void vipwexit (const char *, int, int);
+static void vipwexit (const char *msg, int syserr, int ret);
 static void vipwedit (const char *, int (*)(void), int (*)(void));
 
 /*
@@ -136,10 +136,16 @@ static void vipwexit (const char *msg, int syserr, int ret)
        int err = errno;
 
        if (createedit) {
-               unlink (fileeditname);
+               if (unlink (fileeditname) != 0) {
+                       fprintf (stderr, _("%s: failed to remove %s\n"), progname, fileeditname);
+                       /* continue */
+               }
        }
        if (filelocked) {
-               (*unlock) ();
+               if ((*unlock) () == 0) {
+                       fprintf (stderr, _("%s: failed to unlock %s\n"), progname, fileeditname);
+                       /* continue */
+               }
        }
        if (NULL != msg) {
                fprintf (stderr, "%s: %s", progname, msg);
@@ -147,8 +153,9 @@ static void vipwexit (const char *msg, int syserr, int ret)
        if (0 != syserr) {
                fprintf (stderr, ": %s", strerror (err));
        }
+       (void) fputs ("\n", stderr);
        if (!quiet) {
-               fprintf (stdout, _("\n%s: %s is unchanged\n"), progname,
+               fprintf (stdout, _("%s: %s is unchanged\n"), progname,
                         filename);
        }
        exit (ret);
@@ -262,13 +269,15 @@ vipwedit (const char *file, int (*file_lock) (void), int (*file_unlock) (void))
        link (file, filebackup);
        if (rename (fileedit, file) == -1) {
                fprintf (stderr,
-                        _
-                        ("%s: can't restore %s: %s (your changes are in %s)\n"),
-                        progname, file, strerror (errno), fileedit);
+                        _("%s: can't restore %s: %s (your changes are in %s)\n"),
+                        progname, file, strerror (errno), fileedit);
                vipwexit (0, 0, 1);
        }
 
-       (*file_unlock) ();
+       if ((*file_unlock) () == 0) {
+               fprintf (stderr, _("%s: failed to unlock %s\n"), progname, fileeditname);
+               /* continue */
+       }
 }
 
 int main (int argc, char **argv)