diff options
author | Karel Zak | 2012-07-26 14:02:15 +0200 |
---|---|---|
committer | Karel Zak | 2012-07-26 14:02:15 +0200 |
commit | 6e9b06cc0552b2c2105243903009785906c3da2e (patch) | |
tree | f1012713c3659af204ed907ba2ef1722ee5fbbe5 /sys-utils/dmesg.c | |
parent | docs: tell about irc channel (diff) | |
download | kernel-qcow2-util-linux-6e9b06cc0552b2c2105243903009785906c3da2e.tar.gz kernel-qcow2-util-linux-6e9b06cc0552b2c2105243903009785906c3da2e.tar.xz kernel-qcow2-util-linux-6e9b06cc0552b2c2105243903009785906c3da2e.zip |
dmesg: improve err handling code
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'sys-utils/dmesg.c')
-rw-r--r-- | sys-utils/dmesg.c | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/sys-utils/dmesg.c b/sys-utils/dmesg.c index a3d95f1b7..1c5de2a5e 100644 --- a/sys-utils/dmesg.c +++ b/sys-utils/dmesg.c @@ -985,9 +985,10 @@ static int read_kmsg(struct dmesg_control *ctl) int main(int argc, char *argv[]) { char *buf = NULL; - ssize_t n, r; int c; int console_level = 0; + int klog_rc = 0; + ssize_t n; static struct dmesg_control ctl = { .filename = NULL, .action = SYSLOG_ACTION_READ_ALL, @@ -1127,8 +1128,6 @@ int main(int argc, char *argv[]) } argc -= optind; argv += optind; - n = 0; - r = 0; if (argc > 1) usage(stderr); @@ -1149,32 +1148,32 @@ int main(int argc, char *argv[]) if (ctl.method == DMESG_METHOD_KMSG && init_kmsg(&ctl) != 0) ctl.method = DMESG_METHOD_SYSLOG; - r = read_buffer(&ctl, &buf); - if (r > 0) - print_buffer(&ctl, buf, r); + n = read_buffer(&ctl, &buf); + if (n > 0) + print_buffer(&ctl, buf, n); if (!ctl.mmap_buff) free(buf); + if (n < 0) + err(EXIT_FAILURE, _("read kernel buffer failed")); + if (ctl.kmsg >= 0) + close(ctl.kmsg); break; case SYSLOG_ACTION_CLEAR: case SYSLOG_ACTION_CONSOLE_OFF: case SYSLOG_ACTION_CONSOLE_ON: - n = klogctl(ctl.action, NULL, 0); + klog_rc = klogctl(ctl.action, NULL, 0); break; case SYSLOG_ACTION_CONSOLE_LEVEL: - n = klogctl(ctl.action, NULL, console_level); + klog_rc = klogctl(ctl.action, NULL, console_level); break; default: errx(EXIT_FAILURE, _("unsupported command")); break; } - if (ctl.kmsg >= 0) - close(ctl.kmsg); - if (n < 0) + if (klog_rc) err(EXIT_FAILURE, _("klogctl failed")); - if (r < 0) - err(EXIT_FAILURE, _("read_buffer failed")); return EXIT_SUCCESS; } |