all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [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 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.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal