]> git.cameronkatri.com Git - pw-darwin.git/blobdiff - chpass/chpass.c
MF22: Remove confusing comma
[pw-darwin.git] / chpass / chpass.c
index 9a7b8a67f85f70ed598ef24adc73dca10ea9670b..982548fa5a46986318f3f6b27f7f6e95d4c5e9b3 100644 (file)
@@ -40,7 +40,7 @@ static char copyright[] =
 #ifndef lint
 static char sccsid[] = "From: @(#)chpass.c     8.4 (Berkeley) 4/2/94";
 static char rcsid[] =
-       "$Id: chpass.c,v 1.9 1996/07/01 19:38:07 guido Exp $";
+       "$Id: chpass.c,v 1.13 1997/02/22 19:54:25 peter Exp $";
 #endif /* not lint */
 
 #include <sys/param.h>
@@ -82,7 +82,7 @@ main(argc, argv)
        int argc;
        char **argv;
 {
-       enum { NEWSH, LOADENTRY, EDITENTRY, NEWPW } op;
+       enum { NEWSH, LOADENTRY, EDITENTRY, NEWPW, NEWEXP } op;
        struct passwd *pw, lpw;
        char *username = NULL;
        int ch, pfd, tfd;
@@ -94,9 +94,9 @@ main(argc, argv)
 
        op = EDITENTRY;
 #ifdef YP
-       while ((ch = getopt(argc, argv, "a:p:s:d:h:oly")) != EOF)
+       while ((ch = getopt(argc, argv, "a:p:s:e:d:h:oly")) != -1)
 #else
-       while ((ch = getopt(argc, argv, "a:p:s:")) != EOF)
+       while ((ch = getopt(argc, argv, "a:p:s:e:")) != -1)
 #endif
                switch(ch) {
                case 'a':
@@ -111,6 +111,10 @@ main(argc, argv)
                        op = NEWPW;
                        arg = optarg;
                        break;
+               case 'e':
+                       op = NEWEXP;
+                       arg = optarg;
+                       break;
 #ifdef YP
                case 'h':
 #ifdef PARANOID
@@ -156,7 +160,7 @@ main(argc, argv)
 
        uid = getuid();
 
-       if (op == EDITENTRY || op == NEWSH || op == NEWPW)
+       if (op == EDITENTRY || op == NEWSH || op == NEWPW || op == NEWEXP)
                switch(argc) {
 #ifdef YP
                case 0:
@@ -189,6 +193,13 @@ main(argc, argv)
                        pw_error((char *)NULL, 0, 1);
        }
 
+       if (op == NEWEXP) {
+               if (uid)        /* only root can change expire */
+                       baduser();
+               if (p_expire(arg, pw, (ENTRY *)NULL))
+                       pw_error((char *)NULL, 0, 1);
+       }
+
        if (op == LOADENTRY) {
                if (uid)
                        baduser();
@@ -272,9 +283,9 @@ usage()
 
        (void)fprintf(stderr,
 #ifdef YP
-               "usage: chpass [-l] [-y] [-d domain [-h host]] [-a list] [-p encpass] [-s shell] [user]\n");
+               "usage: chpass [-l] [-y] [-d domain [-h host]] [-a list] [-p encpass] [-s shell] [-e mmm dd yy] [user]\n");
 #else
-               "usage: chpass [-a list] [-p encpass] [-s shell] [user]\n");
+               "usage: chpass [-a list] [-p encpass] [-s shell] [-e mmm dd yy] [user]\n");
 #endif
        exit(1);
 }