sysctl: sysctl -a was still misbehaving, fix it
authorDenis Vlasenko <vda.linux@googlemail.com>
Wed, 15 Oct 2008 13:50:24 +0000 (13:50 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Wed, 15 Oct 2008 13:50:24 +0000 (13:50 -0000)
procps/sysctl.c

index 60d9c0a..860c840 100644 (file)
@@ -235,8 +235,11 @@ static int sysctl_display_all(const char *path)
 
 static void sysctl_dots_to_slashes(char *name)
 {
-       char *cptr, *last_good;
-       char *end = name + strlen(name) - 1;
+       char *cptr, *last_good, *end;
+
+       /* It can be good as-is! */
+       if (access(name, F_OK) == 0)
+               return;
 
        /* Example from bug 3894:
         * net.ipv4.conf.eth0.100.mc_forwarding ->
@@ -246,6 +249,7 @@ static void sysctl_dots_to_slashes(char *name)
         * we replaced even one . -> /, start over again,
         * but never replace dots before the position
         * where replacement occurred. */
+       end = name + strlen(name) - 1;
        last_good = name - 1;
  again:
        cptr = end;