diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2020-12-23 02:31:28 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2020-12-23 02:31:28 +0100 |
commit | dced7255ec86587b441dc2ac04a8fb268ac5b920 (patch) | |
tree | a5e5a37ea4729605a200cc7659d720a80802e1d6 /sys/src | |
parent | 2e6a5e704646109a7aaf7dd5a9d3a64475fd0055 (diff) |
libc: re-implement getuser() by stating /proc/$pid/status
The idea is to avoid the magic files that contain
per process information in devcons when possible.
It will make it easier to deprecate them in the future.
Diffstat (limited to 'sys/src')
-rw-r--r-- | sys/src/libc/9sys/getuser.c | 17 | ||||
-rw-r--r-- | sys/src/libc/9sys/mkfile | 1 | ||||
-rw-r--r-- | sys/src/libc/port/getuser.c | 21 | ||||
-rw-r--r-- | sys/src/libc/port/mkfile | 1 |
4 files changed, 18 insertions, 22 deletions
diff --git a/sys/src/libc/9sys/getuser.c b/sys/src/libc/9sys/getuser.c new file mode 100644 index 000000000..487a88aaf --- /dev/null +++ b/sys/src/libc/9sys/getuser.c @@ -0,0 +1,17 @@ +#include <u.h> +#include <libc.h> + +char * +getuser(void) +{ + static char user[64]; + char name[32]; + Dir *dir; + + snprint(name, sizeof(name), "/proc/%lud/status", (ulong)getpid()); + if((dir = dirstat(name)) == nil) + return "none"; + snprint(user, sizeof(user), "%s", dir->uid); + free(dir); + return user; +} diff --git a/sys/src/libc/9sys/mkfile b/sys/src/libc/9sys/mkfile index 686a7bd49..fe581f14b 100644 --- a/sys/src/libc/9sys/mkfile +++ b/sys/src/libc/9sys/mkfile @@ -24,6 +24,7 @@ OFILES=\ getenv.$O\ getpid.$O\ getppid.$O\ + getuser.$O\ getwd.$O\ idn.$O\ iounit.$O\ diff --git a/sys/src/libc/port/getuser.c b/sys/src/libc/port/getuser.c deleted file mode 100644 index ff3d2e2a1..000000000 --- a/sys/src/libc/port/getuser.c +++ /dev/null @@ -1,21 +0,0 @@ -#include <u.h> -#include <libc.h> - -char * -getuser(void) -{ - static char user[64]; - int fd; - int n; - - fd = open("/dev/user", OREAD|OCEXEC); - if(fd < 0) - return "none"; - n = read(fd, user, (sizeof user)-1); - close(fd); - if(n <= 0) - strcpy(user, "none"); - else - user[n] = 0; - return user; -} diff --git a/sys/src/libc/port/mkfile b/sys/src/libc/port/mkfile index 11aec6989..31c7c8c2d 100644 --- a/sys/src/libc/port/mkfile +++ b/sys/src/libc/port/mkfile @@ -32,7 +32,6 @@ CFILES=\ frexp.c\ getcallerpc.c\ getfields.c\ - getuser.c\ hangup.c\ hypot.c\ lnrand.c\ |