]> git.sur5r.net Git - i3/i3lock/commitdiff
Fix overwrite of getopt optind 135/head
authorjakob <grandchild@gmx.net>
Thu, 6 Jul 2017 14:52:32 +0000 (16:52 +0200)
committerjakob <grandchild@gmx.net>
Thu, 6 Jul 2017 15:08:12 +0000 (17:08 +0200)
Using 'optind' in getopt_long() shadows actual 'optind' being provided
by getopt, thus prevents any future options change from using optind.

See https://www.gnu.org/software/libc/manual/html_node/Getopt-Long-Options.html#index-getopt_005flong

i3lock.c

index 87a77b1d004270a73ba74595765300716437bb6b..af678aa7abdd46cf23219f71f9554d5afad172ae 100644 (file)
--- a/i3lock.c
+++ b/i3lock.c
@@ -819,7 +819,7 @@ int main(int argc, char *argv[]) {
 #endif
     int curs_choice = CURS_NONE;
     int o;
-    int optind = 0;
+    int longoptind = 0;
     struct option longopts[] = {
         {"version", no_argument, NULL, 'v'},
         {"nofork", no_argument, NULL, 'n'},
@@ -843,7 +843,7 @@ int main(int argc, char *argv[]) {
         errx(EXIT_FAILURE, "pw->pw_name is NULL.\n");
 
     char *optstring = "hvnbdc:p:ui:teI:f";
-    while ((o = getopt_long(argc, argv, optstring, longopts, &optind)) != -1) {
+    while ((o = getopt_long(argc, argv, optstring, longopts, &longoptind)) != -1) {
         switch (o) {
             case 'v':
                 errx(EXIT_SUCCESS, "version " VERSION " © 2010 Michael Stapelberg");
@@ -894,7 +894,7 @@ int main(int argc, char *argv[]) {
                 ignore_empty_password = true;
                 break;
             case 0:
-                if (strcmp(longopts[optind].name, "debug") == 0)
+                if (strcmp(longopts[longoptind].name, "debug") == 0)
                     debug_mode = true;
                 break;
             case 'f':