diff --git a/ipmitool/include/ipmitool/helper.h b/ipmitool/include/ipmitool/helper.h index 1f49e6d..0bc741f 100644 --- a/ipmitool/include/ipmitool/helper.h +++ b/ipmitool/include/ipmitool/helper.h @@ -44,6 +44,7 @@ struct valstr { const char * str; }; const char * val2str(unsigned short val, const struct valstr * vs); +unsigned short str2val(const char * str, const struct valstr * vs); unsigned short buf2short(unsigned char * buf); uint32_t buf2long(unsigned char * buf); @@ -56,5 +57,7 @@ void signal_handler(int sig, void * handler); #define SIG_DEFAULT(s) ((void)signal((s), SIG_DFL)) #define SIG_HANDLE(s,h) ((void)signal_handler((s), (h))) +#define min(a, b) ((a) < (b) ? (a) : (b)) + #endif /* IPMI_HELPER_H */ diff --git a/ipmitool/lib/helper.c b/ipmitool/lib/helper.c index 04806a4..be7c4ee 100644 --- a/ipmitool/lib/helper.c +++ b/ipmitool/lib/helper.c @@ -38,10 +38,8 @@ #include #include #include -#include - #include - +#include uint32_t buf2long(unsigned char * buf) { @@ -104,6 +102,19 @@ const char * val2str(unsigned short val, const struct valstr *vs) return un_str; } +unsigned short str2val(const char *str, const struct valstr *vs) +{ + int i = 0; + + while (vs[i].str) { + if (!strncasecmp(vs[i].str, str, strlen(str))) + return vs[i].val; + i++; + } + + return 0; +} + void signal_handler(int sig, void * handler) { struct sigaction act; @@ -125,4 +136,3 @@ void signal_handler(int sig, void * handler) return; } } -