diff options
author | Rafael G. Martins <rafael@rafaelmartins.eng.br> | 2017-02-07 23:51:17 +0100 |
---|---|---|
committer | Rafael G. Martins <rafael@rafaelmartins.eng.br> | 2017-02-07 23:51:17 +0100 |
commit | 68aa9e1b26b0af916423def6892de7fdb8a03048 (patch) | |
tree | dcd975b13e3dbff78fd2eb0e982db1edb9462fa4 /src/blogc-make/exec.c | |
parent | e7b579ed92ac640133e4a7768a37a3ed02f66fb8 (diff) | |
download | blogc-68aa9e1b26b0af916423def6892de7fdb8a03048.tar.gz blogc-68aa9e1b26b0af916423def6892de7fdb8a03048.tar.bz2 blogc-68aa9e1b26b0af916423def6892de7fdb8a03048.zip |
make: fixed cmd quoting. read runserver settings from env
Diffstat (limited to 'src/blogc-make/exec.c')
-rw-r--r-- | src/blogc-make/exec.c | 52 |
1 files changed, 41 insertions, 11 deletions
diff --git a/src/blogc-make/exec.c b/src/blogc-make/exec.c index bb0a323..ee86f15 100644 --- a/src/blogc-make/exec.c +++ b/src/blogc-make/exec.c @@ -184,7 +184,9 @@ bm_exec_build_blogc_cmd(bm_settings_t *settings, bc_trie_t *variables, // use blogc binary from environment, if provided const char *blogc_bin = getenv("BLOGC"); if (blogc_bin != NULL) { - bc_string_append(rv, blogc_bin); + char *tmp = bc_shell_quote(blogc_bin); + bc_string_append(rv, tmp); + free(tmp); } else { bc_string_append(rv, "blogc"); @@ -305,25 +307,53 @@ bm_exec_blogc(bm_settings_t *settings, bc_trie_t *variables, bool listing, int bm_exec_blogc_runserver(bm_settings_t *settings, bool verbose) { - // use blogc binary from environment, if provided + bc_string_t *cmd = bc_string_new(); + + // use blogc-runserver binary from environment, if provided const char *blogc_runserver = getenv("BLOGC_RUNSERVER"); + if (blogc_runserver != NULL) { + char *tmp = bc_shell_quote(blogc_runserver); + bc_string_append(cmd, tmp); + free(tmp); + } + else { + bc_string_append(cmd, "blogc-runserver"); + } - char *cmd = bc_strdup_printf("%s -t %s -p %s -m %s %s", - blogc_runserver != NULL ? blogc_runserver : "blogc-runserver", - bc_trie_lookup(settings->settings, "runserver_host"), - bc_trie_lookup(settings->settings, "runserver_port"), - bc_trie_lookup(settings->settings, "runserver_threads"), - bc_trie_lookup(settings->settings, "output_dir")); + const char *runserver_host_tmp = getenv("RUNSERVER_HOST"); + if (runserver_host_tmp != NULL) { + char *tmp = bc_shell_quote(runserver_host_tmp); + bc_string_append_printf(cmd, " -t %s", tmp); + free(tmp); + } + + const char *runserver_port_tmp = getenv("RUNSERVER_PORT"); + if (runserver_port_tmp != NULL) { + char *tmp = bc_shell_quote(runserver_port_tmp); + bc_string_append_printf(cmd, " -p %s", tmp); + free(tmp); + } + + const char *runserver_threads_tmp = getenv("RUNSERVER_THREADS"); + if (runserver_threads_tmp != NULL) { + char *tmp = bc_shell_quote(runserver_threads_tmp); + bc_string_append_printf(cmd, " -m %s", tmp); + free(tmp); + } + + char *tmp = bc_shell_quote(bc_trie_lookup(settings->settings, "output_dir")); + bc_string_append_printf(cmd, " %s", tmp); + free(tmp); if (verbose) - printf("%s\n", cmd); + printf("%s\n", cmd->str); else printf("\n"); fflush(stdout); // we don't need pipes to run blogc-runserver, because it is "interactive" - int rv = WEXITSTATUS(system(cmd)); - free(cmd); + int rv = WEXITSTATUS(system(cmd->str)); + bc_string_free(cmd, true); if (rv != 0) { if (rv == 127) { |