out = parse(command, ifd);
if (!out) {
+ /* parse error? */
return 0;
}
- ret = (*exec)(out);
+ /* out == "": parsed ok but not all needed variables known, skip */
+ ret = out[0] ? (*exec)(out) : 1;
free(out);
if (ret != 1) {
if (option_mask32 & (OPT_no_act|OPT_verbose)) {
puts(str);
}
- /* FIXME: is it true that we can reach this place with str = ""? */
- /* how? in execute() parse() may return "", then we do (*exec)(""); */
- /* Please add a comment... */
if (!(option_mask32 & OPT_no_act)) {
pid_t child;
int status;
fflush(NULL);
- switch (child = fork()) {
+ child = fork();
+ switch (child) {
case -1: /* failure */
return 0;
case 0: /* child */
}
buf = xasprintf("run-parts /etc/network/if-%s.d", opt);
- if (doit(buf) != 1) {
- return 0;
- }
- return 1;
+ /* heh, we don't bother free'ing it */
+ return doit(buf);
}
static int check(char *str)
/* If the mapping script exited successfully, try to
* grab a line of output and use that as the name of the
* logical interface. */
- char *new_logical = (char *)xmalloc(MAX_INTERFACE_LENGTH);
+ char *new_logical = xmalloc(MAX_INTERFACE_LENGTH);
if (fgets(new_logical, MAX_INTERFACE_LENGTH, out)) {
/* If we are able to read a line of output from the script,
llist_add_to_end(&target_list, argv[optind]);
}
-
/* Update the interfaces */
while (target_list) {
llist_t *iface_list;
state_fp = xfopen("/var/run/ifstate", "w");
while (state_list) {
if (state_list->data) {
- fputs(state_list->data, state_fp);
- fputc('\n', state_fp);
+ fprintf(state_fp, "%s\n", state_list->data);
}
state_list = state_list->link;
}