summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeandro Pereira <leandro@hardinfo.org>2019-07-09 08:41:35 -0700
committerLeandro Pereira <leandro@hardinfo.org>2019-07-11 20:21:46 -0700
commit82b5142e2b9360eaf1826ab75a7cac388c6af3bf (patch)
treef50658741fb0c1a01d38e7f8640f6835c491f675
parent201513a63d65596739a05dbc051916a284194715 (diff)
Do not copy InfoField while flattening
-rw-r--r--hardinfo/info.c49
1 files changed, 23 insertions, 26 deletions
diff --git a/hardinfo/info.c b/hardinfo/info.c
index c082791b..c3ace958 100644
--- a/hardinfo/info.c
+++ b/hardinfo/info.c
@@ -211,30 +211,28 @@ static void flatten_group(GString *output, const struct InfoGroup *group, guint
if (group->fields) {
for (i = 0; i < group->fields->len; i++) {
- struct InfoField field;
+ struct InfoField *field = &g_array_index(group->fields, struct InfoField, i);
gchar tag[256] = "";
- field = g_array_index(group->fields, struct InfoField, i);
-
- if (field.tag)
- strncpy(tag, field.tag, 255);
+ if (field->tag)
+ strncpy(tag, field->tag, 255);
else
snprintf(tag, 255, "ITEM%d-%d", group_count, i);
- if (*tag != 0 || field.highlight || field.report_details)
+ if (*tag != 0 || field->highlight || field->report_details)
g_string_append_printf(output, "$%s%s%s$",
- field.highlight ? "*" : "",
- field.report_details ? "!" : "",
+ field->highlight ? "*" : "",
+ field->report_details ? "!" : "",
tag);
- g_string_append_printf(output, "%s=%s\n", field.name, field.value);
+ g_string_append_printf(output, "%s=%s\n", field->name, field->value);
- if (field.free_value_on_flatten)
- g_free((gchar *)field.value);
- if (field.free_name_on_flatten)
- g_free((gchar *)field.name);
+ if (field->free_value_on_flatten)
+ g_free((gchar *)field->value);
+ if (field->free_name_on_flatten)
+ g_free((gchar *)field->name);
- g_free(field.tag);
+ g_free(field->tag);
}
} else if (group->computed) {
g_string_append_printf(output, "%s\n", group->computed);
@@ -249,18 +247,17 @@ static void flatten_shell_param(GString *output, const struct InfoGroup *group,
return;
for (i = 0; i < group->fields->len; i++) {
- struct InfoField field;
+ struct InfoField *field = &g_array_index(group->fields, struct InfoField, i);
- field = g_array_index(group->fields, struct InfoField, i);
- if (field.update_interval) {
+ if (field->update_interval) {
g_string_append_printf(output, "UpdateInterval$%s=%d\n",
- field.name, field.update_interval);
+ field->name, field->update_interval);
}
- if (field.icon) {
+ if (field->icon) {
g_string_append_printf(output, "Icon$ITEM%d-%d$=%s\n",
- group_count, i, field.icon);
+ group_count, i, field->icon);
}
}
}
@@ -307,14 +304,14 @@ gchar *info_flatten(struct Info *info)
if (info->groups) {
for (i = 0; i < info->groups->len; i++) {
- struct InfoGroup group =
- g_array_index(info->groups, struct InfoGroup, i);
+ struct InfoGroup *group =
+ &g_array_index(info->groups, struct InfoGroup, i);
- flatten_group(values, &group, i);
- flatten_shell_param(shell_param, &group, i);
+ flatten_group(values, group, i);
+ flatten_shell_param(shell_param, group, i);
- if (group.fields)
- g_array_free(group.fields, TRUE);
+ if (group->fields)
+ g_array_free(group->fields, TRUE);
}
g_array_free(info->groups, TRUE);