From 26fd040d4a8024f1777154c275796e235a0f7451 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sat, 10 Apr 2010 17:46:41 +0200 Subject: [PATCH] execute: introduce exec_command_set() for easy setting for command lines --- execute.c | 28 ++++++++++++++++++++++++++++ execute.h | 1 + 2 files changed, 29 insertions(+) diff --git a/execute.c b/execute.c index 46a98320..6cf6615d 100644 --- a/execute.c +++ b/execute.c @@ -1061,6 +1061,34 @@ void exec_command_append_list(ExecCommand **l, ExecCommand *e) { *l = e; } +int exec_command_set(ExecCommand *c, const char *path, ...) { + va_list ap; + char **l, *p; + + assert(c); + assert(path); + + va_start(ap, path); + l = strv_new_ap(path, ap); + va_end(ap); + + if (!l) + return -ENOMEM; + + if (!(p = strdup(path))) { + strv_free(l); + return -ENOMEM; + } + + free(c->path); + c->path = p; + + strv_free(c->argv); + c->argv = l; + + return 0; +} + 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 8275d636..18948173 100644 --- a/execute.h +++ b/execute.h @@ -169,6 +169,7 @@ 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); +int exec_command_set(ExecCommand *c, const char *path, ...); void exec_context_init(ExecContext *c); void exec_context_done(ExecContext *c); -- 2.39.5