summary refs log tree commit diff
path: root/pkgs/test/make-binary-wrapper
diff options
context:
space:
mode:
authorTobias Bergkvist <tobias@bergkv.ist>2021-12-01 23:27:26 +0100
committerTobias Bergkvist <tobias@bergkv.ist>2021-12-01 23:27:26 +0100
commita1e62262bc5b1a7a3f528b48369e88846ba5cd3f (patch)
treeaf37e360377c59b6bc8632b806ac25b7ec32826d /pkgs/test/make-binary-wrapper
parent3997e9de6794e3227aa0c852647abda42d8a8fe6 (diff)
downloadnixpkgs-a1e62262bc5b1a7a3f528b48369e88846ba5cd3f.tar
nixpkgs-a1e62262bc5b1a7a3f528b48369e88846ba5cd3f.tar.gz
nixpkgs-a1e62262bc5b1a7a3f528b48369e88846ba5cd3f.tar.bz2
nixpkgs-a1e62262bc5b1a7a3f528b48369e88846ba5cd3f.tar.lz
nixpkgs-a1e62262bc5b1a7a3f528b48369e88846ba5cd3f.tar.xz
nixpkgs-a1e62262bc5b1a7a3f528b48369e88846ba5cd3f.tar.zst
nixpkgs-a1e62262bc5b1a7a3f528b48369e88846ba5cd3f.zip
Replace concat3 with asprintf in set_env_prefix and set_env_suffix.
Diffstat (limited to 'pkgs/test/make-binary-wrapper')
-rw-r--r--pkgs/test/make-binary-wrapper/combination.c41
-rw-r--r--pkgs/test/make-binary-wrapper/prefix.c28
-rw-r--r--pkgs/test/make-binary-wrapper/suffix.c30
3 files changed, 40 insertions, 59 deletions
diff --git a/pkgs/test/make-binary-wrapper/combination.c b/pkgs/test/make-binary-wrapper/combination.c
index 4ab44281ef1..bb35d0d99f3 100644
--- a/pkgs/test/make-binary-wrapper/combination.c
+++ b/pkgs/test/make-binary-wrapper/combination.c
@@ -6,39 +6,36 @@
     --add-flags "-x -y -z" \
     --set MESSAGE2 WORLD
 
+#define _GNU_SOURCE         /* See feature_test_macros(7) */
 #include <unistd.h>
 #include <stdlib.h>
-#include <string.h>
 #include <assert.h>
 #include <stdio.h>
 
 #define assert_success(e) do { if ((e) < 0) { perror(#e); abort(); } } while (0)
 
