Use user_from_uid(3) and group_from_gid(3) in a few more places
that do repeated lookups.
- todd
Index: sbin/fsck_ext2fs/inode.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ext2fs/inode.c,v
retrieving revision 1.27
diff -u -p -u -r1.27 inode.c
--- sbin/fsck_ext2fs/inode.c 16 Dec 2016 17:44:59 -0000 1.27
+++ sbin/fsck_ext2fs/inode.c 13 Sep 2018 15:38:59 -0000
@@ -559,10 +559,7 @@ void
pinode(ino_t ino)
{
struct ext2fs_dinode *dp;
- char *p;
-#ifndef SMALL
- struct passwd *pw;
-#endif
+ const char *p;
time_t t;
u_int32_t uid;
@@ -573,11 +570,11 @@ pinode(ino_t ino)
printf(" OWNER=");
uid = letoh16(dp->e2di_uid_low) | (letoh16(dp->e2di_uid_high) << 16);
#ifndef SMALL
- if ((pw = getpwuid((int)uid)) != 0)
- printf("%s ", pw->pw_name);
+ if ((p = user_from_uid(uid, 1)) != NULL)
+ printf("%s ", p);
else
#endif
- printf("%u ", (unsigned)uid);
+ printf("%u ", uid);
printf("MODE=%o\n", letoh16(dp->e2di_mode));
if (preen)
printf("%s: ", cdevname());
Index: sbin/fsck_ffs/inode.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ffs/inode.c,v
retrieving revision 1.48
diff -u -p -u -r1.48 inode.c
--- sbin/fsck_ffs/inode.c 16 Dec 2016 17:44:59 -0000 1.48
+++ sbin/fsck_ffs/inode.c 13 Sep 2018 15:38:59 -0000
@@ -525,10 +525,7 @@ void
pinode(ino_t ino)
{
union dinode *dp;
- char *p;
-#ifndef SMALL
- struct passwd *pw;
-#endif
+ const char *p;
time_t t;
printf(" I=%llu ", (unsigned long long)ino);
@@ -537,8 +534,8 @@ pinode(ino_t ino)
dp = ginode(ino);
printf(" OWNER=");
#ifndef SMALL
- if ((pw = getpwuid(DIP(dp, di_uid))) != 0)
- printf("%s ", pw->pw_name);
+ if ((p = user_from_uid(DIP(dp, di_uid), 1)) != NULL)
+ printf("%s ", p);
else
#endif
printf("%u ", (unsigned)DIP(dp, di_uid));
Index: sbin/fsdb/fsdbutil.c
===================================================================
RCS file: /cvs/src/sbin/fsdb/fsdbutil.c,v
retrieving revision 1.18
diff -u -p -u -r1.18 fsdbutil.c
--- sbin/fsdb/fsdbutil.c 29 Jul 2017 21:14:56 -0000 1.18
+++ sbin/fsdb/fsdbutil.c 13 Sep 2018 15:38:59 -0000
@@ -83,8 +83,7 @@ argcount(struct cmdtable *cmdp, int argc
void
printstat(const char *cp, ino_t inum, union dinode *dp)
{
- struct group *grp;
- struct passwd *pw;
+ const char *name;
time_t t;
char *p;
@@ -139,12 +138,12 @@ printstat(const char *cp, ino_t inum, un
printf("\n\tATIME=%15.15s %4.4s [%d nsec]\n", &p[4], &p[20],
DIP(dp, di_atimensec));
- if ((pw = getpwuid(DIP(dp, di_uid))))
- printf("OWNER=%s ", pw->pw_name);
+ if ((name = user_from_uid(DIP(dp, di_uid), 1)) != NULL)
+ printf("OWNER=%s ", name);
else
printf("OWNUID=%u ", DIP(dp, di_uid));
- if ((grp = getgrgid(DIP(dp, di_gid))))
- printf("GRP=%s ", grp->gr_name);
+ if ((name = group_from_gid(DIP(dp, di_gid), 1)) != NULL)
+ printf("GRP=%s ", name);
else
printf("GID=%u ", DIP(dp, di_gid));
Index: usr.bin/fstat/fuser.c
===================================================================
RCS file: /cvs/src/usr.bin/fstat/fuser.c,v
retrieving revision 1.6
diff -u -p -u -r1.6 fuser.c
--- usr.bin/fstat/fuser.c 16 Jan 2015 06:40:08 -0000 1.6
+++ usr.bin/fstat/fuser.c 13 Sep 2018 15:38:59 -0000
@@ -133,7 +133,7 @@ fuser_check(struct kinfo_file *kf)
static void
printfu(struct fuser *fu)
{
- struct passwd *pwd;
+ const char *name;
printf("%d", fu->pid);
fflush(stdout);
@@ -148,11 +148,11 @@ printfu(struct fuser *fu)
fprintf(stderr, "t");
if (uflg) {
- pwd = getpwuid(fu->uid);
- if (pwd != NULL)
- fprintf(stderr, "(%s)", pwd->pw_name);
+ name = user_from_uid(fu->uid, 1);
+ if (name != NULL)
+ fprintf(stderr, "(%s)", name);
else
- fprintf(stderr, "(%d)", fu->uid);
+ fprintf(stderr, "(%u)", fu->uid);
}
putchar(' ');
Index: usr.sbin/vmctl/vmctl.c
===================================================================
RCS file: /cvs/src/usr.sbin/vmctl/vmctl.c,v
retrieving revision 1.57
diff -u -p -u -r1.57 vmctl.c
--- usr.sbin/vmctl/vmctl.c 11 Sep 2018 04:03:16 -0000 1.57
+++ usr.sbin/vmctl/vmctl.c 13 Sep 2018 15:39:12 -0000
@@ -631,8 +631,7 @@ print_vm_info(struct vmop_info_result *l
char curmem[FMT_SCALED_STRSIZE];
char maxmem[FMT_SCALED_STRSIZE];
char user[16], group[16];
- struct passwd *pw;
- struct group *gr;
+ const char *name;
printf("%5s %5s %5s %7s %7s %7s %12s %s\n", "ID", "PID", "VCPUS",
"MAXMEM", "CURMEM", "TTY", "OWNER", "NAME");
@@ -642,22 +641,23 @@ print_vm_info(struct vmop_info_result *l
vir = &vmi->vir_info;
if (check_info_id(vir->vir_name, vir->vir_id)) {
/* get user name */
- if ((pw = getpwuid(vmi->vir_uid)) == NULL)
+ name = user_from_uid(vmi->vir_uid, 1);
+ if (name == NULL)
(void)snprintf(user, sizeof(user),
"%d", vmi->vir_uid);
else
- (void)strlcpy(user, pw->pw_name,
- sizeof(user));
+ (void)strlcpy(user, name, sizeof(user));
/* get group name */
if (vmi->vir_gid != -1) {
if (vmi->vir_uid == 0)
*user = '\0';
- if ((gr = getgrgid(vmi->vir_gid)) == NULL)
+ name = group_from_gid(vmi->vir_gid, 1);
+ if (name == NULL)
(void)snprintf(group, sizeof(group),
":%lld", vmi->vir_gid);
else
(void)snprintf(group, sizeof(group),
- ":%s", gr->gr_name);
+ ":%s", name);
(void)strlcat(user, group, sizeof(user));
}