aboutsummaryrefslogtreecommitdiff
path: root/hardinfo/info.c
diff options
context:
space:
mode:
authorBurt P <pburt0@gmail.com>2020-01-07 11:14:49 -0600
committerLeandro A. F. Pereira <leandro@hardinfo.org>2020-01-17 16:15:54 -0800
commit1cc8cc4623331c5ca83ff5a20e23265af7a5e4de (patch)
tree4fe8cb7d1d195eca2a14bc0a250d0b32e02d3f78 /hardinfo/info.c
parentaf5a38062e39a6cce9710a1942264540a0e8c7a1 (diff)
info: fixes for escaped label flag
Signed-off-by: Burt P <pburt0@gmail.com>
Diffstat (limited to 'hardinfo/info.c')
-rw-r--r--hardinfo/info.c27
1 files changed, 18 insertions, 9 deletions
diff --git a/hardinfo/info.c b/hardinfo/info.c
index 5dd33b9c..641e740d 100644
--- a/hardinfo/info.c
+++ b/hardinfo/info.c
@@ -120,7 +120,7 @@ void info_group_strip_extra(struct InfoGroup *group)
if (field->value){
val = strrchr(field->value, '|');
if (val) {
- oldval = field->value;
+ oldval = (gchar*)field->value;
field->value = strdup(val + 1);
g_free(oldval);
}
@@ -292,7 +292,7 @@ static void flatten_group(GString *output, const struct InfoGroup *group, guint
struct InfoField *field = &g_array_index(group->fields, struct InfoField, i);
gchar tmp_tag[256] = ""; /* for generated tag */
- gboolean do_escape = TRUE;
+ gboolean do_escape = TRUE; /* refers to the value side only */
if (field->value && strchr(field->value, '|') ) {
/* turning off escaping for values that may have columns */
do_escape = FALSE;
@@ -314,9 +314,19 @@ static void flatten_group(GString *output, const struct InfoGroup *group, guint
snprintf(tmp_tag, 255, "ITEM%d-%d", group_count, i);
tp = tmp_tag;
}
-
+ if (!field->label_is_escaped) {
+ if (strchr(field->name, '=')
+ || strchr(field->name, '$')) {
+ // TODO: what about # ?
+ gchar *ofn = (gchar*)field->name;
+ field->name = key_label_escape(ofn);
+ g_free(ofn);
+ field->label_is_escaped = TRUE;
+ }
+ }
if (tagged || flagged || field->icon) {
- g_string_append_printf(output, "$%s%s%s%s$",
+ g_string_append_printf(output, "$%s%s%s%s%s$",
+ field->label_is_escaped ? "@" : "",
field->highlight ? "*" : "",
field->report_details ? "!" : "",
field->value_has_vendor ? "^" : "",
@@ -503,17 +513,16 @@ struct Info *info_unflatten(const gchar *str)
field.tag = tag;
field.name = name;
field.value = value;
- field.free_value_on_flatten = TRUE;
- field.free_name_on_flatten = TRUE;
+ if (key_label_is_escaped(flags))
+ field.label_is_escaped = TRUE;
if (key_wants_details(flags))
field.report_details = TRUE;
if (key_is_highlighted(flags))
field.highlight = TRUE;
if (key_value_has_vendor_string(flags))
field.value_has_vendor = TRUE;
- if (key_label_is_escaped(flags)) {
- //TODO:...
- }
+ field.free_value_on_flatten = TRUE;
+ field.free_name_on_flatten = TRUE;
g_free(flags);
g_free(label);