diff options
author | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2005-10-14 08:26:02 +0000 |
---|---|---|
committer | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2005-10-14 08:26:02 +0000 |
commit | 57cf5f7e26b171e680ba27958a414703a51768e4 (patch) | |
tree | aef2d62f4e390432cb52db3ea1a2b3a2056df624 /src/main.c | |
parent | 8db157d7a1a1fdc49dda5de5eff7bb29766a6009 (diff) |
win32: prohibit duplicate exec using CreateMutex().
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@648 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'src/main.c')
-rw-r--r-- | src/main.c | 22 |
1 files changed, 21 insertions, 1 deletions
@@ -87,6 +87,10 @@ # include "ssl.h" #endif +#ifdef G_OS_WIN32 +# include <windows.h> +#endif + #include "version.h" gchar *prog_version; @@ -163,11 +167,11 @@ int main(int argc, char *argv[]) app_init(); parse_cmd_opt(argc, argv); -#ifdef G_OS_UNIX /* check and create unix domain socket for remote operation */ lock_socket = prohibit_duplicate_launch(); if (lock_socket < 0) return 0; +#ifdef G_OS_UNIX if (cmd.status || cmd.status_full) { puts("0 Sylpheed not running."); lock_socket_remove(); @@ -742,6 +746,21 @@ static gchar *get_socket_name(void) static gint prohibit_duplicate_launch(void) { +#ifdef G_OS_WIN32 + HANDLE hmutex; + + hmutex = CreateMutexA(NULL, FALSE, "Sylpheed"); + if (!hmutex) { + g_warning("cannot create Mutex\n"); + return -1; + } + if (GetLastError() == ERROR_ALREADY_EXISTS) { + debug_print(_("another Sylpheed is already running.\n")); + return -1; + } + + return 0; +#else gint uxsock; gchar *path; @@ -821,6 +840,7 @@ static gint prohibit_duplicate_launch(void) fd_close(uxsock); return -1; +#endif } static gint lock_socket_remove(void) |