[Libguestfs] [PATCH libnbd v2 1/4] generator/states-connect-socket-activation.c: Refactor environment prep

Richard W.M. Jones rjones at redhat.com
Mon Jan 30 22:55:18 UTC 2023


Some small refactorings which should not affect the code:

 - Use string_vector_reserve instead of checking each time we append.

 - Get rid of the hard-coded length, and use strncmp (..., s, strlen (s)).
   The compiler should compile this to the same code.
---
 generator/states-connect-socket-activation.c | 23 +++++++-------------
 1 file changed, 8 insertions(+), 15 deletions(-)

diff --git a/generator/states-connect-socket-activation.c b/generator/states-connect-socket-activation.c
index 9a83834915..24544018fb 100644
--- a/generator/states-connect-socket-activation.c
+++ b/generator/states-connect-socket-activation.c
@@ -34,9 +34,6 @@
 /* This is baked into the systemd socket activation API. */
 #define FIRST_SOCKET_ACTIVATION_FD 3
 
-/* == strlen ("LISTEN_PID=") | strlen ("LISTEN_FDS=") */
-#define PREFIX_LENGTH 11
-
 extern char **environ;
 
 /* Prepare environment for calling execvp when doing systemd socket
@@ -53,26 +50,22 @@ prepare_socket_activation_environment (string_vector *env)
 
   assert (env->len == 0);
 
-  /* Reserve slots env[0] and env[1]. */
+  /* Reserve slots env[0]..env[1] */
+  if (string_vector_reserve (env, 2) == -1)
+    goto err;
   p = strdup ("LISTEN_PID=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
   if (p == NULL)
     goto err;
-  if (string_vector_append (env, p) == -1) {
-    free (p);
-    goto err;
-  }
+  string_vector_append (env, p);
   p = strdup ("LISTEN_FDS=1");
   if (p == NULL)
     goto err;
-  if (string_vector_append (env, p) == -1) {
-    free (p);
-    goto err;
-  }
+  string_vector_append (env, p);
 
   /* Append the current environment, but remove LISTEN_PID, LISTEN_FDS. */
   for (i = 0; environ[i] != NULL; ++i) {
-    if (strncmp (environ[i], "LISTEN_PID=", PREFIX_LENGTH) != 0 &&
-        strncmp (environ[i], "LISTEN_FDS=", PREFIX_LENGTH) != 0) {
+    if (strncmp (environ[i], "LISTEN_PID=", strlen ("LISTEN_PID=")) != 0 &&
+        strncmp (environ[i], "LISTEN_FDS=", strlen ("LISTEN_FDS=")) != 0) {
       char *copy = strdup (environ[i]);
       if (copy == NULL)
         goto err;
@@ -194,7 +187,7 @@  CONNECT_SA.START:
     char buf[32];
     const char *v =
       nbd_internal_fork_safe_itoa ((long) getpid (), buf, sizeof buf);
-    strcpy (&env.ptr[0][PREFIX_LENGTH], v);
+    strcpy (&env.ptr[0][strlen ("LISTEN_FDS=")], v);
 
     /* Restore SIGPIPE back to SIG_DFL. */
     signal (SIGPIPE, SIG_DFL);
-- 
2.39.0



More information about the Libguestfs mailing list