1
0
Fork 0
mirror of https://github.com/pygos/init.git synced 2024-11-22 03:09:46 +01:00

Cleanup: remove flag mechanism from config parser entirely

Signed-off-by: David Oberhollenzer <goliath@infraroot.at>
This commit is contained in:
David Oberhollenzer 2020-04-24 12:28:06 +02:00
parent 70ea16b0b4
commit 5307b95b93
3 changed files with 15 additions and 24 deletions

View file

@ -27,7 +27,7 @@ typedef struct {
*/ */
unsigned int allow_block : 1; unsigned int allow_block : 1;
int (*handle)(void *obj, char *arg, rdline_t *rd, int flags); int (*handle)(void *obj, char *arg, rdline_t *rd);
} cfg_param_t; } cfg_param_t;
/* /*
@ -92,11 +92,10 @@ int pack_argv(char *str);
/* /*
Parse a configuration file containing '<keyword> [arguments...]' lines. Parse a configuration file containing '<keyword> [arguments...]' lines.
The cfgobj and flags are passed to the callback in the params array. The cfgobj is passed to the callback in the params array.
Returns zero on success. Returns zero on success.
*/ */
int rdcfg(void *cfgobj, rdline_t *rd, const cfg_param_t *params, size_t count, int rdcfg(void *cfgobj, rdline_t *rd, const cfg_param_t *params, size_t count);
int flags);
#endif /* LIBCONFIG_H */ #endif /* LIBCONFIG_H */

View file

@ -43,10 +43,9 @@ static int try_pack_argv(char *str, rdline_t *rd)
return count; return count;
} }
static int svc_desc(void *user, char *arg, rdline_t *rd, int flags) static int svc_desc(void *user, char *arg, rdline_t *rd)
{ {
service_t *svc = user; service_t *svc = user;
(void)flags;
if (try_unescape(arg, rd)) if (try_unescape(arg, rd))
return -1; return -1;
@ -54,10 +53,9 @@ static int svc_desc(void *user, char *arg, rdline_t *rd, int flags)
return svc->desc == NULL ? -1 : 0; return svc->desc == NULL ? -1 : 0;
} }
static int svc_tty(void *user, char *arg, rdline_t *rd, int flags) static int svc_tty(void *user, char *arg, rdline_t *rd)
{ {
service_t *svc = user; service_t *svc = user;
(void)flags;
if (strncmp(arg, "truncate", 8) == 0 && isspace(arg[8])) { if (strncmp(arg, "truncate", 8) == 0 && isspace(arg[8])) {
svc->flags |= SVC_FLAG_TRUNCATE_OUT; svc->flags |= SVC_FLAG_TRUNCATE_OUT;
@ -73,11 +71,10 @@ static int svc_tty(void *user, char *arg, rdline_t *rd, int flags)
return svc->ctty == NULL ? -1 : 0; return svc->ctty == NULL ? -1 : 0;
} }
static int svc_exec(void *user, char *arg, rdline_t *rd, int flags) static int svc_exec(void *user, char *arg, rdline_t *rd)
{ {
service_t *svc = user; service_t *svc = user;
exec_t *e, *end; exec_t *e, *end;
(void)flags;
svc->flags |= SVC_FLAG_HAS_EXEC; svc->flags |= SVC_FLAG_HAS_EXEC;
@ -104,10 +101,9 @@ static int svc_exec(void *user, char *arg, rdline_t *rd, int flags)
return 0; return 0;
} }
static int svc_before(void *user, char *arg, rdline_t *rd, int flags) static int svc_before(void *user, char *arg, rdline_t *rd)
{ {
service_t *svc = user; service_t *svc = user;
(void)flags;
if (svc->before != NULL) { if (svc->before != NULL) {
fprintf(stderr, "%s: %zu: 'before' dependencies respecified\n", fprintf(stderr, "%s: %zu: 'before' dependencies respecified\n",
@ -123,10 +119,9 @@ static int svc_before(void *user, char *arg, rdline_t *rd, int flags)
return (svc->num_before < 0) ? -1 : 0; return (svc->num_before < 0) ? -1 : 0;
} }
static int svc_after(void *user, char *arg, rdline_t *rd, int flags) static int svc_after(void *user, char *arg, rdline_t *rd)
{ {
service_t *svc = user; service_t *svc = user;
(void)flags;
if (svc->after != NULL) { if (svc->after != NULL) {
fprintf(stderr, "%s: %zu: 'after' dependencies respecified\n", fprintf(stderr, "%s: %zu: 'after' dependencies respecified\n",
@ -142,11 +137,10 @@ static int svc_after(void *user, char *arg, rdline_t *rd, int flags)
return (svc->num_after < 0) ? -1 : 0; return (svc->num_after < 0) ? -1 : 0;
} }
static int svc_type(void *user, char *arg, rdline_t *rd, int flags) static int svc_type(void *user, char *arg, rdline_t *rd)
{ {
service_t *svc = user; service_t *svc = user;
int count = try_pack_argv(arg, rd); int count = try_pack_argv(arg, rd);
(void)flags;
if (count < 1) if (count < 1)
return -1; return -1;
@ -190,11 +184,10 @@ fail_limit:
return -1; return -1;
} }
static int svc_target(void *user, char *arg, rdline_t *rd, int flags) static int svc_target(void *user, char *arg, rdline_t *rd)
{ {
service_t *svc = user; service_t *svc = user;
int target; int target;
(void)flags;
if (try_unescape(arg, rd)) if (try_unescape(arg, rd))
return -1; return -1;
@ -253,7 +246,7 @@ service_t *rdsvc(int dirfd, const char *filename)
svc->id = -1; svc->id = -1;
if (rdcfg(svc, &rd, svc_params, if (rdcfg(svc, &rd, svc_params,
sizeof(svc_params) / sizeof(svc_params[0]), 0)) { sizeof(svc_params) / sizeof(svc_params[0]))) {
goto fail; goto fail;
} }

View file

@ -47,8 +47,7 @@ static int splitkv(rdline_t *rd, char **k, char **v)
return 0; return 0;
} }
int rdcfg(void *cfgobj, rdline_t *rd, const cfg_param_t *params, size_t count, int rdcfg(void *cfgobj, rdline_t *rd, const cfg_param_t *params, size_t count)
int flags)
{ {
const cfg_param_t *p; const cfg_param_t *p;
char *key, *value; char *key, *value;
@ -67,7 +66,7 @@ int rdcfg(void *cfgobj, rdline_t *rd, const cfg_param_t *params, size_t count,
; ;
if (*value != '\0') { if (*value != '\0') {
ret = p->handle(cfgobj, value, rd, flags); ret = p->handle(cfgobj, value, rd);
if (ret) if (ret)
return -1; return -1;
} }
@ -75,7 +74,7 @@ int rdcfg(void *cfgobj, rdline_t *rd, const cfg_param_t *params, size_t count,
while ((ret = rdline(rd)) == 0) { while ((ret = rdline(rd)) == 0) {
if (strcmp(rd->line, "}") == 0) if (strcmp(rd->line, "}") == 0)
break; break;
if (p->handle(cfgobj, rd->line, rd, flags)) if (p->handle(cfgobj, rd->line, rd))
return -1; return -1;
} }
@ -83,7 +82,7 @@ int rdcfg(void *cfgobj, rdline_t *rd, const cfg_param_t *params, size_t count,
return -1; return -1;
if (ret > 0) if (ret > 0)
goto fail_bra; goto fail_bra;
} else if (p->handle(cfgobj, value, rd, flags)) { } else if (p->handle(cfgobj, value, rd)) {
return -1; return -1;
} }
} }