10 static char *cached_uname;
11 static char *cached_gname;
13 static uid_t cached_uid;
14 static gid_t cached_gid;
19 if(cached_uname == NULL || uid != cached_uid)
21 struct passwd *passwd = getpwuid(uid);
26 cached_uname = malloc(
str_len(passwd->pw_name) + 1);
27 strcpy(cached_uname, passwd->pw_name);
32 ret = malloc(
str_len(cached_uname) + 1);
33 strcpy(ret, cached_uname);
40 if(cached_gname == NULL || gid != cached_gid)
42 struct group *group = getgrgid(gid);
47 cached_gname = malloc(
str_len(group->gr_name) + 1);
48 strcpy(cached_gname, group->gr_name);
53 ret = malloc(
str_len(cached_gname) + 1);
54 strcpy(ret, cached_gname);
#define str_len(s)
Shorthand for counting '\0' terminating strings. See _len for more info.
char * get_uname(uid_t uid)
char * get_gname(gid_t gid)