Two more pontential places where user_from_uid(3) makes sense.
These were in my large diff but got lost chopping it up into smaller
pieces.
- todd
Index: usr.bin/write/write.c
===================================================================
RCS file: /cvs/src/usr.bin/write/write.c,v
retrieving revision 1.33
diff -u -p -u -r1.33 write.c
--- usr.bin/write/write.c 5 Feb 2016 19:00:39 -0000 1.33
+++ usr.bin/write/write.c 13 Sep 2018 15:39:12 -0000
@@ -224,20 +224,16 @@ term_chk(char *tty, int *msgsokP, time_t
void
do_write(char *tty, char *mytty, uid_t myuid)
{
- char *login, *nows;
- struct passwd *pwd;
+ const char *login;
+ char *nows;
time_t now;
char path[PATH_MAX], host[HOST_NAME_MAX+1], line[512];
gid_t gid;
int fd;
/* Determine our login name before the we reopen() stdout */
- if ((login = getlogin()) == NULL) {
- if ((pwd = getpwuid(myuid)))
- login = pwd->pw_name;
- else
- login = "???";
- }
+ if ((login = getlogin()) == NULL)
+ login = user_from_uid(myuid, 0);
(void)snprintf(path, sizeof(path), "%s%s", _PATH_DEV, tty);
fd = open(path, O_WRONLY, 0666);
Index: usr.sbin/quot/quot.c
===================================================================
RCS file: /cvs/src/usr.sbin/quot/quot.c,v
retrieving revision 1.31
diff -u -p -u -r1.31 quot.c
--- usr.sbin/quot/quot.c 26 Jul 2018 13:37:40 -0000 1.31
+++ usr.sbin/quot/quot.c 13 Sep 2018 15:39:12 -0000
@@ -227,8 +227,8 @@ static struct user *
user(uid_t uid)
{
int i;
- struct passwd *pwd;
struct user *usr;
+ const char *name;
while (1) {
for (usr = users + (uid&(nusers - 1)), i = nusers;
@@ -237,10 +237,10 @@ user(uid_t uid)
if (!usr->name) {
usr->uid = uid;
- if (!(pwd = getpwuid(uid)))
+ if ((name = user_from_uid(uid, 1)) == NULL)
asprintf(&usr->name, "#%u", uid);
else
- usr->name = strdup(pwd->pw_name);
+ usr->name = strdup(name);
if (!usr->name)
err(1, "allocate users");
return usr;
@@ -368,6 +368,8 @@ douser(int fd, struct fs *super, char *n
struct user *usr, *usrs;
union dinode *dp;
int n;
+
+ setpassent(1);
maxino = super->fs_ncg * super->fs_ipg - 1;
for (inode = 0; inode < maxino; inode++) {