sysctl: sysctl -a was still misbehaving, fix it

This commit is contained in:
Denis Vlasenko 2008-10-15 13:50:24 +00:00
parent 9299305756
commit a9c3f7a19e

View File

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