diff options
Diffstat (limited to 'src/sysvinit.c')
-rw-r--r-- | src/sysvinit.c | 60 |
1 files changed, 31 insertions, 29 deletions
diff --git a/src/sysvinit.c b/src/sysvinit.c index faa504a..965bce2 100644 --- a/src/sysvinit.c +++ b/src/sysvinit.c @@ -366,37 +366,39 @@ envsetup () static void sysvinit_setenv (char const *data, int size) { - int i, j; + int i, j; - while (size) { - char const *var = data; - size_t len = strlen (var) + 1; - size -= len; - if (size < 0) - break; - data += len; - if (strncmp (var, "INIT_", 5) != 0) - continue; - len = strcspn (var, "="); - for (i = ENVI_AVAIL; i < NR_ENVHINT; i++) { - char *s = sysvinit_environ_hint[i]; - if (s) { - for (j = 0; *s && j < len; j++, s++) - if (var[j] != *s) break; - if (*s != '=' || j != len) - continue; - free (sysvinit_environ_hint[i]); - } - - if (var[len] == '=') - sysvinit_environ_hint[i] = xstrdup (var); - else - for (j = i + 1; j < NR_ENVHINT; j++, i++) - sysvinit_environ_hint[i] = - sysvinit_environ_hint[j]; - break; - } + while (size) + { + char const *var = data; + size_t len = strlen (var) + 1; + size -= len; + if (size < 0) + break; + data += len; + if (strncmp (var, "INIT_", 5) != 0) + continue; + len = strcspn (var, "="); + for (i = ENVI_AVAIL; i < NR_ENVHINT; i++) + { + char *s = sysvinit_environ_hint[i]; + if (s) + { + for (j = 0; *s && j < len; j++, s++) + if (var[j] != *s) break; + if (*s != '=' || j != len) + continue; + free (sysvinit_environ_hint[i]); + } + + if (var[len] == '=') + sysvinit_environ_hint[i] = grecs_strdup (var); + else + for (j = i + 1; j < NR_ENVHINT; j++, i++) + sysvinit_environ_hint[i] = sysvinit_environ_hint[j]; + break; } + } } char *init_fifo = INIT_FIFO; |