-char *concat3(char *x, char *y, char *z) {
-    int xn = strlen(x);
-    int yn = strlen(y);
-    int zn = strlen(z);
-    char *res = malloc(sizeof(*res)*(xn + yn + zn + 1));
-    assert(res != NULL);
-    strncpy(res, x, xn);
-    strncpy(res + xn, y, yn);
-    strncpy(res + xn + yn, z, zn);
-    res[xn + yn + zn] = '\0';
-    return res;
-}
-
-void set_env_prefix(char *env, char *sep, char *val) {
+void set_env_prefix(char *env, char *sep, char *prefix) {
     char *existing = getenv(env);
-    if (existing) val = concat3(val, sep, existing);
-    assert_success(setenv(env, val, 1));
-    if (existing) free(val);
+    if (existing) {
+        char *val;
+        assert_success(asprintf(&val, "%s%s%s", prefix, sep, existing));
+        assert_success(setenv(env, val, 1));
+        free(val);
+    } else {
+        assert_success(setenv(env, prefix, 1));
+    }
 }
 
-void set_env_suffix(char *env, char *sep, char *val) {
+void set_env_suffix(char *env, char *sep, char *suffix) {
     char *existing = getenv(env);
-    if (existing) val = concat3(existing, sep, val);
-    assert_success(setenv(env, val, 1));
-    if (existing) free(val);
+    if (existing) {
+        char *val;
+        assert_success(asprintf(&val, "%s%s%s", existing, sep, suffix));
+        assert_success(setenv(env, val, 1));
+        free(val);
+    } else {
+        assert_success(setenv(env, suffix, 1));
+    }
 }
 
 int main(int argc, char **argv) {
diff --git a/pkgs/test/make-binary-wrapper/prefix.c b/pkgs/test/make-binary-wrapper/prefix.c
index 8ca0ad94a6d..de431168bff 100644
--- a/pkgs/test/make-binary-wrapper/prefix.c
+++ b/pkgs/test/make-binary-wrapper/prefix.c
@@ -2,32 +2,24 @@
     --prefix PATH : /usr/bin/ \
     --prefix PATH : /usr/local/bin/
 
+#define _GNU_SOURCE         /* See feature_test_macros(7) */
 #include <unistd.h>
 #include <stdlib.h>
-#include <string.h>
 #include <assert.h>
 #include <stdio.h>
 
 #define assert_success(e) do { if ((e) < 0) { perror(#e); abort(); } } while (0)
 
-char *concat3(char *x, char *y, char *z) {
-    int xn = strlen(x);
-    int yn = strlen(y);
-    int zn = strlen(z);
-    char *res = malloc(sizeof(*res)*(xn + yn + zn + 1));
-    assert(res != NULL);
-    strncpy(res, x, xn);
-    strncpy(res + xn, y, yn);
-    strncpy(res + xn + yn, z, zn);
-    res[xn + yn + zn] = '\0';
-    return res;
-}
-
-void set_env_prefix(char *env, char *sep, char *val) {
+void set_env_prefix(char *env, char *sep, char *prefix) {
     char *existing = getenv(env);
-    if (existing) val = concat3(val, sep, existing);
-    assert_success(setenv(env, val, 1));
-    if (existing) free(val);
+    if (existing) {
+        char *val;
+        assert_success(asprintf(&val, "%s%s%s", prefix, sep, existing));
+        assert_success(setenv(env, val, 1));
+        free(val);
+    } else {
+        assert_success(setenv(env, prefix, 1));
+    }
 }
 
 int main(int argc, char **argv) {
diff --git a/pkgs/test/make-binary-wrapper/suffix.c b/pkgs/test/make-binary-wrapper/suffix.c
index 31059c86e7a..3fcb338a610 100644
--- a/pkgs/test/make-binary-wrapper/suffix.c
+++ b/pkgs/test/make-binary-wrapper/suffix.c
@@ -2,32 +2,24 @@
     --suffix PATH : /usr/bin/ \
     --suffix PATH : /usr/local/bin/
 
+#define _GNU_SOURCE         /* See feature_test_macros(7) */
 #include <unistd.h>
 #include <stdlib.h>
-#include <string.h>
 #include <assert.h>
 #include <stdio.h>
 
 #define assert_success(e) do { if ((e) < 0) { perror(#e); abort(); } } while (0)
 
-char *concat3(char *x, char *y, char *z) {
-    int xn = strlen(x);
-    int yn = strlen(y);
-    int zn = strlen(z);
-    char *res = malloc(sizeof(*res)*(xn + yn + zn + 1));
-    assert(res != NULL);
-    strncpy(res, x, xn);
-    strncpy(res + xn, y, yn);
-    strncpy(res + xn + yn, z, zn);
-    res[xn + yn + zn] = '\0';
-    return res;
-}
-
-void set_env_suffix(char *env, char *sep, char *val) {
+void set_env_suffix(char *env, char *sep, char *suffix) {
     char *existing = getenv(env);
-    if (existing) val = concat3(existing, sep, val);
-    assert_success(setenv(env, val, 1));
-    if (existing) free(val);
+    if (existing) {
+        char *val;
+        assert_success(asprintf(&val, "%s%s%s", existing, sep, suffix));
+        assert_success(setenv(env, val, 1));
+        free(val);
+    } else {
+        assert_success(setenv(env, suffix, 1));
+    }
 }
 
 int main(int argc, char **argv) {
@@ -35,4 +27,4 @@ int main(int argc, char **argv) {
     set_env_suffix("PATH", ":", "/usr/local/bin/");
     argv[0] = "/path/to/executable";
     return execv("/path/to/executable", argv);
-}
\ No newline at end of file
+}