Add the ability to print user records in unix version 7 (old) format.
authorDavid Nugent <davidn@FreeBSD.org>
Tue, 2 Mar 1999 00:53:33 +0000 (00:53 +0000)
committerDavid Nugent <davidn@FreeBSD.org>
Tue, 2 Mar 1999 00:53:33 +0000 (00:53 +0000)
pw/pw.c
pw/pw_user.c

diff --git a/pw/pw.c b/pw/pw.c
index 6fbcfb51d1e98c5f370ce79032d087ddb7823409..f71cdf70ab19cb9f590a728dad98fd579a6af875 100644 (file)
--- a/pw/pw.c
+++ b/pw/pw.c
@@ -26,7 +26,7 @@
 
 #ifndef lint
 static const char rcsid[] =
-       "$Id: pw.c,v 1.13 1999/02/23 10:35:47 davidn Exp $";
+       "$Id: pw.c,v 1.14 1999/02/23 11:01:50 davidn Exp $";
 #endif /* not lint */
 
 #include <err.h>
@@ -101,7 +101,7 @@ main(int argc, char *argv[])
                        "V:C:qn:u:c:d:e:p:g:G:mk:s:oL:i:w:h:Db:NPy:Y",
                        "V:C:qn:u:rY",
                        "V:C:qn:u:c:d:e:p:g:G:ml:k:s:w:L:h:FNPY",
-                       "V:C:qn:u:FPa",
+                       "V:C:qn:u:FPa7",
                        "V:C:q"
                },
                { /* grp  */
@@ -351,7 +351,8 @@ cmdhelp(int mode, int which)
                                "\t-u uid         user id\n"
                                "\t-F             force print\n"
                                "\t-P             prettier format\n"
-                               "\t-a             print all users\n",
+                               "\t-a             print all users\n"
+                               "\t-7             print in v7 format\n",
                                "usage: pw usernext [switches]\n"
                                "\t-V etcdir      alternate /etc location\n"
                                "\t-C config      configuration file\n"
index 635b530e63fcfc7969ea39cb69eb13c01e3cd4ad..0eb9802be596aa5087c76d2d8821907a5f7fa5ae 100644 (file)
@@ -27,7 +27,7 @@
 
 #ifndef lint
 static const char rcsid[] =
-       "$Id: pw_user.c,v 1.26 1999/02/08 21:26:44 des Exp $";
+       "$Id: pw_user.c,v 1.27 1999/02/23 07:15:10 davidn Exp $";
 #endif /* not lint */
 
 #include <ctype.h>
@@ -56,7 +56,7 @@ static const char rcsid[] =
 
 static          randinit;
 
-static int      print_user(struct passwd * pwd, int pretty);
+static int      print_user(struct passwd * pwd, int pretty, int v7);
 static uid_t    pw_uidpolicy(struct userconf * cnf, struct cargs * args);
 static uid_t    pw_gidpolicy(struct userconf * cnf, struct cargs * args, char *nam, gid_t prefer);
 static time_t   pw_pwdpolicy(struct userconf * cnf, struct cargs * args);
@@ -271,10 +271,11 @@ pw_user(struct userconf * cnf, int mode, struct cargs * args)
        }
        if (mode == M_PRINT && getarg(args, 'a')) {
                int             pretty = getarg(args, 'P') != NULL;
+               int             v7 = getarg(args, '7') != NULL;
 
                SETPWENT();
                while ((pwd = GETPWENT()) != NULL)
-                       print_user(pwd, pretty);
+                       print_user(pwd, pretty, v7);
                ENDPWENT();
                return EXIT_SUCCESS;
        }
@@ -309,7 +310,9 @@ pw_user(struct userconf * cnf, int mode, struct cargs * args)
                        if (mode == M_PRINT && getarg(args, 'F')) {
                                fakeuser.pw_name = a_name ? a_name->val : "nouser";
                                fakeuser.pw_uid = a_uid ? (uid_t) atol(a_uid->val) : -1;
-                               return print_user(&fakeuser, getarg(args, 'P') != NULL);
+                               return print_user(&fakeuser,
+                                                 getarg(args, 'P') != NULL,
+                                                 getarg(args, '7') != NULL);
                        }
                        if (a_name == NULL)
                                errx(EX_NOUSER, "no such uid `%s'", a_uid->val);
@@ -389,7 +392,9 @@ pw_user(struct userconf * cnf, int mode, struct cargs * args)
                        }
                        return EXIT_SUCCESS;
                } else if (mode == M_PRINT)
-                       return print_user(pwd, getarg(args, 'P') != NULL);
+                       return print_user(pwd,
+                                         getarg(args, 'P') != NULL,
+                                         getarg(args, '7') != NULL);
 
                /*
                 * The rest is edit code
@@ -525,7 +530,9 @@ pw_user(struct userconf * cnf, int mode, struct cargs * args)
         * Special case: -N only displays & exits
         */
        if (getarg(args, 'N') != NULL)
-               return print_user(pwd, getarg(args, 'P') != NULL);
+               return print_user(pwd,
+                                 getarg(args, 'P') != NULL,
+                                 getarg(args, '7') != NULL);
 
        r = r1 = 1;
        if (mode == M_ADD) {
@@ -964,12 +971,12 @@ pw_password(struct userconf * cnf, struct cargs * args, char const * user)
 
 
 static int
-print_user(struct passwd * pwd, int pretty)
+print_user(struct passwd * pwd, int pretty, int v7)
 {
        if (!pretty) {
                char            buf[_UC_MAXLINE];
 
-               fmtpwent(buf, pwd);
+               fmtpwentry(buf, pwd, v7 ? PWF_PASSWD : PWF_STANDARD);
                fputs(buf, stdout);
        } else {
                int             j;