From 65b3081f4b1274d66393726f4634955aac943e9b Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Thu, 19 Sep 2024 17:32:42 +0200 Subject: [PATCH] ctdb: Use str_list_add_printf() in debug_locks_args() Saves lines, str_list_add_printf takes care of NULL checks Signed-off-by: Volker Lendecke Reviewed-by: Noel Power --- ctdb/server/ctdb_lock.c | 55 +++++++++++------------------------------ 1 file changed, 15 insertions(+), 40 deletions(-) diff --git a/ctdb/server/ctdb_lock.c b/ctdb/server/ctdb_lock.c index 4f04563d863..d526413454e 100644 --- a/ctdb/server/ctdb_lock.c +++ b/ctdb/server/ctdb_lock.c @@ -496,47 +496,22 @@ fail: } -static const char **debug_locks_args(TALLOC_CTX *mem_ctx, struct lock_context *lock_ctx) +static char **debug_locks_args(TALLOC_CTX *mem_ctx, + struct lock_context *lock_ctx) { - const char **args = NULL; - int tdb_flags; - int nargs, i; + int tdb_flags = tdb_get_flags(lock_ctx->ctdb_db->ltdb->tdb); + char **args = str_list_make_empty(mem_ctx); - /* Program, lock helper PID, db|record, tdb path, fcntl|mutex, NULL */ - nargs = 6; - - args = talloc_array(mem_ctx, const char *, nargs); - if (args == NULL) { - return NULL; - } - - args[0] = talloc_strdup(args, "debug_locks"); - args[1] = talloc_asprintf(args, "%d", lock_ctx->child); - - if (lock_ctx->type == LOCK_RECORD) { - args[2] = talloc_strdup(args, "RECORD"); - } else { - args[2] = talloc_strdup(args, "DB"); - } - - args[3] = talloc_strdup(args, lock_ctx->ctdb_db->db_path); - - tdb_flags = tdb_get_flags(lock_ctx->ctdb_db->ltdb->tdb); - if (tdb_flags & TDB_MUTEX_LOCKING) { - args[4] = talloc_strdup(args, "MUTEX"); - } else { - args[4] = talloc_strdup(args, "FCNTL"); - } - - args[5] = NULL; - - for (i=0; ichild); + str_list_add_printf(&args, + "%s", + (lock_ctx->type == LOCK_RECORD) ? "RECORD" : "DB"); + str_list_add_printf(&args, "%s", lock_ctx->ctdb_db->db_path); + str_list_add_printf(&args, + (tdb_flags & TDB_MUTEX_LOCKING) ? "MUTEX" + : "FCNTL"); return args; } @@ -556,7 +531,7 @@ static void ctdb_lock_timeout_handler(struct tevent_context *ev, double elapsed_time; bool skip; char *keystr; - const char **args; + char **args; bool ok; lock_ctx = talloc_get_type_abort(private_data, struct lock_context); @@ -611,7 +586,7 @@ lock_debug: if (args != NULL) { pid = vfork(); if (pid == 0) { - execvp(debug_locks, discard_const(args)); + execvp(debug_locks, args); _exit(0); } talloc_free(args);