X-Git-Url: https://git.syn-net.org/?p=debian%2Fuanytun.git;a=blobdiff_plain;f=src%2Fsysexec.h;h=0aabde125f9623c8d04aa14cf3d094aaf50edecd;hp=b724433e44a1efd690bec0bb76be763fe19ee458;hb=e3f8e33112e2191999c6d6f6b6a767c72db800a0;hpb=b81b2c1954fe3e3317e6fa260c5ffdc9eeee966c diff --git a/src/sysexec.h b/src/sysexec.h index b724433..0aabde1 100644 --- a/src/sysexec.h +++ b/src/sysexec.h @@ -20,8 +20,9 @@ * This file is part of uAnytun. * * uAnytun is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * any later version. * * uAnytun is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -32,46 +33,9 @@ * along with uAnytun. If not, see . */ -#ifndef _SYSEXEC_H_ -#define _SYSEXEC_H_ +#ifndef UANYTUN_sysexec_h_INCLUDED +#define UANYTUN_sysexec_h_INCLUDED -int exec_script(const char* script, const char* ifname) -{ - if(!script || !ifname) - 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"); - } - execl("/bin/sh", "/bin/sh", script, ifname, NULL); - // 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