12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- #include "dmesg.h"
- #include <stdio.h>
- #include <string.h>
- /**
- * @brief 识别dmesg程序的第一个选项参数
- *
- * @param arg dmesg命令第一个选项参数
- * @return int 有效时返回对应选项码,无效时返回 -1
- */
- int getoption(char *arg)
- {
- if (!strcmp(arg, "-h") || !strcmp(arg, "--help"))
- return 0;
- else if (!strcmp(arg, "-c") || !strcmp(arg, "--read-clear"))
- return 4;
- else if (!strcmp(arg, "-C") || !strcmp(arg, "--clear"))
- return 5;
- else if (!strcmp(arg, "-l") || !strcmp(arg, "--level"))
- return 8;
- return -1;
- }
- /**
- * @brief 识别dmesg程序的第二个选项参数
- *
- * @param arg dmesg命令第一个选项参数
- * @return int 有效时返回设置的日志级别,无效时返回 -1
- */
- int getlevel(char *arg)
- {
- if (!strcmp(arg, "EMERG") || !strcmp(arg, "emerg"))
- return 0;
- else if (!strcmp(arg, "ALERT") || !strcmp(arg, "alert"))
- return 1;
- else if (!strcmp(arg, "CRIT") || !strcmp(arg, "crit"))
- return 2;
- else if (!strcmp(arg, "ERR") || !strcmp(arg, "err"))
- return 3;
- else if (!strcmp(arg, "WARN") || !strcmp(arg, "warn"))
- return 4;
- else if (!strcmp(arg, "NOTICE") || !strcmp(arg, "notice"))
- return 5;
- else if (!strcmp(arg, "INFO") || !strcmp(arg, "info"))
- return 6;
- else if (!strcmp(arg, "DEBUG") || !strcmp(arg, "debug"))
- return 7;
- else
- {
- printf("dmesg: unknown level '%s'\n", arg);
- }
- return -2;
- }
- /**
- * @brief 打印dmesg手册
- */
- void print_help_msg()
- {
- const char *help_msg = "Usage:\n"
- " dmesg [options]\n\n"
- "Display or control the kernel ring buffer.\n\n"
- "Options:\n"
- " -C, --clear clear the kernel ring buffer\n"
- " -c, --read-clear read and clear all messages\n"
- " -l, --level <list> restrict output to defined levels\n"
- " -h, --help display this help\n\n"
- "Supported log levels (priorities):\n"
- " emerg - system is unusable\n"
- " alert - action must be taken immediately\n"
- " crit - critical conditions\n"
- " err - error conditions\n"
- " warn - warning conditions\n"
- " notice - normal but significant condition\n"
- " info - informational\n"
- " debug - debug-level messages\n";
- printf("%s\n", help_msg);
- }
- /**
- * @brief 打印dmesg错误使用的信息
- */
- void print_bad_usage_msg()
- {
- const char *bad_usage_msg = "dmesg: bad usage\nTry 'dmesg --help' for more information.";
- printf("%s\n", bad_usage_msg);
- }
|