diff options
author | James Sullins <jcsullins@gmail.com> | 2012-06-24 07:07:42 -0500 |
---|---|---|
committer | Chirayu Desai <cdesai@cyanogenmod.org> | 2013-04-01 21:50:03 +0530 |
commit | edee93dc5ba2dd1fd7b1e097a29cb40d1d8fe516 (patch) | |
tree | 2c1c9a0253bb62de8229d1d89b990139777add1c /toolbox | |
parent | f5562cb66c1c15d65bc372ede4c180430e1ce9d7 (diff) | |
download | system_core-edee93dc5ba2dd1fd7b1e097a29cb40d1d8fe516.tar.gz system_core-edee93dc5ba2dd1fd7b1e097a29cb40d1d8fe516.tar.bz2 system_core-edee93dc5ba2dd1fd7b1e097a29cb40d1d8fe516.zip |
toolbox/dmesg: do not hardcode KLOG_BUF_LEN
Change-Id: Ia99654a53d6adfeba5a5088b7cff45c6e47b6188
Diffstat (limited to 'toolbox')
-rw-r--r-- | toolbox/dmesg.c | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/toolbox/dmesg.c b/toolbox/dmesg.c index e57f6077f..9c73b00ca 100644 --- a/toolbox/dmesg.c +++ b/toolbox/dmesg.c @@ -5,15 +5,30 @@ #include <sys/klog.h> #include <string.h> -#define KLOG_BUF_SHIFT 17 /* CONFIG_LOG_BUF_SHIFT from our kernel */ -#define KLOG_BUF_LEN (1 << KLOG_BUF_SHIFT) +#define FALLBACK_KLOG_BUF_SHIFT 17 /* CONFIG_LOG_BUF_SHIFT from our kernel */ +#define FALLBACK_KLOG_BUF_LEN (1 << FALLBACK_KLOG_BUF_SHIFT) int dmesg_main(int argc, char **argv) { - char buffer[KLOG_BUF_LEN + 1]; - char *p = buffer; + char *buffer; + char *p; ssize_t ret; - int n, op; + int n, op, klog_buf_len; + + klog_buf_len = klogctl(KLOG_SIZE_BUFFER, 0, 0); + + if (klog_buf_len <= 0) { + klog_buf_len = FALLBACK_KLOG_BUF_LEN; + } + + buffer = (char *)malloc(klog_buf_len + 1); + + if (!buffer) { + perror("malloc"); + return EXIT_FAILURE; + } + + p = buffer; if((argc == 2) && (!strcmp(argv[1],"-c"))) { op = KLOG_READ_CLEAR; @@ -21,7 +36,7 @@ int dmesg_main(int argc, char **argv) op = KLOG_READ_ALL; } - n = klogctl(op, buffer, KLOG_BUF_LEN); + n = klogctl(op, buffer, klog_buf_len); if (n < 0) { perror("klogctl"); return EXIT_FAILURE; |