diff options
Diffstat (limited to 'source/a/shadow/patches/r3055.diff')
-rw-r--r-- | source/a/shadow/patches/r3055.diff | 1515 |
1 files changed, 0 insertions, 1515 deletions
diff --git a/source/a/shadow/patches/r3055.diff b/source/a/shadow/patches/r3055.diff deleted file mode 100644 index a2af6f39..00000000 --- a/source/a/shadow/patches/r3055.diff +++ /dev/null @@ -1,1515 +0,0 @@ -=================================================================== ---- src/userdel.c (revision 3054) -+++ src/userdel.c (revision 3055) -@@ -94,7 +94,7 @@ - static bool spw_locked = false; - - /* local function prototypes */ --static void usage (void); -+static void usage (int status); - static void update_groups (void); - static void close_files (void); - static void fail_exit (int); -@@ -111,7 +111,7 @@ - /* - * usage - display usage message and exit - */ --static void usage (void) -+static void usage (int status) - { - fputs (_("Usage: userdel [options] LOGIN\n" - "\n" -@@ -120,8 +120,8 @@ - " even if not owned by user\n" - " -h, --help display this help message and exit\n" - " -r, --remove remove home directory and mail spool\n" -- "\n"), stderr); -- exit (E_USAGE); -+ "\n"), status ? stderr : stdout); -+ exit (status); - } - - /* -@@ -774,17 +774,19 @@ - case 'f': /* force remove even if not owned by user */ - fflg = true; - break; -+ case 'h': -+ usage (E_SUCCESS); - case 'r': /* remove home dir and mailbox */ - rflg = true; - break; - default: -- usage (); -+ usage (E_USAGE); - } - } - } - - if ((optind + 1) != argc) { -- usage (); -+ usage (E_USAGE); - } - - OPENLOG ("userdel"); -Index: src/lastlog.c -=================================================================== ---- src/lastlog.c (revision 3054) -+++ src/lastlog.c (revision 3055) -@@ -71,7 +71,7 @@ - - #define NOW (time ((time_t *) 0)) - --static void usage (void) -+static void usage (int status) - { - fputs (_("Usage: lastlog [options]\n" - "\n" -@@ -80,8 +80,8 @@ - " -h, --help display this help message and exit\n" - " -t, --time DAYS print only lastlog records more recent than DAYS\n" - " -u, --user LOGIN print lastlog record of the specified LOGIN\n" -- "\n"), stderr); -- exit (EXIT_FAILURE); -+ "\n"), status ? stderr : stdout); -+ exit (status); - } - - static void print_one (/*@null@*/const struct passwd *pw) -@@ -208,7 +208,7 @@ - NULL)) != -1) { - switch (c) { - case 'h': -- usage (); -+ usage (EXIT_SUCCESS); - break; - case 't': - { -@@ -267,7 +267,7 @@ - break; - } - default: -- usage (); -+ usage (EXIT_FAILURE); - break; - } - } -@@ -275,7 +275,7 @@ - fprintf (stderr, - _("lastlog: unexpected argument: %s\n"), - argv[optind]); -- usage(); -+ usage (EXIT_FAILURE); - } - } - -Index: src/gpasswd.c -=================================================================== ---- src/gpasswd.c (revision 3054) -+++ src/gpasswd.c (revision 3055) -@@ -94,7 +94,7 @@ - #endif - - /* local function prototypes */ --static void usage (void); -+static void usage (int status); - static RETSIGTYPE catch_signals (int killed); - static bool is_valid_user_list (const char *users); - static void process_flags (int argc, char **argv); -@@ -128,14 +128,15 @@ - /* - * usage - display usage message - */ --static void usage (void) -+static void usage (int status) - { -- fprintf (stderr, -+ fprintf (status ? stderr : stdout, - _("Usage: %s [option] GROUP\n" - "\n" - "Options:\n" - " -a, --add USER add USER to GROUP\n" - " -d, --delete USER remove USER from GROUP\n" -+ " -h, --help display this help message and exit\n" - " -r, --remove-password remove the GROUP's password\n" - " -R, --restrict restrict access to GROUP to its members\n" - " -M, --members USER,... set the list of members of GROUP\n" -@@ -150,7 +151,7 @@ - _("The options cannot be combined.\n") - #endif - ); -- exit (E_USAGE); -+ exit (status); - } - - /* -@@ -235,6 +236,7 @@ - static struct option long_options[] = { - {"add", required_argument, NULL, 'a'}, - {"delete", required_argument, NULL, 'd'}, -+ {"help", no_argument, NULL, 'h'}, - {"remove-password", no_argument, NULL, 'r'}, - {"restrict", no_argument, NULL, 'R'}, - {"administrators", required_argument, NULL, 'A'}, -@@ -242,7 +244,7 @@ - {NULL, 0, NULL, '\0'} - }; - -- while ((flag = getopt_long (argc, argv, "a:A:d:gM:rR", long_options, &option_index)) != -1) { -+ while ((flag = getopt_long (argc, argv, "a:A:d:ghM:rR", long_options, &option_index)) != -1) { - switch (flag) { - case 'a': /* add a user */ - aflg = true; -@@ -276,6 +278,8 @@ - break; - case 'g': /* no-op from normal password */ - break; -+ case 'h': -+ usage (E_SUCCESS); - case 'M': /* set the list of members */ - members = optarg; - if (!is_valid_user_list (members)) { -@@ -290,7 +294,7 @@ - Rflg = true; - break; - default: -- usage (); -+ usage (E_USAGE); - } - } - -@@ -325,14 +329,14 @@ - exclusive++; - } - if (exclusive > 1) { -- usage (); -+ usage (E_USAGE); - } - - /* - * Make sure one (and only one) group was provided - */ - if ((argc != (opt_index+1)) || (NULL == group)) { -- usage (); -+ usage (E_USAGE); - } - } - -Index: src/newusers.c -=================================================================== ---- src/newusers.c (revision 3054) -+++ src/newusers.c (revision 3055) -@@ -92,7 +92,7 @@ - static bool spw_locked = false; - - /* local function prototypes */ --static void usage (void); -+static void usage (int status); - static void fail_exit (int); - static int add_group (const char *, const char *, gid_t *, gid_t); - static int get_user_id (const char *, uid_t *); -@@ -110,15 +110,16 @@ - /* - * usage - display usage message and exit - */ --static void usage (void) -+static void usage (int status) - { -- (void) fprintf (stderr, -+ FILE *usageout = status ? stderr : stdout; -+ (void) fprintf (usageout, - _("Usage: %s [options]\n" - "\n" - "Options:\n"), - Prog); - #ifndef USE_PAM -- (void) fprintf (stderr, -+ (void) fprintf (usageout, - _(" -c, --crypt-method the crypt method (one of %s)\n"), - #ifndef USE_SHA_CRYPT - "NONE DES MD5" -@@ -127,18 +128,18 @@ - #endif /* USE_SHA_CRYPT */ - ); - #endif /* !USE_PAM */ -- (void) fputs (_(" -h, --help display this help message and exit\n"), stderr); -- (void) fputs (_(" -r, --system create system accounts\n"), stderr); -+ (void) fputs (_(" -h, --help display this help message and exit\n"), usageout); -+ (void) fputs (_(" -r, --system create system accounts\n"), usageout); - #ifndef USE_PAM - #ifdef USE_SHA_CRYPT - (void) fputs (_(" -s, --sha-rounds number of SHA rounds for the SHA*\n" - " crypt algorithms\n"), -- stderr); -+ usageout); - #endif /* USE_SHA_CRYPT */ - #endif /* !USE_PAM */ -- (void) fputs ("\n", stderr); -+ (void) fputs ("\n", usageout); - -- exit (EXIT_FAILURE); -+ exit (status); - } - - /* -@@ -548,7 +549,7 @@ - long_options, &option_index)) != -1) { - switch (c) { - case 'h': -- usage (); -+ usage (EXIT_SUCCESS); - break; - case 'r': - rflg = true; -@@ -565,13 +566,13 @@ - fprintf (stderr, - _("%s: invalid numeric argument '%s'\n"), - Prog, optarg); -- usage (); -+ usage (EXIT_FAILURE); - } - break; - #endif /* USE_SHA_CRYPT */ - #endif /* !USE_PAM */ - default: -- usage (); -+ usage (EXIT_FAILURE); - break; - } - } -@@ -602,7 +603,7 @@ - fprintf (stderr, - _("%s: %s flag is only allowed with the %s flag\n"), - Prog, "-s", "-c"); -- usage (); -+ usage (EXIT_FAILURE); - } - #endif /* USE_SHA_CRYPT */ - -@@ -618,7 +619,7 @@ - fprintf (stderr, - _("%s: unsupported crypt method: %s\n"), - Prog, crypt_method); -- usage (); -+ usage (EXIT_FAILURE); - } - } - #endif /* !USE_PAM */ -Index: src/chpasswd.c -=================================================================== ---- src/chpasswd.c (revision 3054) -+++ src/chpasswd.c (revision 3055) -@@ -74,7 +74,7 @@ - - /* local function prototypes */ - static void fail_exit (int code); --static void usage (void); -+static void usage (int status); - static void process_flags (int argc, char **argv); - static void check_flags (void); - static void check_perms (void); -@@ -112,15 +112,16 @@ - /* - * usage - display usage message and exit - */ --static void usage (void) -+static void usage (int status) - { -- (void) fprintf (stderr, -+ FILE *usageout = status ? stderr : stdout; -+ (void) fprintf (usageout, - _("Usage: %s [options]\n" - "\n" - "Options:\n"), - Prog); - #ifndef USE_PAM -- (void) fprintf (stderr, -+ (void) fprintf (usageout, - _(" -c, --crypt-method the crypt method (one of %s)\n"), - #ifndef USE_SHA_CRYPT - "NONE DES MD5" -@@ -128,22 +129,22 @@ - "NONE DES MD5 SHA256 SHA512" - #endif /* USE_SHA_CRYPT */ - ); -- (void) fputs (_(" -e, --encrypted supplied passwords are encrypted\n"), stderr); -+ (void) fputs (_(" -e, --encrypted supplied passwords are encrypted\n"), usageout); - #endif /* !USE_PAM */ -- (void) fputs (_(" -h, --help display this help message and exit\n"), stderr); -+ (void) fputs (_(" -h, --help display this help message and exit\n"), usageout); - #ifndef USE_PAM - (void) fputs (_(" -m, --md5 encrypt the clear text password using\n" - " the MD5 algorithm\n"), -- stderr); -+ usageout); - #ifdef USE_SHA_CRYPT - (void) fputs (_(" -s, --sha-rounds number of SHA rounds for the SHA*\n" - " crypt algorithms\n"), -- stderr); -+ usageout); - #endif /* USE_SHA_CRYPT */ - #endif /* !USE_PAM */ -- (void) fputs ("\n", stderr); -+ (void) fputs ("\n", usageout); - -- exit (E_USAGE); -+ exit (status); - } - - /* -@@ -181,7 +182,7 @@ - long_options, &option_index)) != -1) { - switch (c) { - case 'h': -- usage (); -+ usage (E_SUCCESS); - break; - #ifndef USE_PAM - case 'c': -@@ -201,13 +202,13 @@ - fprintf (stderr, - _("%s: invalid numeric argument '%s'\n"), - Prog, optarg); -- usage (); -+ usage (E_USAGE); - } - break; - #endif /* USE_SHA_CRYPT */ - #endif /* !USE_PAM */ - default: -- usage (); -+ usage (E_USAGE); - break; - } - } -@@ -229,7 +230,7 @@ - fprintf (stderr, - _("%s: %s flag is only allowed with the %s flag\n"), - Prog, "-s", "-c"); -- usage (); -+ usage (E_USAGE); - } - #endif - -@@ -238,7 +239,7 @@ - fprintf (stderr, - _("%s: the -c, -e, and -m flags are exclusive\n"), - Prog); -- usage (); -+ usage (E_USAGE); - } - - if (cflg) { -@@ -253,7 +254,7 @@ - fprintf (stderr, - _("%s: unsupported crypt method: %s\n"), - Prog, crypt_method); -- usage (); -+ usage (E_USAGE); - } - } - #endif /* USE_PAM */ -Index: src/groupmems.c -=================================================================== ---- src/groupmems.c (revision 3054) -+++ src/groupmems.c (revision 3055) -@@ -88,7 +88,7 @@ - const struct group *grp); - static void purge_members (const struct group *grp); - static void display_members (const char *const *members); --static void usage (void); -+static void usage (int status); - static void process_flags (int argc, char **argv); - static void check_perms (void); - static void fail_exit (int code); -@@ -361,7 +361,7 @@ - } - } - --static void usage (void) -+static void usage (int status) - { - (void) fputs (_("Usage: groupmems [options] [action]\n" - "\n" -@@ -372,10 +372,11 @@ - "Actions:\n" - " -a, --add username add username to the members of the group\n" - " -d, --delete username remove username from the members of the group\n" -+ " -h, --help display this help message and exit\n" - " -p, --purge purge all members from the group\n" - " -l, --list list the members of the group\n" -- "\n"), stderr); -- fail_exit (EXIT_USAGE); -+ "\n"), status ? stderr : stdout); -+ fail_exit (status); - } - - /* -@@ -389,12 +390,13 @@ - {"add", required_argument, NULL, 'a'}, - {"delete", required_argument, NULL, 'd'}, - {"group", required_argument, NULL, 'g'}, -+ {"help", no_argument, NULL, 'h'}, - {"list", no_argument, NULL, 'l'}, - {"purge", no_argument, NULL, 'p'}, - {NULL, 0, NULL, '\0'} - }; - -- while ((arg = getopt_long (argc, argv, "a:d:g:lp", long_options, -+ while ((arg = getopt_long (argc, argv, "a:d:g:hlp", long_options, - &option_index)) != EOF) { - switch (arg) { - case 'a': -@@ -408,6 +410,8 @@ - case 'g': - thisgroup = xstrdup (optarg); - break; -+ case 'h': -+ usage (EXIT_SUCCESS); - case 'l': - list = true; - ++exclusive; -@@ -417,12 +421,12 @@ - ++exclusive; - break; - default: -- usage (); -+ usage (EXIT_USAGE); - } - } - - if ((exclusive > 1) || (optind < argc)) { -- usage (); -+ usage (EXIT_USAGE); - } - - /* local, no need for xgetpwnam */ -Index: src/usermod.c -=================================================================== ---- src/usermod.c (revision 3054) -+++ src/usermod.c (revision 3055) -@@ -149,7 +149,7 @@ - static void date_to_str (char *buf, size_t maxsize, - long int date, const char *negativ); - static int get_groups (char *); --static void usage (void); -+static void usage (int status); - static void new_pwent (struct passwd *); - #ifdef WITH_SELINUX - static void selinux_update_mapping (void); -@@ -300,9 +300,9 @@ - /* - * usage - display usage message and exit - */ --static void usage (void) -+static void usage (int status) - { -- fprintf (stderr, -+ fprintf (status ? stderr : stdout, - _("Usage: usermod [options] LOGIN\n" - "\n" - "Options:\n" -@@ -334,7 +334,7 @@ - "" - #endif - ); -- exit (E_USAGE); -+ exit (status); - } - - /* -@@ -815,7 +815,7 @@ - bool anyflag = false; - - if ((1 == argc) || ('-' == argv[argc - 1][0])) { -- usage (); -+ usage (E_USAGE); - } - - { -@@ -955,7 +955,7 @@ - fprintf (stderr, - _("%s: invalid numeric argument '%s'\n"), - Prog, optarg); -- usage (); -+ usage (E_USAGE); - } - fflg = true; - break; -@@ -976,6 +976,8 @@ - } - Gflg = true; - break; -+ case 'h': -+ usage (E_SUCCESS); - case 'l': - if (!is_valid_user_name (optarg)) { - fprintf (stderr, -@@ -1036,7 +1038,7 @@ - break; - #endif - default: -- usage (); -+ usage (E_USAGE); - } - anyflag = true; - } -@@ -1092,14 +1094,14 @@ - } - - if (optind != argc - 1) { -- usage (); -+ usage (E_USAGE); - } - - if (aflg && (!Gflg)) { - fprintf (stderr, - _("%s: %s flag is only allowed with the %s flag\n"), - Prog, "-a", "-G"); -- usage (); -+ usage (E_USAGE); - exit (E_USAGE); - } - -@@ -1107,7 +1109,7 @@ - fprintf (stderr, - _("%s: the -L, -p, and -U flags are exclusive\n"), - Prog); -- usage (); -+ usage (E_USAGE); - exit (E_USAGE); - } - -@@ -1115,7 +1117,7 @@ - fprintf (stderr, - _("%s: %s flag is only allowed with the %s flag\n"), - Prog, "-o", "-u"); -- usage (); -+ usage (E_USAGE); - exit (E_USAGE); - } - -@@ -1123,7 +1125,7 @@ - fprintf (stderr, - _("%s: %s flag is only allowed with the %s flag\n"), - Prog, "-m", "-d"); -- usage (); -+ usage (E_USAGE); - exit (E_USAGE); - } - -Index: src/chgpasswd.c -=================================================================== ---- src/chgpasswd.c (revision 3054) -+++ src/chgpasswd.c (revision 3055) -@@ -78,7 +78,7 @@ - - /* local function prototypes */ - static void fail_exit (int code); --static void usage (void); -+static void usage (int status); - static void process_flags (int argc, char **argv); - static void check_flags (void); - static void check_perms (void); -@@ -114,9 +114,10 @@ - /* - * usage - display usage message and exit - */ --static void usage (void) -+static void usage (int status) - { -- fprintf (stderr, _("Usage: %s [options]\n" -+ fprintf (status ? stderr : stdout, -+ _("Usage: %s [options]\n" - "\n" - "Options:\n" - " -c, --crypt-method the crypt method (one of %s)\n" -@@ -135,7 +136,7 @@ - " crypt algorithms\n") - #endif - ); -- exit (E_USAGE); -+ exit (status); - } - - /* -@@ -174,7 +175,7 @@ - eflg = true; - break; - case 'h': -- usage (); -+ usage (E_SUCCESS); - break; - case 'm': - md5flg = true; -@@ -186,12 +187,12 @@ - fprintf (stderr, - _("%s: invalid numeric argument '%s'\n"), - Prog, optarg); -- usage (); -+ usage (E_USAGE); - } - break; - #endif - default: -- usage (); -+ usage (E_USAGE); - break; - } - } -@@ -212,7 +213,7 @@ - fprintf (stderr, - _("%s: %s flag is only allowed with the %s flag\n"), - Prog, "-s", "-c"); -- usage (); -+ usage (E_USAGE); - } - #endif - -@@ -221,7 +222,7 @@ - fprintf (stderr, - _("%s: the -c, -e, and -m flags are exclusive\n"), - Prog); -- usage (); -+ usage (E_USAGE); - } - - if (cflg) { -@@ -236,7 +237,7 @@ - fprintf (stderr, - _("%s: unsupported crypt method: %s\n"), - Prog, crypt_method); -- usage (); -+ usage (E_USAGE); - } - } - } -Index: src/vipw.c -=================================================================== ---- src/vipw.c (revision 3054) -+++ src/vipw.c (revision 3055) -@@ -1,7 +1,7 @@ - /* - vipw, vigr edit the password or group file - with -s will edit shadow or gshadow file -- -+ - Copyright (c) 1997 , Guy Maor <maor@ece.utexas.edu> - Copyright (c) 1999 - 2000, Marek Michałkiewicz - Copyright (c) 2002 - 2006, Tomasz Kłoczko -@@ -29,8 +29,8 @@ - - #include <errno.h> - #include <getopt.h> --#ifdef WITH_SELINUX --#include <selinux/selinux.h> -+#ifdef WITH_SELINUX -+#include <selinux/selinux.h> - #endif - #include <signal.h> - #include <stdio.h> -@@ -64,7 +64,7 @@ - static bool quiet = false; - - /* local function prototypes */ --static void usage (void); -+static void usage (int status); - static int create_backup_file (FILE *, const char *, struct stat *); - static void vipwexit (const char *msg, int syserr, int ret); - static void vipwedit (const char *, int (*)(void), int (*)(void)); -@@ -72,9 +72,9 @@ - /* - * usage - display usage message and exit - */ --static void usage (void) -+static void usage (int status) - { -- (void) -+ (void) - fputs (_("Usage: vipw [options]\n" - "\n" - "Options:\n" -@@ -83,8 +83,8 @@ - " -p, --passwd edit passwd database\n" - " -q, --quiet quiet mode\n" - " -s, --shadow edit shadow or gshadow database\n" -- "\n"), stderr); -- exit (E_USAGE); -+ "\n"), status ? stderr : stdout); -+ exit (status); - } - - /* -@@ -285,8 +285,8 @@ - if (st1.st_mtime == st2.st_mtime) { - vipwexit (0, 0, 0); - } --#ifdef WITH_SELINUX -- /* unset the fscreatecon */ -+#ifdef WITH_SELINUX -+ /* unset the fscreatecon */ - if (is_selinux_enabled ()) { - if (setfscreatecon (NULL)) { - vipwexit (_("setfscreatecon () failed"), errno, 1); -@@ -353,7 +353,7 @@ - do_vipw = false; - break; - case 'h': -- usage (); -+ usage (E_SUCCESS); - break; - case 'p': - do_vipw = true; -@@ -365,7 +365,7 @@ - editshadow = true; - break; - default: -- usage (); -+ usage (E_USAGE); - } - } - } -Index: src/useradd.c -=================================================================== ---- src/useradd.c (revision 3054) -+++ src/useradd.c (revision 3055) -@@ -179,7 +179,7 @@ - static void show_defaults (void); - static int set_defaults (void); - static int get_groups (char *); --static void usage (void); -+static void usage (int status); - static void new_pwent (struct passwd *); - #ifdef WITH_SELINUX - static void selinux_update_mapping (void); -@@ -681,45 +681,46 @@ - /* - * usage - display usage message and exit - */ --static void usage (void) -+static void usage (int status) - { -- (void) fprintf (stderr, -+ FILE *usageout = status ? stderr : stdout; -+ (void) fprintf (usageout, - _("Usage: %s [options] LOGIN\n" - "\n" - "Options:\n"), - Prog); - (void) fputs (_(" -b, --base-dir BASE_DIR base directory for the home directory of the\n" -- " new account\n"), stderr); -- (void) fputs (_(" -c, --comment COMMENT GECOS field of the new account\n"), stderr); -- (void) fputs (_(" -d, --home-dir HOME_DIR home directory of the new account\n"), stderr); -- (void) fputs (_(" -D, --defaults print or change default useradd configuration\n"), stderr); -- (void) fputs (_(" -e, --expiredate EXPIRE_DATE expiration date of the new account\n"), stderr); -- (void) fputs (_(" -f, --inactive INACTIVE password inactivity period of the new account\n"), stderr); -+ " new account\n"), usageout); -+ (void) fputs (_(" -c, --comment COMMENT GECOS field of the new account\n"), usageout); -+ (void) fputs (_(" -d, --home-dir HOME_DIR home directory of the new account\n"), usageout); -+ (void) fputs (_(" -D, --defaults print or change default useradd configuration\n"), usageout); -+ (void) fputs (_(" -e, --expiredate EXPIRE_DATE expiration date of the new account\n"), usageout); -+ (void) fputs (_(" -f, --inactive INACTIVE password inactivity period of the new account\n"), usageout); - (void) fputs (_(" -g, --gid GROUP name or ID of the primary group of the new\n" -- " account\n"), stderr); -+ " account\n"), usageout); - (void) fputs (_(" -G, --groups GROUPS list of supplementary groups of the new\n" -- " account\n"), stderr); -- (void) fputs (_(" -h, --help display this help message and exit\n"), stderr); -- (void) fputs (_(" -k, --skel SKEL_DIR use this alternative skeleton directory\n"), stderr); -- (void) fputs (_(" -K, --key KEY=VALUE override /etc/login.defs defaults\n"), stderr); -+ " account\n"), usageout); -+ (void) fputs (_(" -h, --help display this help message and exit\n"), usageout); -+ (void) fputs (_(" -k, --skel SKEL_DIR use this alternative skeleton directory\n"), usageout); -+ (void) fputs (_(" -K, --key KEY=VALUE override /etc/login.defs defaults\n"), usageout); - (void) fputs (_(" -l, --no-log-init do not add the user to the lastlog and\n" -- " faillog databases\n"), stderr); -- (void) fputs (_(" -m, --create-home create the user's home directory\n"), stderr); -- (void) fputs (_(" -M, --no-create-home do not create the user's home directory\n"), stderr); -+ " faillog databases\n"), usageout); -+ (void) fputs (_(" -m, --create-home create the user's home directory\n"), usageout); -+ (void) fputs (_(" -M, --no-create-home do not create the user's home directory\n"), usageout); - (void) fputs (_(" -N, --no-user-group do not create a group with the same name as\n" -- " the user\n"), stderr); -+ " the user\n"), usageout); - (void) fputs (_(" -o, --non-unique allow to create users with duplicate\n" -- " (non-unique) UID\n"), stderr); -- (void) fputs (_(" -p, --password PASSWORD encrypted password of the new account\n"), stderr); -- (void) fputs (_(" -r, --system create a system account\n"), stderr); -- (void) fputs (_(" -s, --shell SHELL login shell of the new account\n"), stderr); -- (void) fputs (_(" -u, --uid UID user ID of the new account\n"), stderr); -- (void) fputs (_(" -U, --user-group create a group with the same name as the user\n"), stderr); -+ " (non-unique) UID\n"), usageout); -+ (void) fputs (_(" -p, --password PASSWORD encrypted password of the new account\n"), usageout); -+ (void) fputs (_(" -r, --system create a system account\n"), usageout); -+ (void) fputs (_(" -s, --shell SHELL login shell of the new account\n"), usageout); -+ (void) fputs (_(" -u, --uid UID user ID of the new account\n"), usageout); -+ (void) fputs (_(" -U, --user-group create a group with the same name as the user\n"), usageout); - #ifdef WITH_SELINUX -- (void) fputs (_(" -Z, --selinux-user SEUSER use a specific SEUSER for the SELinux user mapping\n"), stderr); -+ (void) fputs (_(" -Z, --selinux-user SEUSER use a specific SEUSER for the SELinux user mapping\n"), usageout); - #endif -- (void) fputs ("\n", stderr); -- exit (E_USAGE); -+ (void) fputs ("\n", usageout); -+ exit (status); - } - - /* -@@ -989,9 +990,9 @@ - }; - while ((c = getopt_long (argc, argv, - #ifdef WITH_SELINUX -- "b:c:d:De:f:g:G:k:K:lmMNop:rs:u:UZ:", -+ "b:c:d:De:f:g:G:hk:K:lmMNop:rs:u:UZ:", - #else -- "b:c:d:De:f:g:G:k:K:lmMNop:rs:u:U", -+ "b:c:d:De:f:g:G:hk:K:lmMNop:rs:u:U", - #endif - long_options, NULL)) != -1) { - switch (c) { -@@ -1029,7 +1030,7 @@ - break; - case 'D': - if (anyflag) { -- usage (); -+ usage (E_USAGE); - } - Dflg = true; - break; -@@ -1066,7 +1067,7 @@ - fprintf (stderr, - _("%s: invalid numeric argument '%s'\n"), - Prog, optarg); -- usage (); -+ usage (E_USAGE); - } - /* - * -f -1 is allowed -@@ -1106,7 +1107,7 @@ - Gflg = true; - break; - case 'h': -- usage (); -+ usage (E_SUCCESS); - break; - case 'k': - def_template = optarg; -@@ -1201,7 +1202,7 @@ - break; - #endif - default: -- usage (); -+ usage (E_USAGE); - } - anyflag = true; - } -@@ -1220,31 +1221,31 @@ - fprintf (stderr, - _("%s: %s flag is only allowed with the %s flag\n"), - Prog, "-o", "-u"); -- usage (); -+ usage (E_USAGE); - } - if (kflg && !mflg) { - fprintf (stderr, - _("%s: %s flag is only allowed with the %s flag\n"), - Prog, "-k", "-m"); -- usage (); -+ usage (E_USAGE); - } - if (Uflg && gflg) { - fprintf (stderr, - _("%s: options %s and %s conflict\n"), - Prog, "-U", "-g"); -- usage (); -+ usage (E_USAGE); - } - if (Uflg && Nflg) { - fprintf (stderr, - _("%s: options %s and %s conflict\n"), - Prog, "-U", "-N"); -- usage (); -+ usage (E_USAGE); - } - if (mflg && Mflg) { - fprintf (stderr, - _("%s: options %s and %s conflict\n"), - Prog, "-m", "-M"); -- usage (); -+ usage (E_USAGE); - } - - /* -@@ -1253,15 +1254,15 @@ - */ - if (Dflg) { - if (optind != argc) { -- usage (); -+ usage (E_USAGE); - } - - if (uflg || oflg || Gflg || dflg || cflg || mflg) { -- usage (); -+ usage (E_USAGE); - } - } else { - if (optind != argc - 1) { -- usage (); -+ usage (E_USAGE); - } - - user_name = argv[optind]; -Index: src/su.c -=================================================================== ---- src/su.c (revision 3054) -+++ src/su.c (revision 3055) -@@ -323,7 +323,7 @@ - /* - * usage - print command line syntax and exit - */ --static void usage (void) -+static void usage (int status) - { - fputs (_("Usage: su [options] [LOGIN]\n" - "\n" -@@ -335,8 +335,8 @@ - " --preserve-environment do not reset environment variables, and\n" - " keep the same shell\n" - " -s, --shell SHELL use SHELL instead of the default in passwd\n" -- "\n"), stderr); -- exit (E_USAGE); -+ "\n"), status ? stderr : stdout); -+ exit (status); - } - - /* -@@ -421,7 +421,7 @@ - command = optarg; - break; - case 'h': -- usage (); -+ usage (E_SUCCESS); - break; - case 'l': - fakelogin = true; -@@ -438,7 +438,7 @@ - shellstr = optarg; - break; - default: -- usage (); /* NOT REACHED */ -+ usage (E_USAGE); /* NOT REACHED */ - } - } - -Index: src/groupmod.c -=================================================================== ---- src/groupmod.c (revision 3054) -+++ src/groupmod.c (revision 3055) -@@ -93,7 +93,7 @@ - pflg = false; /* new encrypted password */ - - /* local function prototypes */ --static void usage (void); -+static void usage (int status); - static void new_grent (struct group *); - - #ifdef SHADOWGRP -@@ -113,21 +113,22 @@ - * usage - display usage message and exit - */ - --static void usage (void) -+static void usage (int status) - { -- (void) fprintf (stderr, -+ FILE *usageout = status ? stderr : stdout; -+ (void) fprintf (usageout, - _("Usage: %s [options] GROUP\n" - "\n" - "Options:\n"), - Prog); -- (void) fputs (_(" -g, --gid GID change the group ID to GID\n"), stderr); -- (void) fputs (_(" -h, --help display this help message and exit\n"), stderr); -- (void) fputs (_(" -n, --new-name NEW_GROUP change the name to NEW_GROUP\n"), stderr); -- (void) fputs (_(" -o, --non-unique allow to use a duplicate (non-unique) GID\n"), stderr); -+ (void) fputs (_(" -g, --gid GID change the group ID to GID\n"), usageout); -+ (void) fputs (_(" -h, --help display this help message and exit\n"), usageout); -+ (void) fputs (_(" -n, --new-name NEW_GROUP change the name to NEW_GROUP\n"), usageout); -+ (void) fputs (_(" -o, --non-unique allow to use a duplicate (non-unique) GID\n"), usageout); - (void) fputs (_(" -p, --password PASSWORD change the password to this (encrypted)\n" -- " PASSWORD\n"), stderr); -- (void) fputs ("\n", stderr); -- exit (E_USAGE); -+ " PASSWORD\n"), usageout); -+ (void) fputs ("\n", usageout); -+ exit (status); - } - - /* -@@ -362,6 +363,8 @@ - exit (E_BAD_ARG); - } - break; -+ case 'h': -+ usage (E_SUCCESS); - case 'n': - nflg = true; - group_newname = optarg; -@@ -374,16 +377,16 @@ - pflg = true; - break; - default: -- usage (); -+ usage (E_USAGE); - } - } - - if (oflg && !gflg) { -- usage (); -+ usage (E_USAGE); - } - - if (optind != (argc - 1)) { -- usage (); -+ usage (E_USAGE); - } - - group_name = argv[argc - 1]; -Index: src/passwd.c -=================================================================== ---- src/passwd.c (revision 3054) -+++ src/passwd.c (revision 3055) -@@ -180,7 +180,7 @@ - " -w, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" - " -x, --maxdays MAX_DAYS set maximum number of days before password\n" - " change to MAX_DAYS\n" -- "\n"), stderr); -+ "\n"), status ? stderr : stdout); - exit (status); - } - -@@ -811,7 +811,7 @@ - {NULL, 0, NULL, '\0'} - }; - -- while ((c = getopt_long (argc, argv, "adei:kln:qr:Suw:x:", -+ while ((c = getopt_long (argc, argv, "adehi:kln:qr:Suw:x:", - long_options, &option_index)) != -1) { - switch (c) { - case 'a': -@@ -897,6 +897,8 @@ - xflg = true; - anyflag = true; - break; -+ case 'h': -+ usage (E_SUCCESS); - default: - usage (E_BAD_ARG); - } -Index: src/groupadd.c -=================================================================== ---- src/groupadd.c (revision 3054) -+++ src/groupadd.c (revision 3055) -@@ -88,7 +88,7 @@ - #endif - - /* local function prototypes */ --static void usage (void); -+static void usage (int status); - static void new_grent (struct group *grent); - - #ifdef SHADOWGRP -@@ -105,24 +105,25 @@ - /* - * usage - display usage message and exit - */ --static void usage (void) -+static void usage (int status) - { -- (void) fprintf (stderr, -+ FILE *usageout = status ? stderr : stdout; -+ (void) fprintf (usageout, - _("Usage: %s [options] GROUP\n" - "\n" - "Options:\n"), - Prog); - (void) fputs (_(" -f, --force exit successfully if the group already exists,\n" -- " and cancel -g if the GID is already used\n"), stderr); -- (void) fputs (_(" -g, --gid GID use GID for the new group\n"), stderr); -- (void) fputs (_(" -h, --help display this help message and exit\n"), stderr); -- (void) fputs (_(" -K, --key KEY=VALUE override /etc/login.defs defaults\n"), stderr); -+ " and cancel -g if the GID is already used\n"), usageout); -+ (void) fputs (_(" -g, --gid GID use GID for the new group\n"), usageout); -+ (void) fputs (_(" -h, --help display this help message and exit\n"), usageout); -+ (void) fputs (_(" -K, --key KEY=VALUE override /etc/login.defs defaults\n"), usageout); - (void) fputs (_(" -o, --non-unique allow to create groups with duplicate\n" -- " (non-unique) GID\n"), stderr); -- (void) fputs (_(" -p, --password PASSWORD use this encrypted password for the new group\n"), stderr); -- (void) fputs (_(" -r, --system create a system account\n"), stderr); -- (void) fputs ("\n", stderr); -- exit (E_USAGE); -+ " (non-unique) GID\n"), usageout); -+ (void) fputs (_(" -p, --password PASSWORD use this encrypted password for the new group\n"), usageout); -+ (void) fputs (_(" -r, --system create a system account\n"), usageout); -+ (void) fputs ("\n", usageout); -+ exit (status); - } - - /* -@@ -412,7 +413,7 @@ - } - break; - case 'h': -- usage (); -+ usage (E_SUCCESS); - break; - case 'K': - /* -@@ -444,7 +445,7 @@ - rflg = true; - break; - default: -- usage (); -+ usage (E_USAGE); - } - } - -@@ -452,7 +453,7 @@ - * Check the flags consistency - */ - if (optind != argc - 1) { -- usage (); -+ usage (E_USAGE); - } - group_name = argv[optind]; - -@@ -468,7 +469,7 @@ - { - /* -o does not make sense without -g */ - if (oflg && !gflg) { -- usage (); -+ usage (E_USAGE); - } - - check_new_name (); -Index: src/chage.c -=================================================================== ---- src/chage.c (revision 3054) -+++ src/chage.c (revision 3055) -@@ -91,7 +91,7 @@ - - /* local function prototypes */ - static bool isnum (const char *s); --static void usage (void); -+static void usage (int status); - static void date_to_str (char *buf, size_t maxsize, time_t date); - static int new_fields (void); - static void print_date (time_t date); -@@ -152,7 +152,7 @@ - /* - * usage - print command line syntax and exit - */ --static void usage (void) -+static void usage (int status) - { - fputs (_("Usage: chage [options] [LOGIN]\n" - "\n" -@@ -168,8 +168,8 @@ - " -M, --maxdays MAX_DAYS set maximim number of days before password\n" - " change to MAX_DAYS\n" - " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" -- "\n"), stderr); -- exit (E_USAGE); -+ "\n"), status ? stderr : stdout); -+ exit (status); - } - - static void date_to_str (char *buf, size_t maxsize, time_t date) -@@ -413,7 +413,7 @@ - fprintf (stderr, - _("%s: invalid date '%s'\n"), - Prog, optarg); -- usage (); -+ usage (E_USAGE); - } - break; - case 'E': -@@ -425,11 +425,11 @@ - fprintf (stderr, - _("%s: invalid date '%s'\n"), - Prog, optarg); -- usage (); -+ usage (E_USAGE); - } - break; - case 'h': -- usage (); -+ usage (E_SUCCESS); - break; - case 'I': - Iflg = true; -@@ -438,7 +438,7 @@ - fprintf (stderr, - _("%s: invalid numeric argument '%s'\n"), - Prog, optarg); -- usage (); -+ usage (E_USAGE); - } - break; - case 'l': -@@ -451,7 +451,7 @@ - fprintf (stderr, - _("%s: invalid numeric argument '%s'\n"), - Prog, optarg); -- usage (); -+ usage (E_USAGE); - } - break; - case 'M': -@@ -461,7 +461,7 @@ - fprintf (stderr, - _("%s: invalid numeric argument '%s'\n"), - Prog, optarg); -- usage (); -+ usage (E_USAGE); - } - break; - case 'W': -@@ -471,11 +471,11 @@ - fprintf (stderr, - _("%s: invalid numeric argument '%s'\n"), - Prog, optarg); -- usage (); -+ usage (E_USAGE); - } - break; - default: -- usage (); -+ usage (E_USAGE); - } - } - -@@ -495,14 +495,14 @@ - */ - - if (argc != opt_index + 1) { -- usage (); -+ usage (E_USAGE); - } - - if (lflg && (mflg || Mflg || dflg || Wflg || Iflg || Eflg)) { - fprintf (stderr, - _("%s: do not include \"l\" with other flags\n"), - Prog); -- usage (); -+ usage (E_USAGE); - } - } - -Index: src/faillog.c -=================================================================== ---- src/faillog.c (revision 3054) -+++ src/faillog.c (revision 3055) -@@ -47,6 +47,17 @@ - /*@-exitarg@*/ - #include "exitcodes.h" - -+/* local function prototypes */ -+static void usage (int status); -+static void print_one (/*@null@*/const struct passwd *pw, bool force); -+static void set_locktime (long locktime); -+static bool set_locktime_one (uid_t uid, long locktime); -+static void setmax (int max); -+static bool setmax_one (uid_t uid, int max); -+static void print (void); -+static bool reset_one (uid_t uid); -+static void reset (void); -+ - /* - * Global variables - */ -@@ -69,24 +80,25 @@ - - #define NOW (time((time_t *) 0)) - --static void usage (void) -+static void usage (int status) - { -- (void) fprintf (stderr, -+ FILE *usageout = status ? stderr : stdout; -+ (void) fprintf (usageout, - _("Usage: %s [options]\n" - "\n" - "Options:\n"), - "faillog"); -- (void) fputs (_(" -a, --all display faillog records for all users\n"), stderr); -- (void) fputs (_(" -h, --help display this help message and exit\n"), stderr); -- (void) fputs (_(" -l, --lock-time SEC after failed login lock account for SEC seconds\n"), stderr); -- (void) fputs (_(" -m, --maximum MAX set maximum failed login counters to MAX\n"), stderr); -- (void) fputs (_(" -r, --reset reset the counters of login failures\n"), stderr); -- (void) fputs (_(" -t, --time DAYS display faillog records more recent than DAYS\n"), stderr); -+ (void) fputs (_(" -a, --all display faillog records for all users\n"), usageout); -+ (void) fputs (_(" -h, --help display this help message and exit\n"), usageout); -+ (void) fputs (_(" -l, --lock-time SEC after failed login lock account for SEC seconds\n"), usageout); -+ (void) fputs (_(" -m, --maximum MAX set maximum failed login counters to MAX\n"), usageout); -+ (void) fputs (_(" -r, --reset reset the counters of login failures\n"), usageout); -+ (void) fputs (_(" -t, --time DAYS display faillog records more recent than DAYS\n"), usageout); - (void) fputs (_(" -u, --user LOGIN/RANGE display faillog record or maintains failure\n" - " counters and limits (if used with -r, -m,\n" -- " or -l) only for the specified LOGIN(s)\n"), stderr); -- (void) fputs ("\n", stderr); -- exit (E_USAGE); -+ " or -l) only for the specified LOGIN(s)\n"), usageout); -+ (void) fputs ("\n", usageout); -+ exit (status); - } - - static void print_one (/*@null@*/const struct passwd *pw, bool force) -@@ -495,7 +507,7 @@ - aflg = true; - break; - case 'h': -- usage (); -+ usage (E_SUCCESS); - break; - case 'l': - if (getlong (optarg, &fail_locktime) == 0) { -@@ -561,16 +573,16 @@ - break; - } - default: -- usage (); -+ usage (E_USAGE); - } - } - } - - if (aflg && uflg) { -- usage (); -+ usage (E_USAGE); - } - if (tflg && (lflg || mflg || rflg)) { -- usage (); -+ usage (E_USAGE); - } - - /* Open the faillog database */ -Index: src/chsh.c -=================================================================== ---- src/chsh.c (revision 3054) -+++ src/chsh.c (revision 3055) -@@ -72,7 +72,7 @@ - - /* local function prototypes */ - static void fail_exit (int code); --static void usage (void); -+static void usage (int status); - static void new_fields (void); - static bool shell_is_listed (const char *); - static bool is_restricted_shell (const char *); -@@ -101,15 +101,15 @@ - /* - * usage - print command line syntax and exit - */ --static void usage (void) -+static void usage (int status) - { - fputs (_("Usage: chsh [options] [LOGIN]\n" - "\n" - "Options:\n" - " -h, --help display this help message and exit\n" - " -s, --shell SHELL new login shell for the user account\n" -- "\n"), stderr); -- exit (E_USAGE); -+ "\n"), status ? stderr : stdout); -+ exit (status); - } - - /* -@@ -217,14 +217,14 @@ - &option_index)) != -1) { - switch (c) { - case 'h': -- usage (); -+ usage (E_SUCCESS); - break; - case 's': - sflg = true; - STRFCPY (loginsh, optarg); - break; - default: -- usage (); -+ usage (E_USAGE); - } - } - -@@ -233,7 +233,7 @@ - * be the user's name. - */ - if (argc > (optind + 1)) { -- usage (); -+ usage (E_USAGE); - } - } - -Index: man/groupmems.8.xml -=================================================================== ---- man/groupmems.8.xml (revision 3054) -+++ man/groupmems.8.xml (revision 3055) -@@ -114,6 +114,12 @@ - </listitem> - </varlistentry> - <varlistentry> -+ <term><option>-h</option>, <option>--help</option></term> -+ <listitem> -+ <para>Display help message and exit.</para> -+ </listitem> -+ </varlistentry> -+ <varlistentry> - <term><option>-l</option>, <option>--list</option></term> - <listitem> - <para>List the group membership list.</para> -Index: man/gpasswd.1.xml -=================================================================== ---- man/gpasswd.1.xml (revision 3054) -+++ man/gpasswd.1.xml (revision 3055) -@@ -1,7 +1,7 @@ - <?xml version="1.0" encoding="UTF-8"?> - <!-- - Copyright (c) 1996 , Rafal Maszkowski -- Copyright (c) 2007 - 2008, Nicolas François -+ Copyright (c) 2007 - 2009, Nicolas François - All rights reserved. - - Redistribution and use in source and binary forms, with or without -@@ -148,6 +148,14 @@ - </variablelist> - <variablelist remap='IP'> - <varlistentry> -+ <term><option>-h</option>, <option>--help</option></term> -+ <listitem> -+ <para>Display help message and exit.</para> -+ </listitem> -+ </varlistentry> -+ </variablelist> -+ <variablelist remap='IP'> -+ <varlistentry> - <term> - <option>-r</option>, <option>--remove-password</option> - </term> -Index: NEWS -=================================================================== ---- NEWS (revision 3054) -+++ NEWS (revision 3055) -@@ -1,5 +1,11 @@ - $Id$ - -+shadow-4.1.4.1 -> shadow-4.1.4.2 UNRELEASED -+ -+- general -+ * report usage error to stderr, but report usage help to stdout (and return -+ zero) when explicitly requested (e.g. with --help). -+ - shadow-4.1.4.1 -> shadow-4.1.4.2 2009-07-24 - - - general |