summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--execute.c14
-rw-r--r--execute.h1
-rw-r--r--load-fragment.c9
3 files changed, 17 insertions, 7 deletions
diff --git a/execute.c b/execute.c
index 8720af9e25..4c6aa4eea9 100644
--- a/execute.c
+++ b/execute.c
@@ -749,6 +749,20 @@ void exec_command_dump_list(ExecCommand *c, FILE *f, const char *prefix) {
exec_command_dump(c, f, prefix);
}
+void exec_command_append_list(ExecCommand **l, ExecCommand *e) {
+ ExecCommand *end;
+
+ assert(l);
+ assert(e);
+
+ if (*l) {
+ /* It's kinda important that we keep the order here */
+ LIST_FIND_TAIL(ExecCommand, command, *l, end);
+ LIST_INSERT_AFTER(ExecCommand, command, *l, end, e);
+ } else
+ *l = e;
+}
+
static const char* const exec_output_table[_EXEC_OUTPUT_MAX] = {
[EXEC_OUTPUT_CONSOLE] = "console",
[EXEC_OUTPUT_NULL] = "null",
diff --git a/execute.h b/execute.h
index 737973dad9..3e332105c1 100644
--- a/execute.h
+++ b/execute.h
@@ -154,6 +154,7 @@ void exec_command_free_array(ExecCommand **c, unsigned n);
char *exec_command_line(ExecCommand *c);
void exec_command_dump(ExecCommand *c, FILE *f, const char *prefix);
void exec_command_dump_list(ExecCommand *c, FILE *f, const char *prefix);
+void exec_command_append_list(ExecCommand **l, ExecCommand *e);
void exec_context_init(ExecContext *c);
void exec_context_done(ExecContext *c);
diff --git a/load-fragment.c b/load-fragment.c
index 4183b5c8fa..9bc9b2b6a1 100644
--- a/load-fragment.c
+++ b/load-fragment.c
@@ -328,7 +328,7 @@ static int config_parse_exec(
void *data,
void *userdata) {
- ExecCommand **e = data, *ee, *nce = NULL;
+ ExecCommand **e = data, *nce = NULL;
char **n;
char *w;
unsigned k;
@@ -367,12 +367,7 @@ static int config_parse_exec(
if (!(nce->path = strdup(n[0])))
goto fail;
- if (*e) {
- /* It's kinda important that we keep the order here */
- LIST_FIND_TAIL(ExecCommand, command, *e, ee);
- LIST_INSERT_AFTER(ExecCommand, command, *e, ee, nce);
- } else
- *e = nce;
+ exec_command_append_list(e, nce);
return 0;