| 97 |
97 |
|
| 98 |
98 |
static gint lock_socket = -1;
|
| 99 |
99 |
static gint lock_socket_tag = 0;
|
|
100 |
static GIOChannel *lock_ch = NULL;
|
| 100 |
101 |
|
| 101 |
102 |
static struct RemoteCmd {
|
| 102 |
103 |
gboolean receive;
|
| ... | ... | |
| 124 |
125 |
static gchar *get_socket_name (void);
|
| 125 |
126 |
static gint prohibit_duplicate_launch (void);
|
| 126 |
127 |
static gint lock_socket_remove (void);
|
| 127 |
|
static void lock_socket_input_cb (gpointer data,
|
| 128 |
|
gint source,
|
| 129 |
|
GdkInputCondition condition);
|
|
128 |
static gboolean lock_socket_input_cb (GIOChannel *source,
|
|
129 |
GIOCondition condition,
|
|
130 |
gpointer data);
|
| 130 |
131 |
|
| 131 |
132 |
static void remote_command_exec (void);
|
| 132 |
133 |
static void migrate_old_config (void);
|
| ... | ... | |
| 228 |
229 |
|
| 229 |
230 |
#ifdef G_OS_UNIX
|
| 230 |
231 |
/* register the callback of unix domain socket input */
|
| 231 |
|
lock_socket_tag = gdk_input_add(lock_socket,
|
| 232 |
|
GDK_INPUT_READ | GDK_INPUT_EXCEPTION,
|
| 233 |
|
lock_socket_input_cb,
|
| 234 |
|
mainwin);
|
|
232 |
lock_ch = g_io_channel_unix_new(lock_socket);
|
|
233 |
lock_socket_tag = g_io_add_watch(lock_ch,
|
|
234 |
G_IO_IN|G_IO_PRI|G_IO_ERR,
|
|
235 |
lock_socket_input_cb, mainwin);
|
| 235 |
236 |
#endif
|
| 236 |
237 |
|
| 237 |
238 |
set_log_handlers(TRUE);
|
| ... | ... | |
| 861 |
862 |
if (lock_socket < 0) return -1;
|
| 862 |
863 |
|
| 863 |
864 |
if (lock_socket_tag > 0)
|
| 864 |
|
gdk_input_remove(lock_socket_tag);
|
| 865 |
|
fd_close(lock_socket);
|
|
865 |
g_source_remove(lock_socket_tag);
|
|
866 |
if (lock_ch) {
|
|
867 |
g_io_channel_shutdown(lock_ch, FALSE, NULL);
|
|
868 |
g_io_channel_unref(lock_ch);
|
|
869 |
lock_ch = NULL;
|
|
870 |
}
|
| 866 |
871 |
filename = get_socket_name();
|
| 867 |
872 |
g_unlink(filename);
|
| 868 |
873 |
#endif
|
| ... | ... | |
| 891 |
896 |
return folders;
|
| 892 |
897 |
}
|
| 893 |
898 |
|
| 894 |
|
static void lock_socket_input_cb(gpointer data,
|
| 895 |
|
gint source,
|
| 896 |
|
GdkInputCondition condition)
|
|
899 |
static gboolean lock_socket_input_cb(GIOChannel *source, GIOCondition condition,
|
|
900 |
gpointer data)
|
| 897 |
901 |
{
|
| 898 |
902 |
MainWindow *mainwin = (MainWindow *)data;
|
| 899 |
|
gint sock;
|
|
903 |
gint fd, sock;
|
| 900 |
904 |
gchar buf[BUFFSIZE];
|
| 901 |
905 |
|
| 902 |
|
sock = fd_accept(source);
|
|
906 |
fd = g_io_channel_unix_get_fd(source);
|
|
907 |
sock = fd_accept(fd);
|
| 903 |
908 |
fd_gets(sock, buf, sizeof(buf));
|
| 904 |
909 |
|
| 905 |
910 |
if (!strncmp(buf, "popup", 5)) {
|
| ... | ... | |
| 944 |
949 |
}
|
| 945 |
950 |
|
| 946 |
951 |
fd_close(sock);
|
|
952 |
|
|
953 |
return TRUE;
|
| 947 |
954 |
}
|
| 948 |
955 |
|
| 949 |
956 |
static void remote_command_exec(void)
|