X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=lib%2Fruncmd.c;h=0204e1db8fb7cea46d0f9d275699eef4d530d0b1;hb=ab3b3f178718c0ae7b5738e987e350537574d2e6;hp=c7fe85c47502e57404469c1b728c8ee12c78123e;hpb=cad27e97e6370f96903d42aaf345c099af0a03bd;p=libucw.git diff --git a/lib/runcmd.c b/lib/runcmd.c index c7fe85c4..0204e1db 100644 --- a/lib/runcmd.c +++ b/lib/runcmd.c @@ -16,34 +16,37 @@ #include void NONRET -exec_command_v(byte *cmd, va_list args) +exec_command_v(const char *cmd, va_list args) { - va_list cargs = args; + va_list cargs; + va_copy(cargs, args); int cnt = 2; - byte *arg; - while (arg = va_arg(cargs, byte *)) + char *arg; + while (arg = va_arg(cargs, char *)) cnt++; - char **argv = alloca(sizeof(byte *) * cnt); - argv[0] = cmd; + va_end(cargs); + char **argv = alloca(sizeof(char *) * cnt); + argv[0] = (char *)cmd; cnt = 1; - cargs = args; - while (arg = va_arg(cargs, byte *)) + va_copy(cargs, args); + while (arg = va_arg(cargs, char *)) argv[cnt++] = arg; + va_end(cargs); argv[cnt] = NULL; execv(cmd, argv); - byte echo[256]; + char echo[256]; echo_command_v(echo, sizeof(echo), cmd, args); - log(L_ERROR, "Cannot execute %s: %m", echo); + msg(L_ERROR, "Cannot execute %s: %m", echo); exit(255); } int -run_command_v(byte *cmd, va_list args) +run_command_v(const char *cmd, va_list args) { pid_t p = fork(); if (p < 0) { - log(L_ERROR, "fork() failed: %m"); + msg(L_ERROR, "fork() failed: %m"); return 0; } else if (!p) @@ -51,15 +54,15 @@ run_command_v(byte *cmd, va_list args) else { int stat; - byte msg[EXIT_STATUS_MSG_SIZE]; + char status_msg[EXIT_STATUS_MSG_SIZE]; p = waitpid(p, &stat, 0); if (p < 0) die("waitpid() failed: %m"); - if (format_exit_status(msg, stat)) + if (format_exit_status(status_msg, stat)) { - byte echo[256]; + char echo[256]; echo_command_v(echo, sizeof(echo), cmd, args); - log(L_ERROR, "`%s' failed: %s", echo, msg); + msg(L_ERROR, "`%s' failed: %s", echo, status_msg); return 0; } return 1; @@ -67,12 +70,11 @@ run_command_v(byte *cmd, va_list args) } void -echo_command_v(byte *buf, int size, byte *cmd, va_list args) +echo_command_v(char *buf, int size, const char *cmd, va_list args) { - byte *limit = buf + size - 4; - byte *p = buf; - byte *arg = cmd; - va_list cargs = args; + char *limit = buf + size - 4; + char *p = buf; + const char *arg = cmd; do { int l = strlen(arg); @@ -87,12 +89,12 @@ echo_command_v(byte *buf, int size, byte *cmd, va_list args) memcpy(p, arg, l); p += l; } - while (arg = va_arg(cargs, byte *)); + while (arg = va_arg(args, char *)); *p = 0; } int -run_command(byte *cmd, ...) +run_command(const char *cmd, ...) { va_list args; va_start(args, cmd); @@ -102,7 +104,7 @@ run_command(byte *cmd, ...) } void NONRET -exec_command(byte *cmd, ...) +exec_command(const char *cmd, ...) { va_list args; va_start(args, cmd); @@ -110,7 +112,7 @@ exec_command(byte *cmd, ...) } void -echo_command(byte *buf, int len, byte *cmd, ...) +echo_command(char *buf, int len, const char *cmd, ...) { va_list args; va_start(args, cmd); @@ -122,7 +124,7 @@ echo_command(byte *buf, int len, byte *cmd, ...) int main(void) { - byte msg[1024]; + char msg[1024]; echo_command(msg, sizeof(msg), "/bin/echo", "datel", "strakapoud", NULL); log(L_INFO, "Running <%s>", msg); run_command("/bin/echo", "datel", "strakapoud", NULL);