summaryrefslogtreecommitdiff
path: root/i3lock.c
diff options
context:
space:
mode:
authorMartin Stiborsky <martin.stiborsky@gmail.com>2015-01-05 11:46:11 +0100
committerMartin Stiborsky <martin.stiborsky@gmail.com>2015-01-05 11:46:11 +0100
commita3839aa69f643c34022dc456368126fe17b036fb (patch)
treecfe3328d7cb501def6c466c8532cd1d39c6495de /i3lock.c
parentec9a5f638b5aeaadc4f57356169b568f86d6f3d4 (diff)
getting current user with whoami like function rather than from env variable
Diffstat (limited to 'i3lock.c')
-rw-r--r--i3lock.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/i3lock.c b/i3lock.c
index 71b02ee..fd32f97 100644
--- a/i3lock.c
+++ b/i3lock.c
@@ -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) {