From 63fcc2bc3c1b37227cc9f5b9b8ca45ce091a1477 Mon Sep 17 00:00:00 2001 From: rsc Date: Mon, 12 Jun 2006 17:21:10 +0000 Subject: avoid pw library --- src/lib9/_p9dir.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src/lib9/_p9dir.c') diff --git a/src/lib9/_p9dir.c b/src/lib9/_p9dir.c index 57f46489..517dc773 100644 --- a/src/lib9/_p9dir.c +++ b/src/lib9/_p9dir.c @@ -77,6 +77,7 @@ disksize(int fd, int dev) #define _HAVESTGEN #endif +int _p9usepwlibrary = 1; /* * Caching the last group and passwd looked up is * a significant win (stupidly enough) on most systems. @@ -123,11 +124,11 @@ _p9dir(struct stat *lst, struct stat *st, char *name, Dir *d, char **str, char * /* user */ if(p && st->st_uid == uid && p->pw_uid == uid) ; - else{ + else if(_p9usepwlibrary){ p = getpwuid(st->st_uid); uid = st->st_uid; } - if(p == nil){ + if(p == nil || st->st_uid != uid || p->pw_uid != uid){ snprint(tmp, sizeof tmp, "%d", (int)st->st_uid); s = tmp; }else @@ -146,11 +147,11 @@ _p9dir(struct stat *lst, struct stat *st, char *name, Dir *d, char **str, char * /* group */ if(g && st->st_gid == gid && g->gr_gid == gid) ; - else{ + else if(_p9usepwlibrary){ g = getgrgid(st->st_gid); gid = st->st_gid; } - if(g == nil){ + if(g == nil || st->st_gid != gid || g->gr_gid != gid){ snprint(tmp, sizeof tmp, "%d", (int)st->st_gid); s = tmp; }else -- cgit v1.2.3