From: Sami Kerola Date: Wed, 25 Jul 2012 19:15:44 +0000 (+0200) Subject: dmesg: inform user when klogctl() or read_buffer() fails X-Git-Tag: v2.22-rc1~35 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c1b2cb70039208e37164ab5f32aa76dd18fb4f43;p=thirdparty%2Futil-linux.git dmesg: inform user when klogctl() or read_buffer() fails Fix to small regression which made 'dmesg --clear' not to error when running without root privileges. Same happen with '-D' and few other options as well. Signed-off-by: Sami Kerola --- diff --git a/sys-utils/dmesg.c b/sys-utils/dmesg.c index c4d1f9f38e..a3d95f1b77 100644 --- a/sys-utils/dmesg.c +++ b/sys-utils/dmesg.c @@ -985,7 +985,7 @@ static int read_kmsg(struct dmesg_control *ctl) int main(int argc, char *argv[]) { char *buf = NULL; - ssize_t n; + ssize_t n, r; int c; int console_level = 0; static struct dmesg_control ctl = { @@ -1128,6 +1128,7 @@ int main(int argc, char *argv[]) argc -= optind; argv += optind; n = 0; + r = 0; if (argc > 1) usage(stderr); @@ -1148,9 +1149,9 @@ int main(int argc, char *argv[]) if (ctl.method == DMESG_METHOD_KMSG && init_kmsg(&ctl) != 0) ctl.method = DMESG_METHOD_SYSLOG; - n = read_buffer(&ctl, &buf); - if (n > 0) - print_buffer(&ctl, buf, n); + r = read_buffer(&ctl, &buf); + if (r > 0) + print_buffer(&ctl, buf, r); if (!ctl.mmap_buff) free(buf); break; @@ -1170,8 +1171,10 @@ int main(int argc, char *argv[]) if (ctl.kmsg >= 0) close(ctl.kmsg); - if (n < 0 && ctl.method == DMESG_METHOD_SYSLOG) + if (n < 0) err(EXIT_FAILURE, _("klogctl failed")); + if (r < 0) + err(EXIT_FAILURE, _("read_buffer failed")); return EXIT_SUCCESS; }