diff options
Diffstat (limited to 'misc/amanda-perl-wrapper/files/perl-amanda.c.in')
-rw-r--r-- | misc/amanda-perl-wrapper/files/perl-amanda.c.in | 24 |
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); +} |