summaryrefslogtreecommitdiff
path: root/sys/src
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2020-12-23 02:31:28 +0100
committercinap_lenrek <cinap_lenrek@felloff.net>2020-12-23 02:31:28 +0100
commitdced7255ec86587b441dc2ac04a8fb268ac5b920 (patch)
treea5e5a37ea4729605a200cc7659d720a80802e1d6 /sys/src
parent2e6a5e704646109a7aaf7dd5a9d3a64475fd0055 (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.c17
-rw-r--r--sys/src/libc/9sys/mkfile1
-rw-r--r--sys/src/libc/port/getuser.c21
-rw-r--r--sys/src/libc/port/mkfile1
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\