* [pve-devel] [PATCH 1/3] pmxcfs: Use g_string_append when appropriate
@ 2025-02-20 12:48 Maximiliano Sandoval
2025-02-20 12:48 ` [pve-devel] [PATCH 2/3] pmxcfs: use g_string_assign when appropiate Maximiliano Sandoval
2025-02-20 12:48 ` [pve-devel] [PATCH 3/3] pmxcfg: use g_string_append_c " Maximiliano Sandoval
0 siblings, 2 replies; 3+ messages in thread
From: Maximiliano Sandoval @ 2025-02-20 12:48 UTC (permalink / raw)
To: pve-devel
g_string_append_printf should only be used when there is something to
format.
Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
---
Some micro optimizations for GStrings usage.
The following script can be used to verify the claim that the replacements are drop-in:
```c
/* test.c */
#include <glib.h>
int
main () {
GString *a = g_string_new ("Hello");
GString *b = g_string_new ("Hello");
g_string_append (a, "\n");
g_string_append_c (b, '\n');
g_assert_cmpstr (a->str, ==, b->str);
g_string_printf (a, "{\n");
g_string_assign (b, "{\n");
g_assert_cmpstr (a->str, ==, b->str);
g_string_append_printf (a, "\"data\": [\n");
g_string_append (b, "\"data\": [\n");
g_assert_cmpstr (a->str, ==, b->str);
}
```
which can be compiled with
```
cc `pkg-config --cflags glib-2.0` test.c -o test `pkg-config --libs glib-2.0`
```
assuming `libglib2.0-0` is installed.
src/pmxcfs/logger.c | 12 ++++++------
src/pmxcfs/status.c | 44 ++++++++++++++++++++++----------------------
2 files changed, 28 insertions(+), 28 deletions(-)
diff --git a/src/pmxcfs/logger.c b/src/pmxcfs/logger.c
index 3792650..0be4be6 100644
--- a/src/pmxcfs/logger.c
+++ b/src/pmxcfs/logger.c
@@ -163,9 +163,9 @@ clog_dump_json(
uint32_t cpos = clog->cpos;
- g_string_append_printf(str, "{\n");
+ g_string_append(str, "{\n");
- g_string_append_printf(str, "\"data\": [\n");
+ g_string_append(str, "\"data\": [\n");
guint count = 0;
while (cpos && (cpos <= clog->cpos || cpos > (clog->cpos + CLOG_MAX_ENTRY_SIZE))) {
@@ -189,7 +189,7 @@ clog_dump_json(
char *msg = tag + cur->tag_len;
if (count)
- g_string_append_printf(str, ",\n");
+ g_string_append(str, ",\n");
g_string_append_printf(str, "{\"uid\": %u, \"time\": %u, \"pri\": %d, \"tag\": \"%s\", "
"\"pid\": %u, \"node\": \"%s\", \"user\": \"%s\", "
@@ -201,10 +201,10 @@ clog_dump_json(
}
if (count)
- g_string_append_printf(str, "\n");
+ g_string_append(str, "\n");
- g_string_append_printf(str, "]\n");
- g_string_append_printf(str, "}\n");
+ g_string_append(str, "]\n");
+ g_string_append(str, "}\n");
}
diff --git a/src/pmxcfs/status.c b/src/pmxcfs/status.c
index ff5fcc4..e76c150 100644
--- a/src/pmxcfs/status.c
+++ b/src/pmxcfs/status.c
@@ -321,7 +321,7 @@ cfs_create_memberlist_msg(
g_mutex_lock (&mutex);
- g_string_append_printf(str,"{\n");
+ g_string_append(str, "{\n");
guint nodecount = 0;
@@ -334,14 +334,14 @@ cfs_create_memberlist_msg(
g_string_append_printf(str, "\"nodename\": \"%s\",\n", cfs.nodename);
g_string_append_printf(str, "\"version\": %u,\n", cfs_status.clinfo_version);
- g_string_append_printf(str, "\"cluster\": { ");
+ g_string_append(str, "\"cluster\": { ");
g_string_append_printf(str, "\"name\": \"%s\", \"version\": %d, "
"\"nodes\": %d, \"quorate\": %d ",
clinfo->cluster_name, clinfo->cman_version,
nodecount, cfs_status.quorate);
- g_string_append_printf(str,"},\n");
- g_string_append_printf(str,"\"nodelist\": {\n");
+ g_string_append(str, "},\n");
+ g_string_append(str, "\"nodelist\": {\n");
GHashTable *ht = clinfo->nodes_byid;
GHashTableIter iter;
@@ -352,7 +352,7 @@ cfs_create_memberlist_msg(
int i = 0;
while (g_hash_table_iter_next (&iter, &key, &value)) {
cfs_clnode_t *node = (cfs_clnode_t *)value;
- if (i) g_string_append_printf(str, ",\n");
+ if (i) g_string_append(str, ",\n");
i++;
g_string_append_printf(str, " \"%s\": { \"id\": %d, \"online\": %d",
@@ -364,16 +364,16 @@ cfs_create_memberlist_msg(
g_string_append_printf(str, ", \"ip\": \"%s\"", ip);
}
- g_string_append_printf(str, "}");
+ g_string_append(str, "}");
}
- g_string_append_printf(str,"\n }\n");
+ g_string_append(str, "\n }\n");
} else {
g_string_append_printf(str, "\"nodename\": \"%s\",\n", cfs.nodename);
g_string_append_printf(str, "\"version\": %u\n", cfs_status.clinfo_version);
}
- g_string_append_printf(str,"}\n");
+ g_string_append(str, "}\n");
g_mutex_unlock (&mutex);
@@ -570,12 +570,12 @@ dump_kvstore_versions(
int i = 0;
while (g_hash_table_iter_next (&iter, &key, &value)) {
kventry_t *entry = (kventry_t *)value;
- if (i) g_string_append_printf(str, ",\n");
+ if (i) g_string_append(str, ",\n");
i++;
g_string_append_printf(str,"\"%s\": %u", entry->key, entry->version);
}
- g_string_append_printf(str, "}\n");
+ g_string_append(str, "}\n");
}
int
@@ -585,7 +585,7 @@ cfs_create_version_msg(GString *str)
g_mutex_lock (&mutex);
- g_string_append_printf(str,"{\n");
+ g_string_append(str, "{\n");
g_string_append_printf(str, "\"starttime\": %lu,\n", (unsigned long)cfs_status.start_time);
@@ -599,7 +599,7 @@ cfs_create_version_msg(GString *str)
memdb_change_array[i].version);
}
- g_string_append_printf(str, "\"kvstore\": {\n");
+ g_string_append(str, "\"kvstore\": {\n");
dump_kvstore_versions(str, cfs_status.kvhash, cfs.nodename);
@@ -616,14 +616,14 @@ cfs_create_version_msg(GString *str)
cfs_clnode_t *node = (cfs_clnode_t *)value;
if (!node->kvhash)
continue;
- g_string_append_printf(str, ",\n");
+ g_string_append(str, ",\n");
dump_kvstore_versions(str, node->kvhash, node->name);
}
}
- g_string_append_printf(str,"}\n");
+ g_string_append(str, "}\n");
- g_string_append_printf(str,"}\n");
+ g_string_append(str, "}\n");
g_mutex_unlock (&mutex);
@@ -774,7 +774,7 @@ cfs_create_vmlist_msg(GString *str)
g_mutex_lock (&mutex);
- g_string_append_printf(str,"{\n");
+ g_string_append(str, "{\n");
GHashTable *ht = cfs_status.vmlist;
@@ -785,7 +785,7 @@ cfs_create_vmlist_msg(GString *str)
} else {
g_string_append_printf(str,"\"version\": %u,\n", cfs_status.vmlist_version);
- g_string_append_printf(str,"\"ids\": {\n");
+ g_string_append(str, "\"ids\": {\n");
GHashTableIter iter;
gpointer key, value;
@@ -798,16 +798,16 @@ cfs_create_vmlist_msg(GString *str)
const char *type = vminfo_type_to_string(vminfo);
if (!first)
- g_string_append_printf(str, ",\n");
+ g_string_append(str, ",\n");
first = 0;
g_string_append_printf(str,"\"%u\": { \"node\": \"%s\", \"type\": \"%s\", \"version\": %u }",
vminfo->vmid, vminfo->nodename, type, vminfo->version);
}
- g_string_append_printf(str,"}\n");
+ g_string_append(str, "}\n");
}
- g_string_append_printf(str,"\n}\n");
+ g_string_append(str, "\n}\n");
g_mutex_unlock (&mutex);
@@ -945,7 +945,7 @@ _print_found_properties(
g_string_append_c(str, ',');
} else {
if (!first) {
- g_string_append_printf(str, ",\n");
+ g_string_append(str, ",\n");
} else {
first = 0;
}
@@ -1056,7 +1056,7 @@ ret:
if (path != NULL) {
g_string_free(path, TRUE);
}
- g_string_append_printf(str,"\n}\n");
+ g_string_append(str, "\n}\n");
g_mutex_unlock (&mutex);
g_mutex_unlock (&memdb->mutex);
return res;
--
2.39.5
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
^ permalink raw reply [flat|nested] 3+ messages in thread
* [pve-devel] [PATCH 2/3] pmxcfs: use g_string_assign when appropiate
2025-02-20 12:48 [pve-devel] [PATCH 1/3] pmxcfs: Use g_string_append when appropriate Maximiliano Sandoval
@ 2025-02-20 12:48 ` Maximiliano Sandoval
2025-02-20 12:48 ` [pve-devel] [PATCH 3/3] pmxcfg: use g_string_append_c " Maximiliano Sandoval
1 sibling, 0 replies; 3+ messages in thread
From: Maximiliano Sandoval @ 2025-02-20 12:48 UTC (permalink / raw)
To: pve-devel
Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
---
src/pmxcfs/status.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/pmxcfs/status.c b/src/pmxcfs/status.c
index e76c150..7533057 100644
--- a/src/pmxcfs/status.c
+++ b/src/pmxcfs/status.c
@@ -973,7 +973,7 @@ cfs_create_guest_conf_properties_msg(GString *str, memdb_t *memdb, const char **
g_mutex_lock (&memdb->mutex);
g_mutex_lock (&mutex);
- g_string_printf(str, "{\n");
+ g_string_assign(str, "{\n");
GHashTable *ht = cfs_status.vmlist;
--
2.39.5
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
^ permalink raw reply [flat|nested] 3+ messages in thread
* [pve-devel] [PATCH 3/3] pmxcfg: use g_string_append_c when appropiate
2025-02-20 12:48 [pve-devel] [PATCH 1/3] pmxcfs: Use g_string_append when appropriate Maximiliano Sandoval
2025-02-20 12:48 ` [pve-devel] [PATCH 2/3] pmxcfs: use g_string_assign when appropiate Maximiliano Sandoval
@ 2025-02-20 12:48 ` Maximiliano Sandoval
1 sibling, 0 replies; 3+ messages in thread
From: Maximiliano Sandoval @ 2025-02-20 12:48 UTC (permalink / raw)
To: pve-devel
Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
---
src/pmxcfs/logger.c | 2 +-
src/pmxcfs/status.c | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/pmxcfs/logger.c b/src/pmxcfs/logger.c
index 0be4be6..d6e281f 100644
--- a/src/pmxcfs/logger.c
+++ b/src/pmxcfs/logger.c
@@ -201,7 +201,7 @@ clog_dump_json(
}
if (count)
- g_string_append(str, "\n");
+ g_string_append_c(str, '\n');
g_string_append(str, "]\n");
g_string_append(str, "}\n");
diff --git a/src/pmxcfs/status.c b/src/pmxcfs/status.c
index 7533057..ac94ac7 100644
--- a/src/pmxcfs/status.c
+++ b/src/pmxcfs/status.c
@@ -1418,9 +1418,9 @@ cfs_rrd_dump(GString *str)
while (g_hash_table_iter_next (&iter, &key, &value)) {
rrdentry_t *entry = (rrdentry_t *)value;
g_string_append(str, key);
- g_string_append(str, ":");
+ g_string_append_c(str, ':');
g_string_append(str, entry->data);
- g_string_append(str, "\n");
+ g_string_append_c(str, '\n');
}
g_string_append_c(str, 0); // never return undef
--
2.39.5
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-02-20 12:48 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-02-20 12:48 [pve-devel] [PATCH 1/3] pmxcfs: Use g_string_append when appropriate Maximiliano Sandoval
2025-02-20 12:48 ` [pve-devel] [PATCH 2/3] pmxcfs: use g_string_assign when appropiate Maximiliano Sandoval
2025-02-20 12:48 ` [pve-devel] [PATCH 3/3] pmxcfg: use g_string_append_c " Maximiliano Sandoval
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal