diff options
author | Martin Stiborsky <martin.stiborsky@gmail.com> | 2015-01-05 11:46:11 +0100 |
---|---|---|
committer | Martin Stiborsky <martin.stiborsky@gmail.com> | 2015-01-05 11:46:11 +0100 |
commit | a3839aa69f643c34022dc456368126fe17b036fb (patch) | |
tree | cfe3328d7cb501def6c466c8532cd1d39c6495de | |
parent | ec9a5f638b5aeaadc4f57356169b568f86d6f3d4 (diff) |
getting current user with whoami like function rather than from env variable
-rw-r--r-- | i3lock.c | 16 |
1 files changed, 12 insertions, 4 deletions
@@ -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) { |