From 8cfb4c08971672767d4b562e46b0802339ef6bc7 Mon Sep 17 00:00:00 2001 From: Duncan Laurie Date: Tue, 17 May 2005 21:05:21 +0000 Subject: [PATCH] add helper define for max string length, allow default commands to receive options --- ipmitool/include/ipmitool/helper.h | 9 +++++++++ ipmitool/lib/helper.c | 3 +-- ipmitool/lib/ipmi_event.c | 3 +-- ipmitool/lib/ipmi_main.c | 5 ++++- ipmitool/lib/ipmi_sdr.c | 2 +- 5 files changed, 16 insertions(+), 6 deletions(-) diff --git a/ipmitool/include/ipmitool/helper.h b/ipmitool/include/ipmitool/helper.h index 3e826a7..695837c 100644 --- a/ipmitool/include/ipmitool/helper.h +++ b/ipmitool/include/ipmitool/helper.h @@ -40,6 +40,7 @@ #include #include #include +#include struct valstr { uint16_t val; @@ -67,4 +68,12 @@ void ipmi_start_daemon(void); # define __max(a, b) ((a) > (b) ? (a) : (b)) #endif +#ifndef __minlen +# define __minlen(a, b) ({ int x=strlen(a); int y=strlen(b); (x < y) ? x : y;}) +#endif + +#ifndef __maxlen +# define __maxlen(a, b) ({ int x=strlen(a); int y=strlen(b); (x > y) ? x : y;}) +#endif + #endif /* IPMI_HELPER_H */ diff --git a/ipmitool/lib/helper.c b/ipmitool/lib/helper.c index f0a4259..16394ce 100644 --- a/ipmitool/lib/helper.c +++ b/ipmitool/lib/helper.c @@ -120,8 +120,7 @@ uint16_t str2val(const char *str, const struct valstr *vs) int i = 0; while (vs[i].str != NULL) { - if (!strncasecmp(vs[i].str, str, - __max(strlen(str), strlen(vs[i].str)))) + if (strncasecmp(vs[i].str, str, __maxlen(str, vs[i].str)) == 0) return vs[i].val; i++; } diff --git a/ipmitool/lib/ipmi_event.c b/ipmitool/lib/ipmi_event.c index 7313ffb..9d46704 100644 --- a/ipmitool/lib/ipmi_event.c +++ b/ipmitool/lib/ipmi_event.c @@ -219,8 +219,7 @@ ipmi_event_find_offset(uint8_t code, while (evt->type) { if (evt->code == code && evt->desc != NULL && - strncasecmp(desc, evt->desc, - __max(strlen(desc), strlen(evt->desc))) == 0) + strncasecmp(desc, evt->desc, __maxlen(desc, evt->desc)) == 0) return evt->offset; evt++; } diff --git a/ipmitool/lib/ipmi_main.c b/ipmitool/lib/ipmi_main.c index 5078788..f5a0ebc 100644 --- a/ipmitool/lib/ipmi_main.c +++ b/ipmitool/lib/ipmi_main.c @@ -196,10 +196,13 @@ ipmi_cmd_run(struct ipmi_intf * intf, char * name, int argc, char ** argv) } for (cmd=intf->cmdlist; cmd->func != NULL; cmd++) { - if (strncmp(name, cmd->name, strlen(cmd->name)) == 0) + if (strncmp(name, cmd->name, __maxlen(cmd->name, name)) == 0) break; } if (cmd->func == NULL) { + cmd = intf->cmdlist; + if (strncmp(cmd->name, "default", 7) == 0) + return cmd->func(intf, argc+1, argv-1); lprintf(LOG_ERR, "Invalid command: %s", name); ipmi_cmd_print(intf->cmdlist); return -1; diff --git a/ipmitool/lib/ipmi_sdr.c b/ipmitool/lib/ipmi_sdr.c index 9f3ebda..01d2753 100644 --- a/ipmitool/lib/ipmi_sdr.c +++ b/ipmitool/lib/ipmi_sdr.c @@ -3660,7 +3660,7 @@ ipmi_sdr_print_type(struct ipmi_intf * intf, char * type) else { for (x = 1; x < SENSOR_TYPE_MAX; x++) { if (strncasecmp(sensor_type_desc[x], type, - __max(strlen(type), strlen(sensor_type_desc[x]))) == 0) { + __maxlen(type, sensor_type_desc[x])) == 0) { sensor_type = x; break; }