From a7a08647b6d224425857834c34dffe4b49055acc Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Wed, 23 Dec 2020 02:32:13 +0100 Subject: ape: re-implement getlogin() by stating /proc/$pid/status --- sys/src/ape/lib/ap/plan9/getlogin.c | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/sys/src/ape/lib/ap/plan9/getlogin.c b/sys/src/ape/lib/ap/plan9/getlogin.c index 8d2d51ce0..958a130bb 100644 --- a/sys/src/ape/lib/ap/plan9/getlogin.c +++ b/sys/src/ape/lib/ap/plan9/getlogin.c @@ -1,21 +1,24 @@ -#include -#include -#include +#include "lib.h" #include -#include +#include +#include +#include "sys9.h" +#include "dir.h" char * -getlogin_r(char *buf, int len) +getlogin_r(char *user, int len) { - int f, n; + char name[32]; + Dir *dir; - f = open("/dev/user", O_RDONLY); - if(f < 0) - return 0; - n = read(f, buf, len); - buf[len-1] = 0; - close(f); - return (n>=0)? buf : 0; + snprintf(name, sizeof(name), "/proc/%d/status", getpid()); + if((dir = _dirstat(name)) == nil){ + _syserrno(); + return NULL; + } + snprintf(user, len, "%s", dir->uid); + free(dir); + return user; } char * -- cgit v1.2.3