#include "runner.h" #include "tier0/platform.h" #include "tier1/utlstring.h" #include "tier1/utlvector.h" #include "unistd.h" #include "sys/wait.h" int IRunner::Run(CUtlString szName, CUtlVector& args) { pid_t pid = fork(); if (pid < 0) Plat_FatalErrorFunc("Failed to fork"); /* child */ if (pid == 0) { CUtlVector execargs; execargs.AppendTail(szName); for (auto &arg: args) { V_printf("%s\n",arg.GetString()); execargs.AppendTail(arg); } execargs.AppendTail(0); execvp(szName, (char *const*)execargs.GetData()); } /* parent */ wait(NULL); return 0; } int IRunner::Run(CUtlString szName, CUtlString szDirectory, CUtlVector& args) { pid_t pid = fork(); if (pid < 0) Plat_FatalErrorFunc("Failed to fork"); /* child */ if (pid == 0) { CUtlVector execargs; execargs.AppendTail(szName); for (auto &arg: args) { execargs.AppendTail(arg); } execargs.AppendTail(0); chdir(szDirectory.GetString()); execvp(szName, (char *const*)execargs.GetData()); } /* parent */ wait(NULL); return 0; } int IRunner::Run(CUtlString szName, CUtlString szDirectory, CUtlVector& args, CUtlVector& environment) { }