[Pkg-shadow-commits] r3541 - in upstream/trunk: . man src

Nicolas FRANÇOIS nekral-guest at alioth.debian.org
Sun Nov 6 18:38:04 UTC 2011


Author: nekral-guest
Date: 2011-11-06 18:38:04 +0000 (Sun, 06 Nov 2011)
New Revision: 3541

Modified:
   upstream/trunk/ChangeLog
   upstream/trunk/NEWS
   upstream/trunk/man/pwconv.8.xml
   upstream/trunk/src/grpconv.c
   upstream/trunk/src/grpunconv.c
   upstream/trunk/src/pwconv.c
   upstream/trunk/src/pwunconv.c
Log:
	* NEWS, src/pwconv.c, src/pwunconv.c, src/grpconv.c,
	src/grpunconv.c, man/pwconv.8.xml: Add --root option.
	* src/pwconv.c, src/pwunconv.c, src/grpconv.c, src/grpunconv.c:
	Add --help option.
	* src/pwconv.c, src/pwunconv.c, src/grpconv.c, src/grpunconv.c:
	Add process_flags() and usage().

Modified: upstream/trunk/ChangeLog
===================================================================
--- upstream/trunk/ChangeLog	2011-11-06 18:37:57 UTC (rev 3540)
+++ upstream/trunk/ChangeLog	2011-11-06 18:38:04 UTC (rev 3541)
@@ -23,6 +23,12 @@
 	* NEWS, src/groupdel.c, man/groupdel.8.xml: Add --root option. Open
 	audit and syslog after the potential chroot.
 	* src/groupdel.c: Check atexit failures.
+	* NEWS, src/pwconv.c, src/pwunconv.c, src/grpconv.c,
+	src/grpunconv.c, man/pwconv.8.xml: Add --root option.
+	* src/pwconv.c, src/pwunconv.c, src/grpconv.c, src/grpunconv.c:
+	Add --help option.
+	* src/pwconv.c, src/pwunconv.c, src/grpconv.c, src/grpunconv.c:
+	Add process_flags() and usage().
 
 2011-10-22  Nicolas François  <nicolas.francois at centraliens.net>
 

Modified: upstream/trunk/NEWS
===================================================================
--- upstream/trunk/NEWS	2011-11-06 18:37:57 UTC (rev 3540)
+++ upstream/trunk/NEWS	2011-11-06 18:38:04 UTC (rev 3541)
@@ -43,6 +43,10 @@
   * Add --root option.
 - grpck
   * NIS entries were dropped by -s (sort).
