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 | } |