diff options
author | Tavian Barnes <tavianator@tavianator.com> | 2020-03-13 16:26:51 -0400 |
---|---|---|
committer | Tavian Barnes <tavianator@tavianator.com> | 2020-03-15 12:48:33 -0400 |
commit | 10975c723ed0c5a6764fda3d4f539a36033dcb0d (patch) | |
tree | 15d36bffb2ac490a095ae66a2b4f04bf28860986 | |
parent | 56a862fded43b528eadc232d37a8684b48ef702c (diff) | |
download | bfs-10975c723ed0c5a6764fda3d4f539a36033dcb0d.tar.xz |
exec: Warn if a command dies abnormally
-rw-r--r-- | exec.c | 11 | ||||
-rw-r--r-- | exec.h | 4 |
2 files changed, 6 insertions, 9 deletions
@@ -37,7 +37,7 @@ /** Print some debugging info. */ BFS_FORMATTER(2, 3) static void bfs_exec_debug(const struct bfs_exec *execbuf, const char *format, ...) { - if (!(execbuf->flags & BFS_EXEC_DEBUG)) { + if (!(execbuf->cmdline->debug & DEBUG_EXEC)) { return; } @@ -123,6 +123,7 @@ struct bfs_exec *parse_bfs_exec(char **argv, enum bfs_exec_flags flags, const st } execbuf->flags = flags; + execbuf->cmdline = cmdline; execbuf->argv = NULL; execbuf->argc = 0; execbuf->argv_cap = 0; @@ -133,10 +134,6 @@ struct bfs_exec *parse_bfs_exec(char **argv, enum bfs_exec_flags flags, const st execbuf->wd_len = 0; execbuf->ret = 0; - if (cmdline->debug & DEBUG_EXEC) { - execbuf->flags |= BFS_EXEC_DEBUG; - } - size_t i; for (i = 1; ; ++i) { const char *arg = argv[i]; @@ -391,9 +388,9 @@ fail: } } else if (WIFSIGNALED(wstatus)) { int sig = WTERMSIG(wstatus); - bfs_exec_debug(execbuf, "Command '%s' terminated by signal %d\n", execbuf->argv[0], sig); + bfs_warning(execbuf->cmdline, "Command '${ex}%s${rs}' terminated by signal %d\n", execbuf->argv[0], sig); } else { - bfs_exec_debug(execbuf, "Command '%s' terminated abnormally\n", execbuf->argv[0]); + bfs_warning(execbuf->cmdline, "Command '${ex}%s${rs}' terminated abnormally\n", execbuf->argv[0]); } errno = 0; @@ -36,8 +36,6 @@ enum bfs_exec_flags { BFS_EXEC_CHDIR = 1 << 1, /** Pass multiple files at once to the command (-exec ... {} +). */ BFS_EXEC_MULTI = 1 << 2, - /** Print debugging information (-D exec). */ - BFS_EXEC_DEBUG = 1 << 3, }; /** @@ -47,6 +45,8 @@ struct bfs_exec { /** Flags for this exec buffer. */ enum bfs_exec_flags flags; + /** The overall command line. */ + const struct cmdline *cmdline; /** Command line template. */ char **tmpl_argv; /** Command line template size. */ |