+- grpconv
+  * Add --root option.
+- grpunconv
+  * Add --root option.
 -login
   * Fixed limits support (non PAM enabled versions only)
   * Added support for infinite limits and group based limits (non PAM
@@ -73,6 +77,10 @@
   * Fix parsing of gshadow entries.
 - pwpck
   * NIS entries were dropped by -s (sort).
+- pwconv
+  * Add --root option.
+- pwunconv
+  * Add --root option.
 - useradd
   * If the skeleton directory contained hardlinked files, copies of the
     hardlink were removed from the skeleton directory.

Modified: upstream/trunk/man/pwconv.8.xml
===================================================================
--- upstream/trunk/man/pwconv.8.xml	2011-11-06 18:37:57 UTC (rev 3540)
+++ upstream/trunk/man/pwconv.8.xml	2011-11-06 18:38:04 UTC (rev 3541)
@@ -2,7 +2,7 @@
 <!--
    Copyright (c) 1996 - 1998, Marek Michałkiewicz
    Copyright (c) 2000 - 2006, Tomasz Kłoczko
-   Copyright (c) 2007 - 2008, Nicolas François
+   Copyright (c) 2007 - 2011, Nicolas François
    All rights reserved.
   
    Redistribution and use in source and binary forms, with or without
@@ -58,15 +58,27 @@
   <refsynopsisdiv id='synopsis'>
     <cmdsynopsis>
       <command>pwconv</command>
+      <arg choice='opt'>
+        <replaceable>options</replaceable>
+      </arg>
     </cmdsynopsis>
     <cmdsynopsis>
       <command>pwunconv</command>
+      <arg choice='opt'>
+        <replaceable>options</replaceable>
+      </arg>
     </cmdsynopsis>
     <cmdsynopsis>
       <command>grpconv</command>
+      <arg choice='opt'>
+        <replaceable>options</replaceable>
+      </arg>
     </cmdsynopsis>
     <cmdsynopsis>
       <command>grpunconv</command>
+      <arg choice='opt'>
+        <replaceable>options</replaceable>
+      </arg>
     </cmdsynopsis>
   </refsynopsisdiv>
 
@@ -152,6 +164,36 @@
     </para>
   </refsect1>
 
+  <refsect1 id='options'>
+    <title>OPTIONS</title>
+    <para>
+      The options which apply to the <command>pwconv</command>,
+      <command>pwunconv</command>, <command>grpconv</command>, and
+      <command>grpunconv</command> commands are:
+    </para>
+    <variablelist remap='IP'>
+      <varlistentry>
+	<term><option>-h</option>, <option>--help</option></term>
+	<listitem>
+	  <para>Display help message and exit.</para>
+	</listitem>
+      </varlistentry>
+      <varlistentry>
+	<term>
+	  <option>-R</option>, <option>--root</option>
+	  <replaceable>CHROOT_DIR</replaceable>
+	</term>
+	<listitem>
+	  <para>
+	    Apply changes in the <replaceable>CHROOT_DIR</replaceable>
+	    directory and use the configuration files from the
+	    <replaceable>CHROOT_DIR</replaceable> directory.
+	  </para>
+	</listitem>
+      </varlistentry>
+    </variablelist>
+  </refsect1>
+
   <refsect1 id='bugs'>
     <title>BUGS</title>
     <para>

Modified: upstream/trunk/src/grpconv.c
===================================================================
--- upstream/trunk/src/grpconv.c	2011-11-06 18:37:57 UTC (rev 3540)
+++ upstream/trunk/src/grpconv.c	2011-11-06 18:38:04 UTC (rev 3541)
@@ -46,8 +46,11 @@
 #include <string.h>
 #include <time.h>
 #include <unistd.h>
+#include <getopt.h>
 #include "nscd.h"
 #include "prototypes.h"
+/*@-exitarg@*/
+#include "exitcodes.h"
 #ifdef SHADOWGRP
 #include "groupio.h"
 #include "sgroupio.h"
@@ -61,6 +64,8 @@
 
 /* local function prototypes */
 static void fail_exit (int status);
+static void usage (int status);
+static void process_flags (int argc, char **argv);
 
 static void fail_exit (int status)
 {
@@ -83,6 +88,55 @@
 	exit (status);
 }
 
+static void usage (int status)
+{
+	FILE *usageout = (E_SUCCESS != status) ? stderr : stdout;
+	(void) fprintf (usageout,
+	                _("Usage: %s [options]\n"
+	                  "\n"
+	                  "Options:\n"),
+	                Prog);
+	(void) fputs (_("  -h, --help                    display this help message and exit\n"), usageout);
+	(void) fputs (_("  -R, --root CHROOT_DIR         directory to chroot into\n"), usageout);
+	(void) fputs ("\n", usageout);
+	exit (status);
+}
+
+/*
+ * process_flags - parse the command line options
+ *
+ *	It will not return if an error is encountered.
+ */
+static void process_flags (int argc, char **argv)
+{
+	/*
+	 * Parse the command line options.
+	 */
+	int c;
+	static struct option long_options[] = {
+		{"help", no_argument, NULL, 'h'},
+		{"root", required_argument, NULL, 'R'},
+		{NULL, 0, NULL, '\0'}
+	};
+
+	while ((c = getopt_long (argc, argv, "hR:",
+	                         long_options, NULL)) != -1) {
+		switch (c) {
+		case 'h':
+			usage (E_SUCCESS);
+			/*@notreached@*/break;
+		case 'R': /* no-op, handled in process_root_flag () */
+			break;
+		default:
+			usage (E_USAGE);
+		}
+	}
+
+	if (optind != argc) {
+		usage (E_USAGE);
+	}
+}
+
 int main (int argc, char **argv)
 {
 	const struct group *gr;
@@ -90,18 +144,18 @@
 	const struct sgrp *sg;
 	struct sgrp sgent;
 
-	if (1 != argc) {
-		(void) fputs (_("Usage: grpconv\n"), stderr);
-		fail_exit (2);
-	}
 	Prog = Basename (argv[0]);
 
 	(void) setlocale (LC_ALL, "");
 	(void) bindtextdomain (PACKAGE, LOCALEDIR);
 	(void) textdomain (PACKAGE);
 
+	process_root_flag ("-R", argc, argv);
+
 	OPENLOG ("grpconv");
 
+	process_flags (argc, argv);
+
 	if (gr_lock () == 0) {
 		fprintf (stderr,
 		         _("%s: cannot lock %s; try again later.\n"),

Modified: upstream/trunk/src/grpunconv.c
===================================================================
--- upstream/trunk/src/grpunconv.c	2011-11-06 18:37:57 UTC (rev 3540)
+++ upstream/trunk/src/grpunconv.c	2011-11-06 18:38:04 UTC (rev 3541)
@@ -46,8 +46,11 @@
 #include <time.h>
 #include <unistd.h>
 #include <grp.h>
+#include <getopt.h>
 #include "nscd.h"
 #include "prototypes.h"
+/*@-exitarg@*/
+#include "exitcodes.h"
 #ifdef SHADOWGRP
 #include "groupio.h"
 #include "sgroupio.h"
@@ -61,6 +64,8 @@
 
 /* local function prototypes */
 static void fail_exit (int status);
+static void usage (int status);
+static void process_flags (int argc, char **argv);
 
 static void fail_exit (int status)
 {
@@ -83,24 +88,73 @@
 	exit (status);
 }
 
+static void usage (int status)
+{
+	FILE *usageout = (E_SUCCESS != status) ? stderr : stdout;
+	(void) fprintf (usageout,
+	                _("Usage: %s [options]\n"
+	                  "\n"
+	                  "Options:\n"),
+	                Prog);
+	(void) fputs (_("  -h, --help                    display this help message and exit\n"), usageout);
+	(void) fputs (_("  -R, --root CHROOT_DIR         directory to chroot into\n"), usageout);
+	(void) fputs ("\n", usageout);
+	exit (status);
+}
+
+/*
+ * process_flags - parse the command line options
+ *
+ *	It will not return if an error is encountered.
+ */
+static void process_flags (int argc, char **argv)
+{
+	/*
+	 * Parse the command line options.
+	 */
+	int c;
+	static struct option long_options[] = {
+		{"help", no_argument, NULL, 'h'},
+		{"root", required_argument, NULL, 'R'},
+		{NULL, 0, NULL, '\0'}
+	};
+
+	while ((c = getopt_long (argc, argv, "hR:",
+	                         long_options, NULL)) != -1) {
+		switch (c) {
+		case 'h':
+			usage (E_SUCCESS);
+			/*@notreached@*/break;
+		case 'R': /* no-op, handled in process_root_flag () */
+			break;
+		default:
+			usage (E_USAGE);
+		}
+	}
+
+	if (optind != argc) {
+		usage (E_USAGE);
+	}
+}
+
 int main (int argc, char **argv)
 {
 	const struct group *gr;
 	struct group grent;
 	const struct sgrp *sg;
 
-	if (1 != argc) {
-		(void) fputs (_("Usage: grpunconv\n"), stderr);
-		exit (1);
-	}
 	Prog = Basename (argv[0]);
 
 	(void) setlocale (LC_ALL, "");
 	(void) bindtextdomain (PACKAGE, LOCALEDIR);
 	(void) textdomain (PACKAGE);
 
+	process_root_flag ("-R", argc, argv);
+
 	OPENLOG ("grpunconv");
 
+	process_flags (argc, argv);
+
 	if (sgr_file_present () == 0) {
 		exit (0);	/* no /etc/gshadow, nothing to do */
 	}

Modified: upstream/trunk/src/pwconv.c
===================================================================
--- upstream/trunk/src/pwconv.c	2011-11-06 18:37:57 UTC (rev 3540)
+++ upstream/trunk/src/pwconv.c	2011-11-06 18:38:04 UTC (rev 3541)
@@ -65,6 +65,7 @@
 #include <string.h>
 #include <time.h>
 #include <unistd.h>
+#include <getopt.h>
 #include "defines.h"
 #include "getdef.h"
 #include "prototypes.h"
@@ -93,6 +94,8 @@
 
 /* local function prototypes */
 static void fail_exit (int status);
+static void usage (int status);
+static void process_flags (int argc, char **argv);
 
 static void fail_exit (int status)
 {
@@ -115,6 +118,55 @@
 	exit (status);
 }
 
+static void usage (int status)
+{
+	FILE *usageout = (E_SUCCESS != status) ? stderr : stdout;
+	(void) fprintf (usageout,
+	                _("Usage: %s [options]\n"
+	                  "\n"
+	                  "Options:\n"),
+	                Prog);
+	(void) fputs (_("  -h, --help                    display this help message and exit\n"), usageout);
+	(void) fputs (_("  -R, --root CHROOT_DIR         directory to chroot into\n"), usageout);
+	(void) fputs ("\n", usageout);
+	exit (status);
+}
+
+/*
+ * process_flags - parse the command line options
+ *
+ *	It will not return if an error is encountered.
+ */
+static void process_flags (int argc, char **argv)
+{
+	/*
+	 * Parse the command line options.
+	 */
+	int c;
+	static struct option long_options[] = {
+		{"help", no_argument, NULL, 'h'},
+		{"root", required_argument, NULL, 'R'},
+		{NULL, 0, NULL, '\0'}
+	};
+
+	while ((c = getopt_long (argc, argv, "hR:",
+	                         long_options, NULL)) != -1) {
+		switch (c) {
+		case 'h':
+			usage (E_SUCCESS);
+			/*@notreached@*/break;
+		case 'R': /* no-op, handled in process_root_flag () */
+			break;
+		default:
+			usage (E_USAGE);
+		}
+	}
+
+	if (optind != argc) {
+		usage (E_USAGE);
+	}
+}
+
 int main (int argc, char **argv)
 {
 	const struct passwd *pw;
@@ -122,22 +174,22 @@
 	const struct spwd *sp;
 	struct spwd spent;
 
-	if (1 != argc) {
-		(void) fputs (_("Usage: pwconv\n"), stderr);
-		fail_exit (E_USAGE);
-	}
 	Prog = Basename (argv[0]);
 
 	(void) setlocale (LC_ALL, "");
 	(void) bindtextdomain (PACKAGE, LOCALEDIR);
 	(void) textdomain (PACKAGE);
 
+	process_root_flag ("-R", argc, argv);
+
 	OPENLOG ("pwconv");
 
+	process_flags (argc, argv);
+
 #ifdef WITH_TCB
 	if (getdef_bool("USE_TCB")) {
-		fprintf(stderr, _("%s: can't work with tcb enabled\n"), Prog);
-		fail_exit(E_FAILURE);
+		fprintf (stderr, _("%s: can't work with tcb enabled\n"), Prog);
+		exit (E_FAILURE);
 	}
 #endif				/* WITH_TCB */
 

Modified: upstream/trunk/src/pwunconv.c
===================================================================
--- upstream/trunk/src/pwunconv.c	2011-11-06 18:37:57 UTC (rev 3540)
+++ upstream/trunk/src/pwunconv.c	2011-11-06 18:38:04 UTC (rev 3541)
@@ -39,11 +39,14 @@
 #include <stdio.h>
 #include <sys/types.h>
 #include <unistd.h>
+#include <getopt.h>
 #include "defines.h"
 #include "nscd.h"
 #include "prototypes.h"
 #include "pwio.h"
 #include "shadowio.h"
+/*@-exitarg@*/
+#include "exitcodes.h"
 
 /*
  * Global variables
@@ -55,6 +58,8 @@
 
 /* local function prototypes */
 static void fail_exit (int status);
+static void usage (int status);
+static void process_flags (int argc, char **argv);
 
 static void fail_exit (int status)
 {
@@ -75,25 +80,73 @@
 	exit (status);
 }
 
+static void usage (int status)
+{
+	FILE *usageout = (E_SUCCESS != status) ? stderr : stdout;
+	(void) fprintf (usageout,
+	                _("Usage: %s [options]\n"
+	                  "\n"
+	                  "Options:\n"),
+	                Prog);
+	(void) fputs (_("  -h, --help                    display this help message and exit\n"), usageout);
+	(void) fputs (_("  -R, --root CHROOT_DIR         directory to chroot into\n"), usageout);
+	(void) fputs ("\n", usageout);
+	exit (status);
+}
 
+/*
+ * process_flags - parse the command line options
+ *
+ *	It will not return if an error is encountered.
+ */
+static void process_flags (int argc, char **argv)
+{
+	/*
+	 * Parse the command line options.
+	 */
+	int c;
+	static struct option long_options[] = {
+		{"help", no_argument, NULL, 'h'},
+		{"root", required_argument, NULL, 'R'},
+		{NULL, 0, NULL, '\0'}
+	};
+
+	while ((c = getopt_long (argc, argv, "hR:",
+	                         long_options, NULL)) != -1) {
+		switch (c) {
+		case 'h':
+			usage (E_SUCCESS);
+			/*@notreached@*/break;
+		case 'R': /* no-op, handled in process_root_flag () */
+			break;
+		default:
+			usage (E_USAGE);
+		}
+	}
+
+	if (optind != argc) {
+		usage (E_USAGE);
+	}
+}
+
 int main (int argc, char **argv)
 {
 	const struct passwd *pw;
 	struct passwd pwent;
 	const struct spwd *spwd;
 
-	if (1 != argc) {
-		(void) fputs (_("Usage: pwunconv\n"), stderr);
-		exit (1);
-	}
 	Prog = Basename (argv[0]);
 
 	(void) setlocale (LC_ALL, "");
 	(void) bindtextdomain (PACKAGE, LOCALEDIR);
 	(void) textdomain (PACKAGE);
 
+	process_root_flag ("-R", argc, argv);
+
 	OPENLOG ("pwunconv");
 
+	process_flags (argc, argv);
+
 #ifdef WITH_TCB
 	if (getdef_bool("USE_TCB")) {
 		fprintf (stderr, _("%s: can't work with tcb enabled\n"), Prog);




More information about the Pkg-shadow-commits mailing list