mirror of
https://github.com/pygos/init.git
synced 2024-11-22 03:09:46 +01:00
Minor cleanup
Signed-off-by: David Oberhollenzer <david.oberhollenzer@tele2.at>
This commit is contained in:
parent
6642b2b2bf
commit
20e08db1a5
1 changed files with 33 additions and 50 deletions
|
@ -49,6 +49,16 @@ static char *try_strdup(const char *str, rdline_t *rd)
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int try_pack_argv(char *str, rdline_t *rd)
|
||||||
|
{
|
||||||
|
int count = pack_argv(str);
|
||||||
|
if (count < 0) {
|
||||||
|
fprintf(stderr, "%s: %zu: malformed string constant\n",
|
||||||
|
rd->filename, rd->lineno);
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
static int svc_desc(service_t *svc, char *arg, rdline_t *rd)
|
static int svc_desc(service_t *svc, char *arg, rdline_t *rd)
|
||||||
{
|
{
|
||||||
if (try_unescape(arg, rd))
|
if (try_unescape(arg, rd))
|
||||||
|
@ -78,12 +88,9 @@ static int svc_exec(service_t *svc, char *arg, rdline_t *rd)
|
||||||
|
|
||||||
strcpy(e->args, arg);
|
strcpy(e->args, arg);
|
||||||
|
|
||||||
e->argc = pack_argv(e->args);
|
e->argc = try_pack_argv(e->args, rd);
|
||||||
if (e->argc < 0) {
|
if (e->argc < 0)
|
||||||
fprintf(stderr, "%s: %zu: malformed string constant\n",
|
|
||||||
rd->filename, rd->lineno);
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
|
||||||
|
|
||||||
if (svc->exec == NULL) {
|
if (svc->exec == NULL) {
|
||||||
svc->exec = e;
|
svc->exec = e;
|
||||||
|
@ -107,14 +114,8 @@ static int svc_before(service_t *svc, char *arg, rdline_t *rd)
|
||||||
if (svc->before == NULL)
|
if (svc->before == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
svc->num_before = pack_argv(svc->before);
|
svc->num_before = try_pack_argv(svc->before, rd);
|
||||||
if (svc->num_before < 0) {
|
return (svc->num_before < 0) ? -1 : 0;
|
||||||
fprintf(stderr, "%s: %zu: malformed string constant\n",
|
|
||||||
rd->filename, rd->lineno);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int svc_after(service_t *svc, char *arg, rdline_t *rd)
|
static int svc_after(service_t *svc, char *arg, rdline_t *rd)
|
||||||
|
@ -129,24 +130,16 @@ static int svc_after(service_t *svc, char *arg, rdline_t *rd)
|
||||||
if (svc->after == NULL)
|
if (svc->after == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
svc->num_after = pack_argv(svc->after);
|
svc->num_after = try_pack_argv(svc->after, rd);
|
||||||
if (svc->num_after < 0) {
|
return (svc->num_after < 0) ? -1 : 0;
|
||||||
fprintf(stderr, "%s: %zu: malformed string constant\n",
|
|
||||||
rd->filename, rd->lineno);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int svc_type(service_t *svc, char *arg, rdline_t *rd)
|
static int svc_type(service_t *svc, char *arg, rdline_t *rd)
|
||||||
{
|
{
|
||||||
char *ptr;
|
int count = try_pack_argv(arg, rd);
|
||||||
|
|
||||||
for (ptr = arg; *ptr != ' ' && *ptr != '\0'; ++ptr)
|
if (count < 1)
|
||||||
;
|
return -1;
|
||||||
if (*ptr == ' ')
|
|
||||||
*(ptr++) = '\0';
|
|
||||||
|
|
||||||
svc->type = svc_type_from_string(arg);
|
svc->type = svc_type_from_string(arg);
|
||||||
|
|
||||||
|
@ -156,41 +149,31 @@ static int svc_type(service_t *svc, char *arg, rdline_t *rd)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (*ptr != '\0') {
|
if (count > 1) {
|
||||||
|
arg += strlen(arg) + 1;
|
||||||
|
|
||||||
switch (svc->type) {
|
switch (svc->type) {
|
||||||
case SVC_RESPAWN:
|
case SVC_RESPAWN:
|
||||||
for (arg = ptr; *ptr != ' ' && *ptr != '\0'; ++ptr)
|
|
||||||
;
|
|
||||||
if (*ptr == ' ')
|
|
||||||
*(ptr++) = '\0';
|
|
||||||
|
|
||||||
if (strcmp(arg, "limit") != 0)
|
if (strcmp(arg, "limit") != 0)
|
||||||
goto fail_limit;
|
goto fail_limit;
|
||||||
|
arg += strlen(arg) + 1;
|
||||||
|
|
||||||
svc->rspwn_limit = 0;
|
if (count > 3)
|
||||||
|
goto fail_args;
|
||||||
if (!isdigit(*ptr))
|
if (!isdigit(*arg))
|
||||||
goto fail_limit;
|
goto fail_limit;
|
||||||
|
svc->rspwn_limit = atoi(arg);
|
||||||
while (isdigit(*ptr)) {
|
break;
|
||||||
svc->rspwn_limit *= 10;
|
|
||||||
svc->rspwn_limit += *(ptr++) - '0';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (*ptr == '\0')
|
|
||||||
break;
|
|
||||||
if (*ptr != ' ')
|
|
||||||
goto fail_limit;
|
|
||||||
/* fall-through */
|
|
||||||
default:
|
default:
|
||||||
fprintf(stderr,
|
goto fail_args;
|
||||||
"%s: %zu: unexpected extra arguments\n",
|
|
||||||
rd->filename, rd->lineno);
|
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
fail_args:
|
||||||
|
fprintf(stderr, "%s: %zu: unexpected extra arguments\n",
|
||||||
|
rd->filename, rd->lineno);
|
||||||
|
return -1;
|
||||||
fail_limit:
|
fail_limit:
|
||||||
fprintf(stderr, "%s: %zu: expected 'limit <value>' after 'respawn'\n",
|
fprintf(stderr, "%s: %zu: expected 'limit <value>' after 'respawn'\n",
|
||||||
rd->filename, rd->lineno);
|
rd->filename, rd->lineno);
|
||||||
|
|
Loading…
Reference in a new issue