diff options
author | Lennart Poettering <lennart@poettering.net> | 2010-04-10 17:46:41 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2010-04-10 18:00:34 +0200 |
commit | 26fd040d4a8024f1777154c275796e235a0f7451 (patch) | |
tree | 2c9deb6cf572255c552f7ee2d7f94fcd87e61a00 | |
parent | 1a63a750108b280070ed43e0dc02adb2c99c97cb (diff) |
execute: introduce exec_command_set() for easy setting for command lines
-rw-r--r-- | execute.c | 28 | ||||
-rw-r--r-- | execute.h | 1 |
2 files changed, 29 insertions, 0 deletions
@@ -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", @@ -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); |