From: Maximiliano Sandoval <m.sandoval@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [pve-devel] [PATCH 1/3] pmxcfs: Use g_string_append when appropriate
Date: Thu, 20 Feb 2025 13:48:02 +0100 [thread overview]
Message-ID: <20250220124804.263191-1-m.sandoval@proxmox.com> (raw)
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
next reply other threads:[~2025-02-20 12:48 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-20 12:48 Maximiliano Sandoval [this message]
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
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250220124804.263191-1-m.sandoval@proxmox.com \
--to=m.sandoval@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.