[Pkg-shadow-commits] r627 - trunk/debian/patches

Christian Perrier bubulle at costa.debian.org
Mon Oct 31 11:34:01 UTC 2005


Author: bubulle
Date: 2005-10-31 11:34:00 +0000 (Mon, 31 Oct 2005)
New Revision: 627

Added:
   trunk/debian/patches/467_usermod_longopts
Modified:
   trunk/debian/patches/466_useradd_-r_LSB
   trunk/debian/patches/series
Log:
Add patches I sent to Tomasz for two more Debian bugs:
-long options to usermod
-add -r to useradd


Modified: trunk/debian/patches/466_useradd_-r_LSB
===================================================================
--- trunk/debian/patches/466_useradd_-r_LSB	2005-10-31 04:59:11 UTC (rev 626)
+++ trunk/debian/patches/466_useradd_-r_LSB	2005-10-31 11:34:00 UTC (rev 627)
@@ -1,3 +1,12 @@
+Goal: Add a "-r" option to useradd
+
+Fixes: #333706
+
+Status wrt upstream: Forwarded but not applied yet.
+
+This patch is still incomplete ad "--system" works as expected while
+"-" does ot
+
 Index: shadow-4.0.13/src/useradd.c
 ===================================================================
 --- shadow-4.0.13.orig/src/useradd.c	2005-10-27 14:28:27.288423968 +0200

Added: trunk/debian/patches/467_usermod_longopts
===================================================================
--- trunk/debian/patches/467_usermod_longopts	2005-10-31 04:59:11 UTC (rev 626)
+++ trunk/debian/patches/467_usermod_longopts	2005-10-31 11:34:00 UTC (rev 627)
@@ -0,0 +1,377 @@
+Goal: Add long options to usermod
+
+Fixes: #260149
+
+Status wrt upstream: Forwarded but not applied yet
+
+Index: shadow-4.0.13.old/src/usermod.c
+===================================================================
+--- shadow-4.0.13.old.orig/src/usermod.c	2005-10-27 22:38:04.679596845 +0200
++++ shadow-4.0.13.old/src/usermod.c	2005-10-31 08:56:42.910962461 +0100
+@@ -35,6 +35,7 @@
+ #include <ctype.h>
+ #include <errno.h>
+ #include <fcntl.h>
++#include <getopt.h>
+ #include <grp.h>
+ #include <lastlog.h>
+ #include <pwd.h>
+@@ -272,16 +273,28 @@
+  */
+ static void usage (void)
+ {
+-	fprintf (stderr,
+-		 _
+-		 ("Usage: %s\t[-u uid [-o]] [-g group] [[-G group,...] [-a]] \n"),
+-		 Prog);
+-	fprintf (stderr,
+-		 _
+-		 ("\t\t[-d home [-m]] [-s shell] [-c comment] [-l new_name]\n"));
+-	fprintf (stderr, "\t\t");
+-	fprintf (stderr, _("[-f inactive] [-e expire] "));
+-	fprintf (stderr, _("[-p passwd] [-L|-U] name\n"));
++	fprintf (stderr, _("Usage: usermod [options] LOGIN\n"
++			   "\n"
++			   "Options:\n"
++			   "  -c, --comment COMMENT		new value of the GECOS field\n"
++			   "  -d, --home-dir HOME_DIR	new login directory for the new user account\n"
++			   "		-m, --move	Use -m option to move data to \n"
++			   "				the new directory\n"
++			   "  -e, --expiredate EXPIRE_DATE	set account expiration date to EXPIRE_DATE\n"
++			   "  -f, --inactive INACTIVE	set password inactive after expiration\n"
++			   "				to INACTIVE\n"
++			   "  -g, --gid GROUP		force use GROUP as new initial login group\n"
++			   "  -G, --groups GROUPS		list of supplementary groups\n"
++			   "		-a, --append	Use -a option to append the user\n"
++			   "				to the supplemental groups\n"
++			   "  -h, --help			display this help message and exit\n"
++			   "  -l, --new-login LOGIN		new value of the login name\n"
++			   "  -L, --lock			lock the user account\n"
++			   "  -o, --non-unique		allow using duplicate (non-unique) UID\n"
++			   "  -p, --password PASSWORD	use encrypted password for the new password\n"
++			   "  -s, --shell SHELL		new login shell for the user account\n"
++			   "  -u, --uid UID			new UID for the user account\n"
++			   "  -U, --unlock			unlock the user account\n"));
+ 	exit (E_USAGE);
+ }
+ 
+@@ -885,159 +898,186 @@
+ #endif
+ 	}
+ 
+-	while ((arg = getopt (argc, argv, "ac:d:e:f:g:G:l:Lmop:s:u:U")) != EOF) {
+-		switch (arg) {
+-		case 'a':
+-			aflg++;
+-			break;
+-		case 'c':
+-			if (!VALID (optarg)) {
+-				fprintf (stderr,
+-					 _("%s: invalid field `%s'\n"),
+-					 Prog, optarg);
+-				exit (E_BAD_ARG);
+-			}
++	{
++		/*
++		 * Parse the command line options.
++		 */
++		int c;
++		static struct option long_options[] = {
++			{"append", required_argument, NULL, 'a'},
++			{"comment", required_argument, NULL, 'c'},
++			{"home-dir", required_argument, NULL, 'd'},
++			{"expiredate", required_argument, NULL, 'e'},
++			{"inactive", required_argument, NULL, 'f'},
++			{"gid", required_argument, NULL, 'g'},
++			{"groups", required_argument, NULL, 'G'},
++			{"help", no_argument, NULL, 'h'},
++			{"new-login", required_argument, NULL, 'l'},
++			{"lock", no_argument, NULL, 'L'},
++			{"move", no_argument, NULL, 'm'},
++			{"non-unique", no_argument, NULL, 'o'},
++			{"password", required_argument, NULL, 'p'},
++			{"shell", required_argument, NULL, 's'},
++			{"uid", required_argument, NULL, 'u'},
++			{"unlock", no_argument, NULL, 'U'},
++			{NULL, 0, NULL, '\0'}
++		};
++		while ((c =
++			getopt_long (argc, argv, "ac:d:e:f:g:G:l:Lmop:s:u:U",
++				     long_options, NULL)) != -1) {
++			switch (c) {
++				case 'a':
++					aflg++;
++					break;
++				case 'c':
++					if (!VALID (optarg)) {
++						fprintf (stderr,
++							 _("%s: invalid field `%s'\n"),
++							 Prog, optarg);
++						exit (E_BAD_ARG);
++					}
+ #ifdef WITH_AUDIT
+-			user_newcomment = optarg;
++					user_newcomment = optarg;
+ #else
+-			user_comment = optarg;
++					user_comment = optarg;
+ #endif
+-			cflg++;
+-			break;
+-		case 'd':
+-			if (!VALID (optarg)) {
+-				fprintf (stderr,
+-					 _("%s: invalid field `%s'\n"),
+-					 Prog, optarg);
+-				exit (E_BAD_ARG);
+-			}
+-			dflg++;
+-			user_newhome = optarg;
+-			break;
+-		case 'e':
+-			if (*optarg) {
++					cflg++;
++					break;
++				case 'd':
++					if (!VALID (optarg)) {
++						fprintf (stderr,
++							 _("%s: invalid field `%s'\n"),
++							 Prog, optarg);
++						exit (E_BAD_ARG);
++					}
++					dflg++;
++					user_newhome = optarg;
++					break;
++				case 'e':
++					if (*optarg) {
+ #ifdef WITH_AUDIT
+-				user_newexpire = strtoday (optarg);
+-				if (user_newexpire == -1) {
++						user_newexpire = strtoday (optarg);
++						if (user_newexpire == -1) {
+ #else
+-				user_expire = strtoday (optarg);
++						user_expire = strtoday (optarg);
+ 				if (user_expire == -1) {
+ #endif
+-					fprintf (stderr,
+-						 _
+-						 ("%s: invalid date `%s'\n"),
+-						 Prog, optarg);
+-					exit (E_BAD_ARG);
+-				}
++							fprintf (stderr,
++								 _
++								 ("%s: invalid date `%s'\n"),
++								 Prog, optarg);
++							exit (E_BAD_ARG);
++						}
+ #ifdef WITH_AUDIT
+-				user_newexpire *= DAY / SCALE;
++						user_newexpire *= DAY / SCALE;
+ #else
+-				user_expire *= DAY / SCALE;
++						user_expire *= DAY / SCALE;
+ #endif
+-			} else
++					} else
+ #ifdef WITH_AUDIT
+-				user_newexpire = -1;
++						user_newexpire = -1;
+ #else
+-				user_expire = -1;
++						user_expire = -1;
+ #endif
+-			eflg++;
+-			break;
+-		case 'f':
++					eflg++;
++					break;
++				case 'f':
+ #ifdef WITH_AUDIT
+-			user_newinactive = get_number (optarg);
++					user_newinactive = get_number (optarg);
+ #else
+-			user_inactive = get_number (optarg);
++					user_inactive = get_number (optarg);
+ #endif
+-			fflg++;
+-			break;
+-		case 'g':
+-			grp = getgr_nam_gid (optarg);
+-			if (!grp) {
+-				fprintf (stderr,
+-					 _("%s: unknown group %s\n"),
+-					 Prog, optarg);
+-				exit (E_NOTFOUND);
+-			}
+-			user_newgid = grp->gr_gid;
+-			gflg++;
+-			break;
+-		case 'G':
+-			if (get_groups (optarg))
+-				exit (E_NOTFOUND);
+-			Gflg++;
+-			break;
+-		case 'l':
+-			if (!check_user_name (optarg)) {
+-				fprintf (stderr,
+-					 _("%s: invalid field `%s'\n"),
+-					 Prog, optarg);
+-				exit (E_BAD_ARG);
+-			}
+-
+-			/*
+-			 * If the name does not really change, we mustn't
+-			 * set the flag as this will cause rather serious
+-			 * problems later!
+-			 */
+-			if (strcmp (user_name, optarg))
+-				lflg++;
+-
+-			user_newname = optarg;
+-			break;
+-		case 'L':
+-			if (Uflg || pflg)
+-				usage ();
+-
+-			Lflg++;
+-			break;
+-		case 'm':
+-			if (!dflg)
+-				usage ();
+-
+-			mflg++;
+-			break;
+-		case 'o':
+-			if (!uflg)
+-				usage ();
+-
+-			oflg++;
+-			break;
+-		case 'p':
+-			if (Lflg || Uflg)
+-				usage ();
+-
+-			user_pass = optarg;
+-			pflg++;
+-			break;
+-		case 's':
+-			if (!VALID (optarg)) {
+-				fprintf (stderr,
+-					 _("%s: invalid field `%s'\n"),
+-					 Prog, optarg);
+-				exit (E_BAD_ARG);
+-			}
++					fflg++;
++					break;
++				case 'g':
++					grp = getgr_nam_gid (optarg);
++					if (!grp) {
++						fprintf (stderr,
++							 _("%s: unknown group %s\n"),
++							 Prog, optarg);
++						exit (E_NOTFOUND);
++					}
++					user_newgid = grp->gr_gid;
++					gflg++;
++					break;
++				case 'G':
++					if (get_groups (optarg))
++					  exit (E_NOTFOUND);
++					Gflg++;
++					break;
++				case 'l':
++					if (!check_user_name (optarg)) {
++						fprintf (stderr,
++							 _("%s: invalid field `%s'\n"),
++							 Prog, optarg);
++						exit (E_BAD_ARG);
++					}
++
++					/*
++					 * If the name does not really change, we mustn't
++					 * set the flag as this will cause rather serious
++					 * problems later!
++					 */
++					if (strcmp (user_name, optarg))
++						lflg++;
++
++					user_newname = optarg;
++					break;
++				case 'L':
++					if (Uflg || pflg)
++						usage ();
++
++					Lflg++;
++					break;
++				case 'm':
++					if (!dflg)
++						usage ();
++
++					mflg++;
++					break;
++				case 'o':
++					if (!uflg)
++						usage ();
++
++					oflg++;
++					break;
++				case 'p':
++					if (Lflg || Uflg)
++						usage ();
++
++					user_pass = optarg;
++					pflg++;
++					break;
++				case 's':
++					if (!VALID (optarg)) {
++						fprintf (stderr,
++							 _("%s: invalid field `%s'\n"),
++							 Prog, optarg);
++						exit (E_BAD_ARG);
++					}
+ #ifdef WITH_AUDIT
+-			user_newshell = optarg;
++					user_newshell = optarg;
+ #else
+-			user_shell = optarg;
++					user_shell = optarg;
+ #endif
+-			sflg++;
+-			break;
+-		case 'u':
+-			user_newid = get_id (optarg);
+-			uflg++;
+-			break;
+-		case 'U':
+-			if (Lflg && pflg)
+-				usage ();
+-
+-			Uflg++;
+-			break;
+-		default:
+-			usage ();
++					sflg++;
++					break;
++				case 'u':
++					user_newid = get_id (optarg);
++					uflg++;
++					break;
++				case 'U':
++					if (Lflg && pflg)
++						usage ();
++
++					Uflg++;
++					break;
++				default:
++					usage ();
++				}
++				anyflag++;
++			}
+ 		}
+-		anyflag++;
+-	}
+ 	if (anyflag == 0) {
+ 		fprintf (stderr, _("%s: no flags given\n"), Prog);
+ 		exit (E_USAGE);

Modified: trunk/debian/patches/series
===================================================================
--- trunk/debian/patches/series	2005-10-31 04:59:11 UTC (rev 626)
+++ trunk/debian/patches/series	2005-10-31 11:34:00 UTC (rev 627)
@@ -65,6 +65,7 @@
 #464_login_service_configurable
 #465_su_logs_like_login
 #466_useradd_-r_LSB
+#467_usermod_longopts
 #End of holiday patches
 # 999-2 is about using cdbs. It does not patch upstream files
 # so shouldn't be here, but we keep it for the future




More information about the Pkg-shadow-commits mailing list