mirror of
https://github.com/ZoiteChat/zoitechat.git
synced 2026-04-25 12:20:18 +00:00
option to allow only one instance xchat to run
This commit is contained in:
@@ -436,6 +436,7 @@ const struct prefs vars[] = {
|
||||
{"gui_lagometer", P_OFFINT (lagometer), TYPE_INT},
|
||||
{"gui_license", P_OFFSET (gui_license), TYPE_STR},
|
||||
{"gui_mode_buttons", P_OFFINT (chanmodebuttons), TYPE_BOOL},
|
||||
{"gui_one_instance", P_OFFINT (gui_one_instance), TYPE_BOOL},
|
||||
{"gui_pane_left_size", P_OFFINT (gui_pane_left_size), TYPE_INT},
|
||||
{"gui_pane_right_size", P_OFFINT (gui_pane_right_size), TYPE_INT},
|
||||
{"gui_quit_dialog", P_OFFINT (gui_quit_dialog), TYPE_BOOL},
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -186,6 +186,7 @@ struct xchatprefs
|
||||
int gui_usermenu;
|
||||
int gui_join_dialog;
|
||||
int gui_quit_dialog;
|
||||
int gui_one_instance;
|
||||
int dialog_left;
|
||||
int dialog_top;
|
||||
int dialog_width;
|
||||
|
||||
Reference in New Issue
Block a user