mirror of
https://github.com/troglobit/finit.git
synced 2026-11-06 15:51:03 +00:00
helpers.c:run_interactive() - Check arguments and return values better.
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
This commit is contained in:
1 parent
3a2cf30f47
commit
8349909f60
1 file changed
+17
-6
@@ -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;
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user