* src/vipw.c: Report failures to remove files to stderr.

* src/vipw.c: Report failures to unlock files to stderr.
This commit is contained in:
nekral-guest 2008-08-09 23:31:36 +00:00
parent e3e99974f8
commit 10e78fbd8e
2 changed files with 22 additions and 8 deletions

View File

@ -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.

View 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"),
_("%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)