summaryrefslogtreecommitdiff
path: root/misc/amanda-perl-wrapper/files/perl-amanda.c.in
diff options
context:
space:
mode:
Diffstat (limited to 'misc/amanda-perl-wrapper/files/perl-amanda.c.in')
-rw-r--r--misc/amanda-perl-wrapper/files/perl-amanda.c.in24
1 files changed, 24 insertions, 0 deletions
diff --git a/misc/amanda-perl-wrapper/files/perl-amanda.c.in b/misc/amanda-perl-wrapper/files/perl-amanda.c.in
new file mode 100644
index 000000000000..6b7d6ebb89d0
--- /dev/null
+++ b/misc/amanda-perl-wrapper/files/perl-amanda.c.in
@@ -0,0 +1,24 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+int
+main(int argc, char *const argv[], char *const envp[])
+{
+ int i, len = 0;
+ char **argv2 = malloc(sizeof(char*) * (argc + 1));
+ argv2[0] = "%%LOCALBASE%%/bin/perl";
+ for (i = 1; i < argc + 1; i++) {
+ argv2[i] = argv[i];
+ }
+ for (i = 0; envp[i]; i++) {
+ len++;
+ }
+ char **envp2 = malloc(sizeof(char*) * (len + 2));
+ envp2[0] = "LD_PRELOAD=%%LIBTHR%%";
+ /* Copy last null, too. */
+ for (i = 0; i < len + 1; i++) {
+ envp2[i + 1] = envp[i];
+ }
+ return execve(argv2[0], argv2, envp2);
+}