X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;ds=sidebyside;f=ucw%2Fshell%2Flogoutput.c;h=7b9ed80199fabb7cd47276d95008dc389416e405;hb=c0e08a14cb5681faac6bd4b2567fe153f2421273;hp=aa0c2f47f6dfdca8ebf9273eb00cb4db7a30461a;hpb=45201a4c724923aae01ed891be9e125b229ad189;p=libucw.git diff --git a/ucw/shell/logoutput.c b/ucw/shell/logoutput.c index aa0c2f47..7b9ed801 100644 --- a/ucw/shell/logoutput.c +++ b/ucw/shell/logoutput.c @@ -10,13 +10,13 @@ #undef LOCAL_DEBUG -#include "ucw/lib.h" -#include "ucw/log.h" -#include "ucw/mainloop.h" -#include "ucw/clists.h" -#include "ucw/getopt.h" -#include "ucw/conf.h" -#include "ucw/process.h" +#include +#include +#include +#include +#include +#include +#include #include #include @@ -27,6 +27,8 @@ #include static uns max_line = 1024; +static int launch_finish_messages = 1; +static int nonzero_status_message = 1; static struct cf_section cfsec_logoutput = { CF_ITEMS { @@ -197,26 +199,32 @@ const struct option my_long_opts[] = { { "logfile", 1, 0, 'f'}, { "logname", 1, 0, 'n'}, { "descriptor", 1, 0, 'l'}, + { "nv", 0, 0, 'q'}, + { "nonverbose", 0, 0, 'q'}, + { "non-verbose", 0, 0, 'q'}, + { "non_verbose", 0, 0, 'q'}, + { "silent", 0, 0, 's'}, { NULL, 0, 0, 0} }; #undef CF_USAGE_TAB -#define CF_USAGE_TAB "\t\t" +#define CF_USAGE_TAB "\t " static char usage[] = "Usage:\n" - "logoutput -h|--help\t\tThis help.\n" - "logoutput -i|--input\tRead filedescriptors and log them.\n" - "\t\t\t\tdefault: stdin at level I.\n" + "logoutput -h|--help\t\t This help.\n" + "logoutput -i|--input\t Read file descriptors and log them.\n" + "\t\t\t\t default: stdin at level I.\n" "logoutput [--] [arguments for cmd ...]\n" - "\t\t\t\tOpen filedescriptors for writing for\n" - "\t\t\t\tcommand and log them.\n" - "\t\t\t\tdefault: stdout:I, stderr:W.\n" + "\t\t\t\t Open file descriptors for writing for command and log them.\n" + "\t\t\t\t default: stdout:I, stderr:W.\n\n" "Options:\n" CF_USAGE - "-n, --logname \t\t\tUse as program name in logs.\n" - "-l, --descriptor :\tOpen filedescriptor and log it\n" - "\t\t\t\t\tat level (discards defaults).\n" - "-f, --logfile \t\t\tLog to file .\n"; + "-n, --logname \t\t Use as program name in logs.\n" + "-l, --descriptor : Open file descriptor and log it at level (replaces defaults).\n" + "-f, --logfile \t\t Log to file .\n" + "-q, --nv, --nonverbose\t\t Suppress launching and successful finish messages.\n" + "-s, --silent\t\t\t Suppress launching message and all finish messages.\n" + "\t\t\t\t (i.e., no warning if it terminates with a nonzero exit code or by a signal)\n"; int main(int argc, char **argv) @@ -284,6 +292,13 @@ main(int argc, char **argv) } break; + case 's': + nonzero_status_message = 0; + /* fallthrough */ + case 'q': + launch_finish_messages = 0; + break; + default: optind--; goto opt_done; @@ -409,7 +424,8 @@ opt_done: } buf2[-1] = 0; - msg(L_INFO, "Launching command: %s", buf); + if (launch_finish_messages) + msg(L_INFO, "Launching command: %s", buf); } /* Set logname. */ @@ -437,10 +453,12 @@ opt_done: } if (format_exit_status(buf, status)) { - msg(L_WARN, "Child %s", buf); + if (nonzero_status_message) + msg(L_WARN, "Child %s", buf); return WIFEXITED(status) ? WEXITSTATUS(status) : 127; } else { - msg(L_INFO, "Child terminated successfully."); + if (launch_finish_messages) + msg(L_INFO, "Child terminated successfully."); return 0; } }