X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fjournal%2Fcat.c;h=2e236f0004cfc14d7998a0cb90cd649e9c340532;hp=cdd46bcf5b7b41e3733faa2a17a83fc648ae3b6c;hb=b6e676ce41508e2aeea22202fc8f234126177f52;hpb=5430f7f2bc7330f3088b894166bf3524a067e3d8 diff --git a/src/journal/cat.c b/src/journal/cat.c index cdd46bcf5..2e236f000 100644 --- a/src/journal/cat.c +++ b/src/journal/cat.c @@ -21,13 +21,12 @@ #include #include -#include #include #include #include -#include +#include -#include +#include "systemd/sd-journal.h" #include "util.h" #include "build.h" @@ -36,18 +35,15 @@ static char *arg_identifier = NULL; static int arg_priority = LOG_INFO; static bool arg_level_prefix = true; -static int help(void) { - +static void help(void) { printf("%s [OPTIONS...] {COMMAND} ...\n\n" "Execute process with stdout/stderr connected to the journal.\n\n" " -h --help Show this help\n" " --version Show package version\n" " -t --identifier=STRING Set syslog identifier\n" " -p --priority=PRIORITY Set priority value (0..7)\n" - " --level-prefix=BOOL Control whether level prefix shall be parsed\n", - program_invocation_short_name); - - return 0; + " --level-prefix=BOOL Control whether level prefix shall be parsed\n" + , program_invocation_short_name); } static int parse_argv(int argc, char *argv[]) { @@ -63,7 +59,7 @@ static int parse_argv(int argc, char *argv[]) { { "identifier", required_argument, NULL, 't' }, { "priority", required_argument, NULL, 'p' }, { "level-prefix", required_argument, NULL, ARG_LEVEL_PREFIX }, - { NULL, 0, NULL, 0 } + {} }; int c; @@ -71,7 +67,7 @@ static int parse_argv(int argc, char *argv[]) { assert(argc >= 0); assert(argv); - while ((c = getopt_long(argc, argv, "+ht:p:", options, NULL)) >= 0) { + while ((c = getopt_long(argc, argv, "+ht:p:", options, NULL)) >= 0) switch (c) { @@ -81,7 +77,6 @@ static int parse_argv(int argc, char *argv[]) { case ARG_VERSION: puts(PACKAGE_STRING); - puts(DISTRIBUTION); puts(SYSTEMD_FEATURES); return 0; @@ -91,10 +86,8 @@ static int parse_argv(int argc, char *argv[]) { arg_identifier = NULL; else { arg_identifier = strdup(optarg); - if (!arg_identifier) { - log_error("Out of memory."); - return -ENOMEM; - } + if (!arg_identifier) + return log_oom(); } break; @@ -118,11 +111,12 @@ static int parse_argv(int argc, char *argv[]) { break; } - default: - log_error("Unknown option code %c", c); + case '?': return -EINVAL; + + default: + assert_not_reached("Unhandled option"); } - } return 1; } @@ -139,7 +133,7 @@ int main(int argc, char *argv[]) { fd = sd_journal_stream_fd(arg_identifier, arg_priority, arg_level_prefix); if (fd < 0) { - log_error("Failed to create stream fd: %s", strerror(-fd)); + log_error_errno(fd, "Failed to create stream fd: %m"); r = fd; goto finish; } @@ -148,13 +142,13 @@ int main(int argc, char *argv[]) { if (dup3(fd, STDOUT_FILENO, 0) < 0 || dup3(fd, STDERR_FILENO, 0) < 0) { - log_error("Failed to duplicate fd: %m"); + log_error_errno(errno, "Failed to duplicate fd: %m"); r = -errno; goto finish; } if (fd >= 3) - close_nointr_nofail(fd); + safe_close(fd); fd = -1; @@ -169,14 +163,11 @@ int main(int argc, char *argv[]) { if (saved_stderr >= 0) dup3(saved_stderr, STDERR_FILENO, 0); - log_error("Failed to execute process: %s", strerror(-r)); + log_error_errno(r, "Failed to execute process: %m"); finish: - if (fd >= 0) - close_nointr_nofail(fd); - - if (saved_stderr >= 0) - close_nointr_nofail(saved_stderr); + safe_close(fd); + safe_close(saved_stderr); return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; }