X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fprocess.c;h=cbb190a5a9abea30241af0dce8769b602a02d37a;hb=0c54f365534fcb345e87961e71d452e269e170fe;hp=37ba84b65e3aed922baf1ed406cab026fc4d2428;hpb=3254e75afe0ff28fed68d8682f61c184f442161d;p=tinc diff --git a/src/process.c b/src/process.c index 37ba84b6..cbb190a5 100644 --- a/src/process.c +++ b/src/process.c @@ -1,7 +1,7 @@ /* process.c -- process management functions Copyright (C) 1999-2005 Ivo Timmermans, - 2000-2012 Guus Sliepen + 2000-2013 Guus Sliepen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -25,7 +25,9 @@ #include "control.h" #include "device.h" #include "edge.h" +#include "event.h" #include "logger.h" +#include "names.h" #include "net.h" #include "node.h" #include "process.h" @@ -37,17 +39,12 @@ bool do_detach = true; bool sigalrm = false; -extern char *identname; extern char **g_argv; extern bool use_logfile; /* Some functions the less gifted operating systems might lack... */ #ifdef HAVE_MINGW -extern char *identname; -extern char *program_name; -extern char **g_argv; - static SC_HANDLE manager = NULL; static SC_HANDLE service = NULL; static SERVICE_STATUS status = {0}; @@ -127,7 +124,7 @@ DWORD WINAPI controlhandler(DWORD request, DWORD type, LPVOID boe, LPVOID bah) { return ERROR_CALL_NOT_IMPLEMENTED; } - event_loopexit(NULL); + event_exit(); status.dwWaitHint = 30000; status.dwCurrentState = SERVICE_STOP_PENDING; SetServiceStatus(statushandle, &status); @@ -262,8 +259,8 @@ bool execute_script(const char *name, char **envp) { } } -#ifdef WEXITSTATUS if(status != -1) { +#ifdef WEXITSTATUS if(WIFEXITED(status)) { /* Child exited by itself */ if(WEXITSTATUS(status)) { logger(DEBUG_ALWAYS, LOG_ERR, "Script %s exited with non-zero status %d", @@ -278,11 +275,11 @@ bool execute_script(const char *name, char **envp) { logger(DEBUG_ALWAYS, LOG_ERR, "Script %s terminated abnormally", name); return false; } +#endif } else { logger(DEBUG_ALWAYS, LOG_ERR, "System call `%s' failed: %s", "system", strerror(errno)); return false; } -#endif #endif return true; }