helpers.c:run_interactive() - Check arguments and return values better.

Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
This commit is contained in:
Joachim Nilsson committed 2014-11-26 17:08:00 +01:00
1 parent 3a2cf30f47
commit 8349909f60
1 file changed
+17 -6
+17 -6
View File
@@ -501,12 +501,19 @@ int run_interactive(char *cmd, char *fmt, ...)
va_list ap; va_list ap;
FILE *fp = tmpfile(); FILE *fp = tmpfile();
va_start(ap, fmt); if (!cmd) {
vsnprintf(line, sizeof(line), fmt, ap); errno = EINVAL;
va_end(ap); return 1;
}
if (fmt) {
va_start(ap, fmt);
vsnprintf(line, sizeof(line), fmt, ap);
va_end(ap);
if (fmt)
print_desc("", line); print_desc("", line);
}
if (fp && !debug) { if (fp && !debug) {
oldout = dup(STDOUT_FILENO); oldout = dup(STDOUT_FILENO);
olderr = dup(STDERR_FILENO); olderr = dup(STDERR_FILENO);
@@ -515,11 +522,15 @@ int run_interactive(char *cmd, char *fmt, ...)
} }
status = run(cmd); status = run(cmd);
if (fp && !debug) { if (fp && !debug) {
dup2(oldout, STDOUT_FILENO); if (oldout >= 0)
dup2(olderr, STDERR_FILENO); dup2(oldout, STDOUT_FILENO);
if (olderr >= 0)
dup2(olderr, STDERR_FILENO);
} }
if (fmt) if (fmt)
print_result(status); print_result(status);
if (fp && !debug) { if (fp && !debug) {
size_t len, written; size_t len, written;