diff options
author | Burt P <pburt0@gmail.com> | 2018-10-22 21:46:48 -0500 |
---|---|---|
committer | Leandro A. F. Pereira <leandro@hardinfo.org> | 2018-11-04 15:02:12 -0800 |
commit | 7f3cfdb1247f4a578062b8587ebde1be99708a36 (patch) | |
tree | 9b63597297550bb60910536f6f38a7b274ff15a2 | |
parent | dfd6d42930d668a7dcc3587d47a89c4de652fdce (diff) |
dmi_util: make ignoring string detectable
Signed-off-by: Burt P <pburt0@gmail.com>
-rw-r--r-- | hardinfo/dmi_util.c | 35 | ||||
-rw-r--r-- | includes/dmi_util.h | 7 |
2 files changed, 33 insertions, 9 deletions
diff --git a/hardinfo/dmi_util.c b/hardinfo/dmi_util.c index ee32d348..82099456 100644 --- a/hardinfo/dmi_util.c +++ b/hardinfo/dmi_util.c @@ -23,10 +23,10 @@ /* frees the string and sets it NULL if it is to be ignored * returns -1 if error, 0 if ok, 1 if ignored */ -static int ignore_placeholder_strings(char **pstr) { +static int ignore_placeholder_strings(gchar **pstr) { if (pstr == NULL || *pstr == NULL) return -1; -#define DMI_IGNORE(m) if (strcasecmp(m, *pstr) == 0) { free(*pstr); *pstr = NULL; return 1; } +#define DMI_IGNORE(m) if (strcasecmp(m, *pstr) == 0) { g_free(*pstr); *pstr = NULL; return 1; } DMI_IGNORE("To be filled by O.E.M."); DMI_IGNORE("System Product Name"); DMI_IGNORE("System Manufacturer"); @@ -55,7 +55,32 @@ static const char *dmi_sysfs_root(void) { return NULL; } +int dmi_str_status(const char *id_str) { + gchar *str = dmi_get_str_abs(id_str); + int ret = 1; + + if (!str) + ret = 0; + + if ( ignore_placeholder_strings(&str) > 0 ) + ret = -1; + + g_free(str); + return ret; +} + char *dmi_get_str(const char *id_str) { + gchar *ret = dmi_get_str_abs(id_str); + /* return NULL on empty */ + if (ret && *ret == 0) { + g_free(ret); + ret = NULL; + } + ignore_placeholder_strings(&ret); + return ret; +} + +char *dmi_get_str_abs(const char *id_str) { static struct { char *id; char *path; @@ -119,12 +144,6 @@ dmi_str_done: if (ret != NULL) { ret = strend(ret, '\n'); ret = g_strstrip(ret); - /* return NULL on empty */ - if (*ret == 0) { - g_free(ret); - ret = NULL; - } - ignore_placeholder_strings(&ret); } return ret; } diff --git a/includes/dmi_util.h b/includes/dmi_util.h index 7ef33681..efc0ea21 100644 --- a/includes/dmi_util.h +++ b/includes/dmi_util.h @@ -21,7 +21,12 @@ #ifndef __DMI_UTIL_H__ #define __DMI_UTIL_H__ -char *dmi_get_str(const char *id_str); +/* -1 = yes, but will be ignored + * 0 = no + * 1 = yes */ +int dmi_str_status(const char *id_str); +char *dmi_get_str(const char *id_str); /* ignore nonsense */ +char *dmi_get_str_abs(const char *id_str); /* include nonsense */ /* if chassis_type is <=0 it will be fetched from DMI. * with_val = true, will return a string like "[3] Desktop" instead of just |