Add the ability to print user records in unix version 7 (old) format.

This commit is contained in:
David Nugent 1999-03-02 00:53:33 +00:00
parent 4ac9ae7083
commit f35227220f
2 changed files with 19 additions and 11 deletions

View File

@ -26,7 +26,7 @@
#ifndef lint #ifndef lint
static const char rcsid[] = 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 */ #endif /* not lint */
#include <err.h> #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:c:d:e:p:g:G:mk:s:oL:i:w:h:Db:NPy:Y",
"V:C:qn:u:rY", "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: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" "V:C:q"
}, },
{ /* grp */ { /* grp */
@ -351,7 +351,8 @@ cmdhelp(int mode, int which)
"\t-u uid user id\n" "\t-u uid user id\n"
"\t-F force print\n" "\t-F force print\n"
"\t-P prettier format\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" "usage: pw usernext [switches]\n"
"\t-V etcdir alternate /etc location\n" "\t-V etcdir alternate /etc location\n"
"\t-C config configuration file\n" "\t-C config configuration file\n"

View File

@ -27,7 +27,7 @@
#ifndef lint #ifndef lint
static const char rcsid[] = 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 */ #endif /* not lint */
#include <ctype.h> #include <ctype.h>
@ -56,7 +56,7 @@ static const char rcsid[] =
static randinit; 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_uidpolicy(struct userconf * cnf, struct cargs * args);
static uid_t pw_gidpolicy(struct userconf * cnf, struct cargs * args, char *nam, gid_t prefer); 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); 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')) { if (mode == M_PRINT && getarg(args, 'a')) {
int pretty = getarg(args, 'P') != NULL; int pretty = getarg(args, 'P') != NULL;
int v7 = getarg(args, '7') != NULL;
SETPWENT(); SETPWENT();
while ((pwd = GETPWENT()) != NULL) while ((pwd = GETPWENT()) != NULL)
print_user(pwd, pretty); print_user(pwd, pretty, v7);
ENDPWENT(); ENDPWENT();
return EXIT_SUCCESS; return EXIT_SUCCESS;
} }
@ -309,7 +310,9 @@ pw_user(struct userconf * cnf, int mode, struct cargs * args)
if (mode == M_PRINT && getarg(args, 'F')) { if (mode == M_PRINT && getarg(args, 'F')) {
fakeuser.pw_name = a_name ? a_name->val : "nouser"; fakeuser.pw_name = a_name ? a_name->val : "nouser";
fakeuser.pw_uid = a_uid ? (uid_t) atol(a_uid->val) : -1; 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) if (a_name == NULL)
errx(EX_NOUSER, "no such uid `%s'", a_uid->val); 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; return EXIT_SUCCESS;
} else if (mode == M_PRINT) } 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 * 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 * Special case: -N only displays & exits
*/ */
if (getarg(args, 'N') != NULL) 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; r = r1 = 1;
if (mode == M_ADD) { if (mode == M_ADD) {
@ -964,12 +971,12 @@ pw_password(struct userconf * cnf, struct cargs * args, char const * user)
static int static int
print_user(struct passwd * pwd, int pretty) print_user(struct passwd * pwd, int pretty, int v7)
{ {
if (!pretty) { if (!pretty) {
char buf[_UC_MAXLINE]; char buf[_UC_MAXLINE];
fmtpwent(buf, pwd); fmtpwentry(buf, pwd, v7 ? PWF_PASSWD : PWF_STANDARD);
fputs(buf, stdout); fputs(buf, stdout);
} else { } else {
int j; int j;