i3lock-color

The world's most popular non-default computer lockscreen.
Index Commits Files Refs README LICENSE
commit a3839aa69f643c34022dc456368126fe17b036fb
parent ec9a5f638b5aeaadc4f57356169b568f86d6f3d4
Author: Martin Stiborsky <martin.stiborsky@gmail.com>
Date:   Mon,  5 Jan 2015 11:46:11 +0100

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

Diffstat:
Mi3lock.c | 16++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
diff --git 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) {