]> git.cameronkatri.com Git - pw-darwin.git/commitdiff
Remove unused includes. Make it WARNS=6 friendly. Concerning bin/2442, make
authorPhilippe Charnier <charnier@FreeBSD.org>
Sun, 18 Jan 2004 21:46:39 +0000 (21:46 +0000)
committerPhilippe Charnier <charnier@FreeBSD.org>
Sun, 18 Jan 2004 21:46:39 +0000 (21:46 +0000)
a new function dup_shell() to replace ok_shell() and make it unconditionnally
strdup() its result to make the caller's code simplier. Change ok_shell() to
just return an integer value suitable for tests (it was used mainly for that
purpose). Do not use strdup() in the caller's code but rely on dup_shell()
that will do the job for us.

PR: bin/2442

chpass/chpass.c
chpass/chpass.h
chpass/field.c
chpass/util.c

index 8b716ba25c0b4a16670296ceacc468a2413794d2..ad6b9850370dcedfbf0641ec894f3c155d3c2533 100644 (file)
@@ -53,15 +53,9 @@ static char sccsid[] = "@(#)chpass.c 8.4 (Berkeley) 4/2/94";
 __FBSDID("$FreeBSD$");
 
 #include <sys/param.h>
-#include <sys/stat.h>
-#include <sys/signal.h>
-#include <sys/time.h>
-#include <sys/resource.h>
 
-#include <ctype.h>
 #include <err.h>
 #include <errno.h>
-#include <fcntl.h>
 #include <pwd.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -292,7 +286,7 @@ usage(void)
 {
 
        (void)fprintf(stderr,
-           "Usage: chpass%s %s [user]\n",
+           "usage: chpass%s %s [user]\n",
 #ifdef YP
            " [-d domain] [-h host]",
 #else
index b78b85e0441f4566a0f6b5938bb8b896f007c0c1..ed1a58649d592a8e6ced6facd479b6e723ace5c3 100644 (file)
@@ -64,7 +64,8 @@ extern int master_mode;
 
 int     atot(char *, time_t *);
 struct passwd *edit(const char *, struct passwd *);
-char    *ok_shell(char *);
+int      ok_shell(char *);
+char    *dup_shell(char *);
 int     p_change(char *, struct passwd *, ENTRY *);
 int     p_class(char *, struct passwd *, ENTRY *);
 int     p_expire(char *, struct passwd *, ENTRY *);
@@ -72,7 +73,6 @@ int    p_gecos(char *, struct passwd *, ENTRY *);
 int     p_gid(char *, struct passwd *, ENTRY *);
 int     p_hdir(char *, struct passwd *, ENTRY *);
 int     p_login(char *, struct passwd *, ENTRY *);
-int     p_login(char *, struct passwd *, ENTRY *);
 int     p_passwd(char *, struct passwd *, ENTRY *);
 int     p_shell(char *, struct passwd *, ENTRY *);
 int     p_uid(char *, struct passwd *, ENTRY *);
index fe5b30f71049800cf6aa5e944d9fbfd1caee5bb2..eac5561a8dc2ec5ebb6f4b2c29ad96e146de770f 100644 (file)
@@ -56,10 +56,8 @@ __FBSDID("$FreeBSD$");
 #include <grp.h>
 #include <paths.h>
 #include <pwd.h>
-#include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <unistd.h>
 
 #include "chpass.h"
 
@@ -218,7 +216,6 @@ p_hdir(char *p, struct passwd *pw, ENTRY *ep __unused)
 int
 p_shell(char *p, struct passwd *pw, ENTRY *ep __unused)
 {
-       char *t;
        struct stat sbuf;
 
        if (!*p) {
@@ -230,15 +227,16 @@ p_shell(char *p, struct passwd *pw, ENTRY *ep __unused)
                warnx("%s: current shell non-standard", pw->pw_shell);
                return (-1);
        }
-       if (!(t = ok_shell(p))) {
+       if (!ok_shell(p)) {
                if (!master_mode) {
                        warnx("%s: non-standard shell", p);
                        return (-1);
                }
+               pw->pw_shell = strdup(p);
        }
        else
-               p = t;
-       if (!(pw->pw_shell = strdup(p))) {
+               pw->pw_shell = dup_shell(p);
+       if (!pw->pw_shell) {
                warnx("can't save entry");
                return (-1);
        }
index ac105aaf05558d08d251c2b553b96de298ecebf7..07d96e227a9616a0ad3ab4d37339542f7d9c0058 100644 (file)
@@ -49,7 +49,6 @@ __FBSDID("$FreeBSD$");
 #include <sys/types.h>
 
 #include <ctype.h>
-#include <pwd.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -139,18 +138,45 @@ bad:              return (1);
        return (0);
 }
 
-char *
+int
 ok_shell(char *name)
 {
        char *p, *sh;
 
        setusershell();
        while ((sh = getusershell())) {
-               if (!strcmp(name, sh))
-                       return (name);
+               if (!strcmp(name, sh)) {
+                       endusershell();
+                       return (1);
+               }
+               /* allow just shell name, but use "real" path */
+               if ((p = strrchr(sh, '/')) && strcmp(name, p + 1) == 0) {
+                       endusershell();
+                       return (1);
+               }
+       }
+       endusershell();
+       return (0);
+}
+
+char *
+dup_shell(char *name)
+{
+       char *p, *sh, *ret;
+
+       setusershell();
+       while ((sh = getusershell())) {
+               if (!strcmp(name, sh)) {
+                       endusershell();
+                       return (strdup(name));
+               }
                /* allow just shell name, but use "real" path */
-               if ((p = strrchr(sh, '/')) && strcmp(name, p + 1) == 0)
-                       return (sh);
+               if ((p = strrchr(sh, '/')) && strcmp(name, p + 1) == 0) {
+                       ret = strdup(sh);
+                       endusershell();
+                       return (ret);
+               }
        }
+       endusershell();
        return (NULL);
 }