From c4b68d3e47a212bfa2b6b03012d52d204cad9f97 Mon Sep 17 00:00:00 2001
From: Matt Ezell <ezellma@ornl.gov>
Date: Wed, 17 Oct 2018 14:12:27 -0600
Subject: [PATCH] Refactor function to return early

In preparation for next commit.

Bug 5680
---
 src/srun/srun.c | 56 ++++++++++++++++++++++++-------------------------
 1 file changed, 27 insertions(+), 29 deletions(-)

diff --git a/src/srun/srun.c b/src/srun/srun.c
index c187d27771f..fe89f4ac8a5 100644
--- a/src/srun/srun.c
+++ b/src/srun/srun.c
@@ -844,37 +844,35 @@ static void _pty_restore(void)
 
 static void _setup_env_working_cluster(void)
 {
-	char *working_env  = NULL;
+	char *working_env, *addr_ptr, *port_ptr, *rpc_ptr;
 
-	if ((working_env = xstrdup(getenv("SLURM_WORKING_CLUSTER")))) {
-		char *addr_ptr, *port_ptr, *rpc_ptr;
+	if ((working_env = xstrdup(getenv("SLURM_WORKING_CLUSTER"))) == NULL)
+		return;
 
-		if (!(addr_ptr = strchr(working_env,  ':')) ||
-		    !(port_ptr = strchr(addr_ptr + 1, ':')) ||
-		    !(rpc_ptr  = strchr(port_ptr + 1, ':'))) {
-			error("malformed cluster addr and port in SLURM_WORKING_CLUSTER env var: '%s'",
-			      working_env);
-			exit(1);
-		}
+	/* Format is cluster_name:address:port:rpc[:plugin_id_select] */
+	if (!(addr_ptr = strchr(working_env,  ':')) ||
+	    !(port_ptr = strchr(addr_ptr + 1, ':')) ||
+	    !(rpc_ptr  = strchr(port_ptr + 1, ':'))) {
+		error("malformed cluster addr and port in SLURM_WORKING_CLUSTER env var: '%s'",
+		      working_env);
+		exit(1);
+	}
 
-		*addr_ptr++ = '\0';
-		*port_ptr++ = '\0';
-		*rpc_ptr++  = '\0';
-
-		if (xstrcmp(slurmctld_conf.cluster_name, working_env)) {
-			working_cluster_rec =
-				xmalloc(sizeof(slurmdb_cluster_rec_t));
-			slurmdb_init_cluster_rec(working_cluster_rec, false);
-
-			working_cluster_rec->control_host = xstrdup(addr_ptr);;
-			working_cluster_rec->control_port = strtol(port_ptr,
-								   NULL, 10);
-			working_cluster_rec->rpc_version  = strtol(rpc_ptr,
-								   NULL, 10);
-			slurm_set_addr(&working_cluster_rec->control_addr,
-				       working_cluster_rec->control_port,
-				       working_cluster_rec->control_host);
-		}
-		xfree(working_env);
+	*addr_ptr++ = '\0';
+	*port_ptr++ = '\0';
+	*rpc_ptr++  = '\0';
+
+	if (xstrcmp(slurmctld_conf.cluster_name, working_env)) {
+		working_cluster_rec = xmalloc(sizeof(slurmdb_cluster_rec_t));
+		slurmdb_init_cluster_rec(working_cluster_rec, false);
+
+		working_cluster_rec->name = xstrdup(working_env);
+		working_cluster_rec->control_host = xstrdup(addr_ptr);
+		working_cluster_rec->control_port = strtol(port_ptr, NULL, 10);
+		working_cluster_rec->rpc_version  = strtol(rpc_ptr, NULL, 10);
+		slurm_set_addr(&working_cluster_rec->control_addr,
+			       working_cluster_rec->control_port,
+			       working_cluster_rec->control_host);
 	}
+	xfree(working_env);
 }
-- 
GitLab