diff options
-rw-r--r-- | networking/inetd.c | 50 |
1 files changed, 15 insertions, 35 deletions
diff --git a/networking/inetd.c b/networking/inetd.c index 9c17c920c..d76b75d5a 100644 --- a/networking/inetd.c +++ b/networking/inetd.c @@ -570,9 +570,8 @@ static void setup(servtab_t *sep) static char *nextline(void) { char *cp; - FILE *fd = fconfig; - if (fgets(line, LINE_SIZE, fd) == NULL) + if (fgets(line, LINE_SIZE, fconfig) == NULL) return NULL; cp = strchr(line, '\n'); if (cp) @@ -586,7 +585,7 @@ static char *skip(char **cpp) /* int report; */ char *start; /* erp: */ - if (*cpp == NULL) { + if (cp == NULL) { /* if (report) */ /* bb_error_msg("syntax error in inetd config file"); */ return NULL; @@ -596,9 +595,7 @@ static char *skip(char **cpp) /* int report; */ while (*cp == ' ' || *cp == '\t') cp++; if (*cp == '\0') { - int c; - - c = getc(fconfig); + int c = getc(fconfig); ungetc(c, fconfig); if (c == ' ' || c == '\t') { cp = nextline(); @@ -606,7 +603,6 @@ static char *skip(char **cpp) /* int report; */ goto again; } *cpp = NULL; - /* goto erp; */ return NULL; } start = cp; @@ -614,8 +610,6 @@ static char *skip(char **cpp) /* int report; */ cp++; if (*cp != '\0') *cp++ = '\0'; - /* if ((*cpp = cp) == NULL) */ - /* goto erp; */ *cpp = cp; return start; @@ -623,7 +617,7 @@ static char *skip(char **cpp) /* int report; */ static servtab_t *new_servtab(void) { - return xmalloc(sizeof(servtab_t)); + return xzalloc(sizeof(servtab_t)); } static servtab_t *dupconfig(servtab_t *sep) @@ -632,7 +626,6 @@ static servtab_t *dupconfig(servtab_t *sep) int argc; newtab = new_servtab(); - memset(newtab, 0, sizeof(servtab_t)); newtab->se_service = xstrdup(sep->se_service); newtab->se_socktype = sep->se_socktype; newtab->se_family = sep->se_family; @@ -668,17 +661,14 @@ static servtab_t *getconfigent(void) sep = new_servtab(); - /* memset(sep, 0, sizeof *sep); */ more: - /* freeconfig(sep); */ - - while ((cp = nextline()) && *cp == '#') /* skip comment line */; + while ((cp = nextline()) && *cp == '#') + continue; /* skip comment lines */ if (cp == NULL) { - /* free(sep); */ + free(sep); return NULL; } - memset((char *) sep, 0, sizeof *sep); arg = skip(&cp); if (arg == NULL) { /* A blank line. */ @@ -776,9 +766,7 @@ static servtab_t *getconfigent(void) } else sep->se_max = toomany; } - sep->se_wait = strcmp(arg, "wait") == 0; - /* if ((arg = skip(&cp, 1)) == NULL) */ - /* goto more; */ + sep->se_wait = (strcmp(arg, "wait") == 0); sep->se_user = xxstrdup(skip(&cp)); arg = strchr(sep->se_user, '.'); if (arg == NULL) @@ -788,10 +776,10 @@ static servtab_t *getconfigent(void) sep->se_group = xstrdup(arg); } - arg = skip(&cp); - sep->se_server = xxstrdup(arg); - if (strcmp(sep->se_server, "internal") == 0) { + sep->se_server = xxstrdup(skip(&cp)); #ifdef INETD_FEATURE_ENABLED + /* sep->se_bi = NULL; - done by new_servtab() */ + if (strcmp(sep->se_server, "internal") == 0) { const struct builtin *bi; for (bi = builtins; bi->bi_service; bi++) @@ -804,22 +792,14 @@ static servtab_t *getconfigent(void) } sep->se_bi = bi; sep->se_wait = 0; /* = bi->bi_wait; - always 0 */ -#else - bb_perror_msg("internal service %s unknown", sep->se_service); - goto more; -#endif } -#ifdef INETD_FEATURE_ENABLED - else - sep->se_bi = NULL; #endif argc = 0; - for (; cp; arg = skip(&cp)) { - if (argc < MAXARGV) - sep->se_argv[argc++] = xxstrdup(arg); + while ((arg = skip(&cp)) != NULL && argc < MAXARGV) { + sep->se_argv[argc++] = xxstrdup(arg); } - while (argc <= MAXARGV) - sep->se_argv[argc++] = NULL; + /* while (argc <= MAXARGV) */ + /* sep->se_argv[argc++] = NULL; - done by new_servtab() */ /* * Now that we've processed the entire line, check if the hostname |