ref: e94d21ee3a2d7d053899d490b115ba763d0a1bc2
dir: /sys/src/libauth/procsetuser.c/
#include <u.h> #include <libc.h> #include <auth.h> int procsetuser(char *user) { char name[32]; Dir dir; nulldir(&dir); dir.uid = user; snprint(name, sizeof(name), "/proc/%lud/ctl", (ulong)getpid()); if(dirwstat(name, &dir) < 0){ /* * this is backwards compatibility code as * devproc initially didnt allow changing * the user to none. */ int fd; if(strcmp(user, "none") != 0) return -1; fd = open("#c/user", OWRITE|OCEXEC); if(fd < 0) return -1; if(write(fd, "none", 4) != 4){ close(fd); return -1; } close(fd); } return 0; }