Hi Marek, I had actually sent a dmesg related patch yesterday, you might want to make it easier on Karel and resubmit this one after (and if) applied. http://www.spinics.net/lists/util-linux-ng/msg04011.html Cheers. On Fri, 2011-02-04 at 15:08 +0100, Marek Polacek wrote: > Signed-off-by: Marek Polacek <mpolacek@xxxxxxxxxx> > --- > sys-utils/dmesg.c | 86 ++++++++++++++++++++++++----------------------------- > 1 files changed, 39 insertions(+), 47 deletions(-) > > diff --git a/sys-utils/dmesg.c b/sys-utils/dmesg.c > index f1a7dcb..d5c399a 100644 > --- a/sys-utils/dmesg.c > +++ b/sys-utils/dmesg.c > @@ -8,7 +8,8 @@ > * by Peeter Joot. This was also suggested by John Hudson. > * 1999-02-22 Arkadiusz Mikiewicz <misiek@xxxxxxxxxx> > * - added Native Language Support > - * > + * 2011-02-03 Marek Polacek <mpolacek@xxxxxxxxxx> > + * - cleanups > */ > > /* > @@ -29,40 +30,37 @@ > * Only function 3 is allowed to non-root processes. > */ > > -#include <linux/unistd.h> > -#include <stdio.h> > +#include <err.h> > +#include <ctype.h> > #include <getopt.h> > +#include <stdbool.h> > +#include <stdio.h> > #include <stdlib.h> > -# include <sys/klog.h> > - > +#include <sys/klog.h> > #include "nls.h" > +#include "xalloc.h" > > -static char *progname; > - > -static void > -usage(void) { > - fprintf(stderr, > - _("Usage: %s [-c] [-n level] [-r] [-s bufsize]\n"), progname); > +static void __attribute__ ((noreturn)) usage(void) > +{ > + fputs(_("Usage: dmesg [-c] [-n level] [-r] [-s bufsize]\n"), stderr); > + exit(EXIT_FAILURE); > } > > -int > -main(int argc, char *argv[]) { > +int main(int argc, char *argv[]) > +{ > char *buf; > - int sz; > - int bufsize = 0; > - int i; > - int n; > - int c; > - int level = 0; > - int lastc; > - int cmd = 3; /* Read all messages in the ring buffer */ > - int raw = 0; > + int sz; > + int bufsize = 0; > + int n; > + int c; > + int level = 0; > + int cmd = 3; /* Read all messages in the ring buffer */ > + bool raw = false; > > setlocale(LC_ALL, ""); > bindtextdomain(PACKAGE, LOCALEDIR); > textdomain(PACKAGE); > > - progname = argv[0]; > while ((c = getopt(argc, argv, "crn:s:")) != -1) { > switch (c) { > case 'c': > @@ -70,37 +68,31 @@ main(int argc, char *argv[]) { > break; > case 'n': > cmd = 8; /* Set level of messages */ > - level = atoi(optarg); > + level = strtol(optarg, NULL, 10); > break; > case 'r': > - raw = 1; > + raw = true; > break; > case 's': > - bufsize = atoi(optarg); > + bufsize = strtol(optarg, NULL, 10); > if (bufsize < 4096) > bufsize = 4096; > break; > case '?': > default: > usage(); > - exit(1); > } > } > argc -= optind; > - argv += optind; > > - if (argc > 1) { > + if (argc > 1) > usage(); > - exit(1); > - } > > if (cmd == 8) { > n = klogctl(cmd, NULL, level); > - if (n < 0) { > - perror("klogctl"); > - exit(1); > - } > - exit(0); > + if (n < 0) > + err(EXIT_FAILURE, _("klogctl failed")); > + return EXIT_SUCCESS; > } > > if (!bufsize) { > @@ -111,14 +103,14 @@ main(int argc, char *argv[]) { > > if (bufsize) { > sz = bufsize + 8; > - buf = (char *) malloc(sz * sizeof(char)); > + buf = xmalloc(sz); > n = klogctl(cmd, buf, sz); > } else { > sz = 16392; > while (1) { > - buf = (char *) malloc(sz * sizeof(char)); > + buf = xmalloc(sz); > n = klogctl(3, buf, sz); /* read only */ > - if (n != sz || sz > (1<<28)) > + if (n != sz || sz > (1 << 28)) > break; > free(buf); > sz *= 4; > @@ -128,16 +120,14 @@ main(int argc, char *argv[]) { > n = klogctl(cmd, buf, sz); /* read and clear */ > } > > - if (n < 0) { > - perror("klogctl"); > - exit(1); > - } > + if (n < 0) > + err(EXIT_FAILURE, _("klogctl failed")); > > - lastc = '\n'; > - for (i = 0; i < n; i++) { > + char lastc = '\n'; > + for (int i = 0; i < n; i++) { > if (!raw && (i == 0 || buf[i - 1] == '\n') && buf[i] == '<') { > i++; > - while (buf[i] >= '0' && buf[i] <= '9') > + while (isdigit(buf[i])) > i++; > if (buf[i] == '>') > i++; > @@ -145,8 +135,10 @@ main(int argc, char *argv[]) { > lastc = buf[i]; > putchar(lastc); > } > + > if (lastc != '\n') > putchar('\n'); > free(buf); > - return 0; > + > + return EXIT_SUCCESS; > } -- To unsubscribe from this list: send the line "unsubscribe util-linux" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html