option to allow only one instance xchat to run

This commit is contained in:
Berke Viktor
2011-11-25 09:59:39 +01:00
parent b15fe1ddf1
commit fb1a986332
4 changed files with 31 additions and 2 deletions

View File

@@ -26,7 +26,9 @@
#define WANTSOCKET
#include "inet.h"
#ifndef WIN32
#ifdef WIN32
#include <windows.h>
#else
#include <sys/wait.h>
#include <signal.h>
#endif
@@ -903,7 +905,11 @@ int
main (int argc, char *argv[])
{
int ret;
#ifdef WIN32
HANDLE mutex;
#endif
srand (time (0)); /* CL: do this only once! */
#ifdef SOCKS
@@ -920,6 +926,21 @@ main (int argc, char *argv[])
load_config ();
#ifdef WIN32
if (prefs.gui_one_instance)
{
DWORD error;
mutex = CreateMutex (NULL, TRUE, "Local\xchat");
error = GetLastError ();
if (error == ERROR_ALREADY_EXISTS || mutex == NULL)
{
return 1;
}
}
#endif
#ifdef USE_LIBPROXY
libproxy_factory = px_proxy_factory_new();
#endif
@@ -945,6 +966,11 @@ main (int argc, char *argv[])
#ifdef WIN32
WSACleanup ();
if (prefs.gui_one_instance)
{
CloseHandle (mutex);
}
#endif
return 0;