summaryrefslogtreecommitdiff
path: root/src/sysexec.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/sysexec.h')
-rw-r--r--src/sysexec.h39
1 files changed, 1 insertions, 38 deletions
diff --git a/src/sysexec.h b/src/sysexec.h
index 23a84d0..5872454 100644
--- a/src/sysexec.h
+++ b/src/sysexec.h
@@ -35,43 +35,6 @@
#ifndef _SYSEXEC_H_
#define _SYSEXEC_H_
-int uanytun_exec(const char* script, char* const argv[], char* const evp[])
-{
- if(!script)
- return -1;
-
- pid_t pid;
- pid = fork();
- if(!pid) {
- int fd;
- for (fd=getdtablesize();fd>=0;--fd) // close all file descriptors
- close(fd);
-
- fd = open("/dev/null",O_RDWR); // stdin
- if(fd == -1)
- log_printf(WARNING, "can't open stdin");
- else {
- if(dup(fd) == -1) // stdout
- log_printf(WARNING, "can't open stdout");
- if(dup(fd) == -1) // stderr
- log_printf(WARNING, "can't open stderr");
- }
- execve(script, argv, evp);
- // if execl return, an error occurred
- log_printf(ERROR, "error on executing script: %s", strerror(errno));
- return -1;
- }
- int status = 0;
- waitpid(pid, &status, 0);
- if(WIFEXITED(status))
- log_printf(NOTICE, "script '%s' returned %d", script, WEXITSTATUS(status));
- else if(WIFSIGNALED(status))
- log_printf(NOTICE, "script '%s' terminated after signal %d", script, WTERMSIG(status));
- else
- log_printf(ERROR, "executing script: unkown error");
-
- return status;
-
-}
+int uanytun_exec(const char* script, char* const argv[], char* const evp[]);
#endif