[Pkg-shadow-commits] r2262 - in upstream/trunk: . man src
nekral-guest at alioth.debian.org
nekral-guest at alioth.debian.org
Sat Aug 9 23:33:28 UTC 2008
Author: nekral-guest
Date: 2008-08-09 23:33:26 +0000 (Sat, 09 Aug 2008)
New Revision: 2262
Modified:
upstream/trunk/ChangeLog
upstream/trunk/man/pwck.8.xml
upstream/trunk/src/pwck.c
Log:
* src/pwck.c: Added fail_exit().
* src/pwck.c: Report failure to unlock files to stderr and
syslog.
* src/pwck.c: Report failure to sort to stderr, and exit with
E_CANTSORT.
* man/pwck.8.xml: Document return code 6 (E_CANTSORT).
Modified: upstream/trunk/ChangeLog
===================================================================
--- upstream/trunk/ChangeLog 2008-08-09 23:31:36 UTC (rev 2261)
+++ upstream/trunk/ChangeLog 2008-08-09 23:33:26 UTC (rev 2262)
@@ -1,5 +1,14 @@
2008-08-07 Nicolas François <nicolas.francois at centraliens.net>
+ * src/pwck.c: Added fail_exit().
+ * src/pwck.c: Report failure to unlock files to stderr and
+ syslog.
+ * src/pwck.c: Report failure to sort to stderr, and exit with
+ E_CANTSORT.
+ * man/pwck.8.xml: Document return code 6 (E_CANTSORT).
+
+2008-08-07 Nicolas François <nicolas.francois at centraliens.net>
+
* src/vipw.c: Report failures to remove files to stderr.
* src/vipw.c: Report failures to unlock files to stderr.
Modified: upstream/trunk/man/pwck.8.xml
===================================================================
--- upstream/trunk/man/pwck.8.xml 2008-08-09 23:31:36 UTC (rev 2261)
+++ upstream/trunk/man/pwck.8.xml 2008-08-09 23:33:26 UTC (rev 2262)
@@ -245,6 +245,12 @@
<para>can't update password files</para>
</listitem>
</varlistentry>
+ <varlistentry>
+ <term><replaceable>6</replaceable></term>
+ <listitem>
+ <para>can't sort password files</para>
+ </listitem>
+ </varlistentry>
</variablelist>
</para>
</refsect1>
Modified: upstream/trunk/src/pwck.c
===================================================================
--- upstream/trunk/src/pwck.c 2008-08-09 23:31:36 UTC (rev 2261)
+++ upstream/trunk/src/pwck.c 2008-08-09 23:33:26 UTC (rev 2262)
@@ -58,6 +58,7 @@
#define E_CANTOPEN 3
#define E_CANTLOCK 4
#define E_CANTUPDATE 5
+#define E_CANTSORT 6
/*
* Global variables
@@ -71,12 +72,16 @@
static bool is_shadow = false;
+static bool pw_locked = false;
+static bool spw_locked = false;
+
/* Options */
static bool read_only = false;
static bool sort_mode = false;
static bool quiet = false; /* don't report warnings, only errors */
/* local function prototypes */
+static void fail_exit (int code);
static void usage (void);
static void process_flags (int argc, char **argv);
static void open_files (void);
@@ -85,6 +90,31 @@
static void check_spw_file (int *errors, bool *changed);
/*
+ * fail_exit - do some cleanup and exit with the given error code
+ */
+static void fail_exit (int code)
+{
+ if (spw_locked) {
+ if (spw_unlock () == 0) {
+ fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, spw_dbname ());
+ SYSLOG ((LOG_ERR, "failed to unlock %s", spw_dbname ()));
+ /* continue */
+ }
+ }
+
+ if (pw_locked) {
+ if (pw_unlock () == 0) {
+ fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, pw_dbname ());
+ SYSLOG ((LOG_ERR, "failed to unlock %s", pw_dbname ()));
+ /* continue */
+ }
+ }
+
+ closelog ();
+
+ exit (code);
+}
+/*
* usage - print syntax message and exit
*/
static void usage (void)
@@ -172,17 +202,19 @@
if (use_system_pw_file) {
SYSLOG ((LOG_WARN, "cannot lock %s", pwd_file));
}
- closelog ();
- exit (E_CANTLOCK);
+ fail_exit (E_CANTLOCK);
}
- if (is_shadow && (spw_lock () == 0)) {
- fprintf (stderr, _("%s: cannot lock %s\n"),
- Prog, spw_file);
- if (use_system_spw_file) {
- SYSLOG ((LOG_WARN, "cannot lock %s", spw_file));
+ pw_locked = true;
+ if (is_shadow) {
+ if (spw_lock () == 0) {
+ fprintf (stderr, _("%s: cannot lock %s\n"),
+ Prog, spw_file);
+ if (use_system_spw_file) {
+ SYSLOG ((LOG_WARN, "cannot lock %s", spw_file));
+ }
+ fail_exit (E_CANTLOCK);
}
- closelog ();
- exit (E_CANTLOCK);
+ spw_locked = true;
}
}
@@ -196,8 +228,7 @@
if (use_system_pw_file) {
SYSLOG ((LOG_WARN, "cannot open %s", pwd_file));
}
- closelog ();
- exit (E_CANTOPEN);
+ fail_exit (E_CANTOPEN);
}
if (is_shadow && (spw_open (read_only ? O_RDONLY : O_RDWR) == 0)) {
fprintf (stderr, _("%s: cannot open %s\n"),
@@ -205,8 +236,7 @@
if (use_system_spw_file) {
SYSLOG ((LOG_WARN, "cannot open %s", spw_file));
}
- closelog ();
- exit (E_CANTOPEN);
+ fail_exit (E_CANTOPEN);
}
}
@@ -228,15 +258,13 @@
fprintf (stderr, _("%s: failure while writing changes to %s\n"),
Prog, pwd_file);
SYSLOG ((LOG_WARN, "failure while writing changes to %s", pwd_file));
- closelog ();
- exit (E_CANTUPDATE);
+ fail_exit (E_CANTUPDATE);
}
if (is_shadow && (spw_close () == 0)) {
fprintf (stderr, _("%s: failure while writing changes to %s\n"),
Prog, spw_file);
SYSLOG ((LOG_WARN, "failure while writing changes to %s", spw_file));
- closelog ();
- exit (E_CANTUPDATE);
+ fail_exit (E_CANTUPDATE);
}
}
@@ -244,9 +272,19 @@
* Don't be anti-social - unlock the files when you're done.
*/
if (is_shadow) {
- spw_unlock ();
+ if (spw_unlock () == 0) {
+ fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, spw_dbname ());
+ SYSLOG ((LOG_ERR, "failed to unlock %s", spw_dbname ()));
+ /* continue */
+ }
}
- (void) pw_unlock ();
+ spw_locked = false;
+ if (pw_unlock () == 0) {
+ fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, pw_dbname ());
+ SYSLOG ((LOG_ERR, "failed to unlock %s", pw_dbname ()));
+ /* continue */
+ }
+ pw_locked = false;
}
/*
@@ -620,9 +658,19 @@
open_files ();
if (sort_mode) {
- pw_sort ();
+ if (pw_sort () != 0) {
+ fprintf (stderr,
+ _("%s: cannot sort entries in %s\n"),
+ Prog, pw_dbname ());
+ fail_exit (E_CANTSORT);
+ }
if (is_shadow) {
- spw_sort ();
+ if (spw_sort () != 0) {
+ fprintf (stderr,
+ _("%s: cannot sort entries in %s\n"),
+ Prog, spw_dbname ());
+ fail_exit (E_CANTSORT);
+ }
}
changed = true;
} else {
More information about the Pkg-shadow-commits
mailing list