]> xenbits.xensource.com Git - libvirt.git/commitdiff
commandhelper: Factor out printEnvironment
authorTim Wiederhake <twiederh@redhat.com>
Mon, 1 Feb 2021 11:27:53 +0000 (12:27 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Tue, 2 Feb 2021 14:00:54 +0000 (15:00 +0100)
Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
tests/commandhelper.c

index ec54f55eb68deae3617bd4dbb351ed1da8b2f036..842cc729423023e7d3f3b09239b322113c1fe816 100644 (file)
@@ -106,11 +106,44 @@ static int envsort(const void *a, const void *b)
     }
 }
 
+static int printEnvironment(FILE *log)
+{
+    char **newenv;
+    size_t length;
+    size_t i;
+    int ret = -1;
+
+    for (length = 0; environ[length]; length++) {
+    }
+
+    if (!(newenv = malloc(sizeof(*newenv) * length)))
+        goto cleanup;
+
+    for (i = 0; i < length; i++) {
+        newenv[i] = environ[i];
+    }
+
+    qsort(newenv, length, sizeof(newenv[0]), envsort);
+
+    for (i = 0; i < length; i++) {
+        /* Ignore the variables used to instruct the loader into
+         * behaving differently, as they could throw the tests off. */
+        if (!STRPREFIX(newenv[i], "LD_"))
+            fprintf(log, "ENV:%s\n", newenv[i]);
+    }
+
+    ret = 0;
+
+ cleanup:
+    if (newenv)
+        free(newenv);
+    return ret;
+}
+
 int main(int argc, char **argv) {
     struct Arguments *args = parseArguments(argc, argv);
-    size_t i, n;
+    size_t i;
     int open_max;
-    char **newenv = NULL;
     char *cwd;
     FILE *log = fopen(abs_builddir "/commandhelper.log", "w");
     int ret = EXIT_FAILURE;
@@ -126,25 +159,9 @@ int main(int argc, char **argv) {
 
     printArguments(log, argc, argv);
 
-    for (n = 0; environ[n]; n++) {
-    }
-
-    if (!(newenv = malloc(sizeof(*newenv) * n)))
+    if (printEnvironment(log) != 0)
         goto cleanup;
 
-    for (i = 0; i < n; i++) {
-        newenv[i] = environ[i];
-    }
-
-    qsort(newenv, n, sizeof(newenv[0]), envsort);
-
-    for (i = 0; i < n; i++) {
-        /* Ignore the variables used to instruct the loader into
-         * behaving differently, as they could throw the tests off. */
-        if (!STRPREFIX(newenv[i], "LD_"))
-            fprintf(log, "ENV:%s\n", newenv[i]);
-    }
-
     open_max = sysconf(_SC_OPEN_MAX);
     if (open_max < 0)
         goto cleanup;
@@ -275,8 +292,6 @@ int main(int argc, char **argv) {
         free(buffers[i]);
     if (args)
         free(args);
-    if (newenv)
-        free(newenv);
     if (log)
         fclose(log);
     return ret;