summaryrefslogtreecommitdiffstats
path: root/sys-utils/dmesg.c
diff options
context:
space:
mode:
authorSami Kerola2012-07-25 21:15:44 +0200
committerKarel Zak2012-07-26 13:51:44 +0200
commitc1b2cb70039208e37164ab5f32aa76dd18fb4f43 (patch)
treecaaa03fe4eeef54d915ee3fafc9326efb6574e02 /sys-utils/dmesg.c
parentwdctl: fix conflicting types on old systems (diff)
downloadkernel-qcow2-util-linux-c1b2cb70039208e37164ab5f32aa76dd18fb4f43.tar.gz
kernel-qcow2-util-linux-c1b2cb70039208e37164ab5f32aa76dd18fb4f43.tar.xz
kernel-qcow2-util-linux-c1b2cb70039208e37164ab5f32aa76dd18fb4f43.zip
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 <kerolasa@iki.fi>
Diffstat (limited to 'sys-utils/dmesg.c')
-rw-r--r--sys-utils/dmesg.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/sys-utils/dmesg.c b/sys-utils/dmesg.c
index c4d1f9f38..a3d95f1b7 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;
}