getting current user with whoami like function rather than from env variable

pull/3/head
Martin Stiborsky 2015-01-05 11:46:11 +01:00
parent ec9a5f638b
commit a3839aa69f
1 changed files with 12 additions and 4 deletions

View File

@ -8,6 +8,7 @@
*/
#include <stdio.h>
#include <stdlib.h>
#include <pwd.h>
#include <string.h>
#include <unistd.h>
#include <stdbool.h>
@ -658,8 +659,18 @@ static void raise_loop(xcb_window_t window) {
}
}
char* whoami(void) {
uid_t uid = geteuid();
struct passwd *pw = getpwuid(uid);
if (pw) {
return pw->pw_name;
} else {
errx(EXIT_FAILURE, "Username not known!\n");
}
}
int main(int argc, char *argv[]) {
char *username;
char *username = whoami();
char *image_path = NULL;
int ret;
struct pam_conv conv = {conv_callback, NULL};
@ -684,9 +695,6 @@ int main(int argc, char *argv[]) {
{NULL, no_argument, NULL, 0}
};
if ((username = getenv("USER")) == NULL)
errx(EXIT_FAILURE, "USER environment variable not set, please set it.\n");
char *optstring = "hvnbdc:p:ui:teI:f";
while ((o = getopt_long(argc, argv, optstring, longopts, &optind)) != -1) {
switch (o) {