Mercurial > pidgin
comparison src/core.c @ 3630:9682c0e022c6
[gaim-migrate @ 3753]
Yeah this will probably break a lot of shit knowing my luck. But hey, I really don't care what people thnk.
committer: Tailor Script <tailor@pidgin.im>
author | Rob Flynn <gaim@robflynn.com> |
---|---|
date | Fri, 11 Oct 2002 03:14:01 +0000 |
parents | 6c32036050cf |
children | d7e83b4db191 |
comparison
equal
deleted
inserted
replaced
3629:afc5bb164c5a | 3630:9682c0e022c6 |
---|---|
25 | 25 |
26 #include <glib.h> | 26 #include <glib.h> |
27 #include <stdio.h> | 27 #include <stdio.h> |
28 #include <stdlib.h> | 28 #include <stdlib.h> |
29 #include <sys/types.h> | 29 #include <sys/types.h> |
30 | |
31 #ifdef _WIN32 | |
32 #include <winsock.h> | |
33 #include <io.h> | |
34 #else | |
30 #include <sys/socket.h> | 35 #include <sys/socket.h> |
31 #include <sys/stat.h> | |
32 #include <sys/un.h> | 36 #include <sys/un.h> |
33 #include <unistd.h> | 37 #include <unistd.h> |
38 #endif | |
39 | |
40 #include <sys/stat.h> | |
34 #include <errno.h> | 41 #include <errno.h> |
35 #include <signal.h> | 42 #include <signal.h> |
36 #include <getopt.h> | 43 #include <getopt.h> |
37 #include <stdarg.h> | 44 #include <stdarg.h> |
38 #include <string.h> | 45 #include <string.h> |
39 | 46 |
40 #include "gaim.h" | 47 #include "gaim.h" |
41 #include "gaim-socket.h" | 48 #include "gaim-socket.h" |
42 | 49 |
50 #ifdef _WIN32 | |
51 #include "win32dep.h" | |
52 #endif | |
53 | |
43 static gint UI_fd = -1; | 54 static gint UI_fd = -1; |
44 int gaim_session = 0; | 55 int gaim_session = 0; |
45 GSList *uis = NULL; | 56 GSList *uis = NULL; |
46 | 57 |
47 static guchar *UI_build(guint32 *len, guchar type, guchar subtype, va_list args) | 58 static guchar *UI_build(guint32 *len, guchar type, guchar subtype, va_list args) |
130 UI_broadcast(data, len); | 141 UI_broadcast(data, len); |
131 | 142 |
132 g_free(data); | 143 g_free(data); |
133 } | 144 } |
134 | 145 |
146 #ifndef _WIN32 | |
135 static void meta_handler(struct UI *ui, guchar subtype, guchar *data) | 147 static void meta_handler(struct UI *ui, guchar subtype, guchar *data) |
136 { | 148 { |
137 struct gaim_cui_packet *p; | 149 struct gaim_cui_packet *p; |
138 switch (subtype) { | 150 switch (subtype) { |
139 case CUI_META_LIST: | 151 case CUI_META_LIST: |
441 debug_printf("session: %d\n", gaim_session); | 453 debug_printf("session: %d\n", gaim_session); |
442 | 454 |
443 if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) != -1) { | 455 if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) != -1) { |
444 mode_t m = umask(0177); | 456 mode_t m = umask(0177); |
445 saddr.sun_family = AF_UNIX; | 457 saddr.sun_family = AF_UNIX; |
446 g_snprintf(saddr.sun_path, sizeof(saddr.sun_path), "%s/gaim_%s.%d", | 458 |
447 g_get_tmp_dir(), g_get_user_name(), gaim_session); | 459 g_snprintf(saddr.sun_path, sizeof(saddr.sun_path), "%s" G_DIR_SEPARATOR_S "gaim_%s.%d", |
460 g_get_tmp_dir(), g_get_user_name(), gaim_session); | |
448 if (bind(fd, (struct sockaddr *)&saddr, sizeof(saddr)) != -1) | 461 if (bind(fd, (struct sockaddr *)&saddr, sizeof(saddr)) != -1) |
449 listen(fd, 100); | 462 listen(fd, 100); |
450 else { | 463 else { |
451 g_log(NULL, G_LOG_LEVEL_CRITICAL, | 464 g_log(NULL, G_LOG_LEVEL_CRITICAL, |
452 "Failed to assign %s to a socket (Error: %s)", | 465 "Failed to assign %s to a socket (Error: %s)", |
456 umask(m); | 469 umask(m); |
457 } else | 470 } else |
458 g_log(NULL, G_LOG_LEVEL_CRITICAL, "Unable to open socket: %s", strerror(errno)); | 471 g_log(NULL, G_LOG_LEVEL_CRITICAL, "Unable to open socket: %s", strerror(errno)); |
459 return fd; | 472 return fd; |
460 } | 473 } |
474 #endif /*! _WIN32*/ | |
461 | 475 |
462 int core_main() | 476 int core_main() |
463 { | 477 { |
464 /* | 478 /* |
465 GMainLoop *loop; | 479 GMainLoop *loop; |
466 */ | 480 */ |
467 | 481 |
482 #ifndef _WIN32 | |
468 GIOChannel *channel; | 483 GIOChannel *channel; |
469 | 484 |
470 UI_fd = open_socket(); | 485 UI_fd = open_socket(); |
471 if (UI_fd < 0) | 486 if (UI_fd < 0) |
472 return 1; | 487 return 1; |
473 | 488 |
474 channel = g_io_channel_unix_new(UI_fd); | 489 channel = g_io_channel_unix_new(UI_fd); |
475 g_io_add_watch(channel, G_IO_IN, socket_readable, NULL); | 490 g_io_add_watch(channel, G_IO_IN, socket_readable, NULL); |
476 g_io_channel_unref(channel); | 491 g_io_channel_unref(channel); |
492 #endif | |
493 | |
494 #ifdef _WIN32 | |
495 WORD wVersionRequested; | |
496 WSADATA wsaData; | |
497 int err; | |
498 | |
499 wVersionRequested = MAKEWORD( 2, 2 ); | |
500 | |
501 err = WSAStartup( wVersionRequested, &wsaData ); | |
502 if ( err != 0 ) { | |
503 return 1; | |
504 } | |
505 | |
506 /* Confirm that the winsock DLL supports 2.2 */ | |
507 /* Note that if the DLL supports versions greater than | |
508 2.2 in addition to 2.2, it will still return 2.2 in | |
509 wVersion since that is the version we requested. */ | |
510 | |
511 if ( LOBYTE( wsaData.wVersion ) != 2 || | |
512 HIBYTE( wsaData.wVersion ) != 2 ) { | |
513 debug_printf("Could not find a usable WinSock DLL. Oh well.\n"); | |
514 WSACleanup( ); | |
515 return 1; | |
516 } | |
517 #endif /* _WIN32 */ | |
477 | 518 |
478 /* | 519 /* |
479 loop = g_main_new(TRUE); | 520 loop = g_main_new(TRUE); |
480 g_main_run(loop); | 521 g_main_run(loop); |
481 */ | 522 */ |
483 return 0; | 524 return 0; |
484 } | 525 } |
485 | 526 |
486 void core_quit() | 527 void core_quit() |
487 { | 528 { |
529 #ifndef _WIN32 | |
488 char buf[1024]; | 530 char buf[1024]; |
489 close(UI_fd); | 531 close(UI_fd); |
490 sprintf(buf, "%s/gaim_%s.%d", g_get_tmp_dir(), g_get_user_name(), gaim_session); | 532 sprintf(buf, "%s" G_DIR_SEPARATOR_S "gaim_%s.%d", g_get_tmp_dir(), g_get_user_name(), gaim_session); |
491 unlink(buf); | 533 unlink(buf); |
492 debug_printf("Removed core\n"); | 534 debug_printf("Removed core\n"); |
493 } | 535 #else |
536 WSACleanup( ); | |
537 #endif | |
538 } |