diff options
| author | Denis Vlasenko <vda.linux@googlemail.com> | 2007-11-16 20:18:54 +0000 |
|---|---|---|
| committer | Denis Vlasenko <vda.linux@googlemail.com> | 2007-11-16 20:18:54 +0000 |
| commit | 7e3a5f58bcd2c40745ed7eaaa8952b29c3da4447 (patch) | |
| tree | 042c55bdaaa2ccbbed11eb474840ae727f61abec /util-linux | |
| parent | 7c2db5c1988da00c101cc2aeb8767f18a1fe9eb9 (diff) | |
| download | busybox-w32-7e3a5f58bcd2c40745ed7eaaa8952b29c3da4447.tar.gz busybox-w32-7e3a5f58bcd2c40745ed7eaaa8952b29c3da4447.tar.bz2 busybox-w32-7e3a5f58bcd2c40745ed7eaaa8952b29c3da4447.zip | |
dmesg,klogd: make code more readable
libbb: explain why we declare klogctl
libbb: move defs around so that order makes more sense
Diffstat (limited to 'util-linux')
| -rw-r--r-- | util-linux/dmesg.c | 60 |
1 files changed, 34 insertions, 26 deletions
diff --git a/util-linux/dmesg.c b/util-linux/dmesg.c index 90b327b4c..cdd385ede 100644 --- a/util-linux/dmesg.c +++ b/util-linux/dmesg.c | |||
| @@ -15,40 +15,48 @@ | |||
| 15 | int dmesg_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; | 15 | int dmesg_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; |
| 16 | int dmesg_main(int argc, char **argv) | 16 | int dmesg_main(int argc, char **argv) |
| 17 | { | 17 | { |
| 18 | int len; | ||
| 19 | char *buf; | ||
| 18 | char *size, *level; | 20 | char *size, *level; |
| 19 | int flags = getopt32(argv, "cs:n:", &size, &level); | 21 | int flags = getopt32(argv, "cs:n:", &size, &level); |
| 20 | 22 | ||
| 21 | if (flags & 4) { | 23 | if (flags & 4) { |
| 22 | if (klogctl(8, NULL, xatoul_range(level, 0, 10))) | 24 | if (klogctl(8, NULL, xatoul_range(level, 0, 10))) |
| 23 | bb_perror_msg_and_die("klogctl"); | 25 | bb_perror_msg_and_die("klogctl"); |
| 24 | } else { | 26 | return EXIT_SUCCESS; |
| 25 | int len; | 27 | } |
| 26 | char *buf; | ||
| 27 | |||
| 28 | len = (flags & 2) ? xatoul_range(size, 2, INT_MAX) : 16384; | ||
| 29 | buf = xmalloc(len); | ||
| 30 | len = klogctl(3 + (flags & 1), buf, len); | ||
| 31 | if (len < 0) | ||
| 32 | bb_perror_msg_and_die("klogctl"); | ||
| 33 | |||
| 34 | // Skip <#> at the start of lines, and make sure we end with a newline. | ||
| 35 | |||
| 36 | if (ENABLE_FEATURE_DMESG_PRETTY) { | ||
| 37 | int last = '\n'; | ||
| 38 | int in; | ||
| 39 | 28 | ||
| 40 | for (in = 0; in<len;) { | 29 | len = (flags & 2) ? xatoul_range(size, 2, INT_MAX) : 16384; |
| 41 | if (last == '\n' && buf[in] == '<') in += 3; | 30 | buf = xmalloc(len); |
| 42 | else bb_putchar(last = buf[in++]); | 31 | len = klogctl(3 + (flags & 1), buf, len); |
| 32 | if (len < 0) | ||
| 33 | bb_perror_msg_and_die("klogctl"); | ||
| 34 | if (len == 0) | ||
| 35 | return EXIT_SUCCESS; | ||
| 36 | |||
| 37 | /* Skip <#> at the start of lines, and make sure we end with a newline. */ | ||
| 38 | |||
| 39 | if (ENABLE_FEATURE_DMESG_PRETTY) { | ||
| 40 | int last = '\n'; | ||
| 41 | int in = 0; | ||
| 42 | |||
| 43 | do { | ||
| 44 | if (last == '\n' && buf[in] == '<') | ||
| 45 | in += 3; | ||
| 46 | else { | ||
| 47 | last = buf[in++]; | ||
| 48 | bb_putchar(last); | ||
| 43 | } | 49 | } |
| 44 | if (last != '\n') bb_putchar('\n'); | 50 | } while (in < len); |
| 45 | } else { | 51 | if (last != '\n') |
| 46 | write(1,buf,len); | 52 | bb_putchar('\n'); |
| 47 | if (len && buf[len-1]!='\n') bb_putchar('\n'); | 53 | } else { |
| 48 | } | 54 | full_write(STDOUT_FILENO, buf, len); |
| 49 | 55 | if (buf[len-1] != '\n') | |
| 50 | if (ENABLE_FEATURE_CLEAN_UP) free(buf); | 56 | bb_putchar('\n'); |
| 51 | } | 57 | } |
| 52 | 58 | ||
| 53 | return 0; | 59 | if (ENABLE_FEATURE_CLEAN_UP) free(buf); |
| 60 | |||
| 61 | return EXIT_SUCCESS; | ||
| 54 | } | 62 | } |
