summaryrefslogtreecommitdiff
path: root/sys/src/ape/lib/ap/plan9/getlogin.c
blob: 958a130bbb6cbca377f1f06db91220548d92bfec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include "lib.h"
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include "sys9.h"
#include "dir.h"

char *
getlogin_r(char *user, int len)
{
	char name[32];
	Dir *dir;

	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 *
getlogin(void)
{
	static char buf[NAME_MAX+1];

	return getlogin_r(buf, sizeof buf);
}