X-Git-Url: https://git.syn-net.org/debian/?p=anytun.git;a=blobdiff_plain;f=src%2FsysExec.h;h=b5400b975eab05b8005a012e7270c2243cb1f0fd;hp=e6084726112cd382d2d13f160f7871738afd4ccb;hb=ece844834d2cecc028ce81ca283f5d441088580e;hpb=bb834fe0ed7a38b724f49b944adb801634eb6194 diff --git a/src/sysExec.h b/src/sysExec.h index e608472..b5400b9 100644 --- a/src/sysExec.h +++ b/src/sysExec.h @@ -33,8 +33,6 @@ #ifndef ANYTUN_sysExec_h_INCLUDED #define ANYTUN_sysExec_h_INCLUDED -#ifndef NO_EXEC - #include #include #include @@ -42,11 +40,35 @@ typedef std::vector StringVector; typedef std::list StringList; -void anytun_exec(std::string const& script); -void anytun_exec(std::string const& script, StringVector const& args); -void anytun_exec(std::string const& script, StringList const& env); -void anytun_exec(std::string const& script, StringVector const& args, StringList const& env); -void waitForScript(std::string const& script, pid_t pid, int pipefd); +class SysExec +{ + public: + SysExec(std::string const& script); + SysExec(std::string const& script, StringVector args); + SysExec(std::string const& script, StringList env); + SysExec(std::string const& script, StringVector args, StringList env); + ~SysExec(); + + int waitForScript(); + int getReturnCode() const; + + static void waitAndDestroy(SysExec*& s); + private: + void doExec(StringVector args, StringList env); + + std::string script_; + bool closed_; +#ifdef _MSC_VER + PROCESS_INFORMATION process_info_; + DWORD return_code_; +#else + pid_t pid_; + int pipefd_; + int return_code_; #endif + + +}; + #endif