123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- #include "dmesg.h"
- #include <stdio.h>
- #include <stdlib.h>
- #include <sys/klog.h>
- #include <unistd.h>
- int main(int argc, char **argv)
- {
- unsigned int len = 1;
- char *buf = NULL;
- int opt;
- unsigned int color = 65280;
-
- len = klogctl(10, buf, len);
- if (len < 16 * 1024)
- len = 16 * 1024;
- if (len > 16 * 1024 * 1024)
- len = 16 * 1024 * 1024;
- buf = malloc(len);
- if (buf == NULL)
- {
- perror("");
- return -1;
- }
- if (argc == 1)
- {
-
- len = klogctl(2, buf, len);
- }
- else
- {
-
- opt = getoption(argv[1]);
-
- if (opt == -1)
- {
- print_bad_usage_msg();
- return -1;
- }
-
- else if (opt == 0)
- {
- print_help_msg();
- return 0;
- }
-
-
- else if (opt == 4 || opt == 5)
- {
- len = klogctl(opt, buf, len);
- }
-
- else if (opt == 8)
- {
-
- if (argc < 3)
- {
- print_bad_usage_msg();
- return -1;
- }
- int level = -1;
-
-
- level = getlevel(argv[2]) + 1;
- if (level == -1)
- return -1;
- klogctl(8, buf, level);
- len = klogctl(2, buf, len);
- }
- }
-
-
-
-
-
- unsigned int content = 0;
- for (int i = 0; i < len; i++)
- {
- char c[2];
- c[0] = buf[i];
- c[1] = '\0';
- syscall(100000, &c[0], color, 0);
- if (content == 0 && buf[i] == '>')
- {
- content++;
- }
- else if (content == 1 && buf[i] == ']')
- {
- color = 16744448;
- content++;
- }
- else if (content == 2 && buf[i] == ')')
- {
- color = 16777215;
- content++;
- }
- else if (content == 3 && buf[i] == '\n')
- {
- color = 65280;
- content = 0;
- }
- }
- free(buf);
- return 0;
- }
|