Changes in / [f665dab:96ace1b]
- Files:
-
- 1 added
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
.bzrignore
rf665dab r96ace1b 10 10 decode 11 11 encode 12 bitlbee.pc -
Makefile
rf665dab r96ace1b 11 11 # Program variables 12 12 objects = account.o bitlbee.o conf.o crypting.o help.o ini.o ipc.o irc.o irc_commands.o log.o nick.o query.o root_commands.o set.o storage.o storage_text.o unix.o url.o user.o util.o 13 headers = account.h bitlbee.h commands.h conf.h config.h crypting.h help.h ini.h ipc.h irc.h log.h nick.h query.h set.h sock.h storage.h url.h user.h protocols/http_client.h protocols/md5.h protocols/nogaim.h protocols/proxy.h protocols/sha.h protocols/ssl_client.h 13 14 subdirs = protocols 14 15 … … 22 23 $(MAKE) -C doc 23 24 24 uninstall: uninstall-bin uninstall-doc 25 uninstall: uninstall-bin uninstall-doc 25 26 @echo -e '\nmake uninstall does not remove files in '$(DESTDIR)$(ETCDIR)', you can use make uninstall-etc to do that.\n' 26 27 … … 58 59 uninstall-bin: 59 60 rm -f $(DESTDIR)$(BINDIR)/$(OUTFILE) 61 62 install-dev: 63 mkdir -p $(DESTDIR)$(INCLUDEDIR) 64 install -m 0644 $(headers) $(DESTDIR)$(INCLUDEDIR) 65 mkdir -p $(DESTDIR)$(PCDIR) 66 install -m 0644 bitlbee.pc $(DESTDIR)$(PCDIR) 67 68 uninstall-dev: 69 rm -f $(foreach hdr,$(headers),$(DESTDIR)$(INCLUDEDIR)/$(hdr)) 70 -rmdir $(DESTDIR)$(INCLUDEDIR) 71 rm -f $(DESTDIR)$(PCDIR)/bitlbee.pc 60 72 61 73 install-etc: -
bitlbee.c
rf665dab r96ace1b 118 118 if( global.conf->runmode == RUNMODE_FORKDAEMON ) 119 119 ipc_master_load_state(); 120 121 if( global.conf->runmode == RUNMODE_DAEMON || 122 global.conf->runmode == RUNMODE_FORKDAEMON ) 123 ipc_master_listen_socket(); 120 124 121 125 if( ( fp = fopen( global.conf->pidfile, "w" ) ) ) -
bitlbee.h
rf665dab r96ace1b 102 102 #include "storage.h" 103 103 #include "set.h" 104 #include " protocols/nogaim.h"104 #include "nogaim.h" 105 105 #include "commands.h" 106 106 #include "account.h" -
conf.c
rf665dab r96ace1b 139 139 " -D Daemon mode. (Still EXPERIMENTAL!)\n" 140 140 " -F Forking daemon. (one process per client)\n" 141 " -P Specify PID-file (not for inetd mode)\n" 141 142 " -i Specify the interface (by IP address) to listen on.\n" 142 143 " (Default: 0.0.0.0 (any interface))\n" -
configure
rf665dab r96ace1b 15 15 config='/var/lib/bitlbee/' 16 16 pidfile='/var/run/bitlbee.pid' 17 ipcsocket='/var/run/bitlbee' 17 18 plugindir='$prefix/lib/bitlbee' 19 pcdir='$prefix/lib/pkgconfig' 20 includedir='$prefix/include/bitlbee' 18 21 19 22 msn=1 … … 50 53 --pidfile=... $pidfile 51 54 --config=... $config 55 --ipcsocket=... $ipcsocket 52 56 53 57 --msn=0/1 Disable/enable MSN part $msn … … 79 83 config=`eval echo "$config/" | sed 's/\/\{1,\}/\//g'` 80 84 plugindir=`eval echo "$plugindir/" | sed 's/\/\{1,\}/\//g'` 81 pidfile=`eval echo "$pidfile/" | sed 's/\/\{1,\}/\//g'` 85 pidfile=`eval echo "$pidfile" | sed 's/\/\{1,\}/\//g'` 86 ipcsocket=`eval echo "$ipcsocket" | sed 's/\/\{1,\}/\//g'` 87 includedir=`eval echo "$includedir" | sed 's/\/\{1,\}/\//g'` 88 pcdir=`eval echo "$pcdir" | sed 's/\/\{1,\}/\//g'` 82 89 83 90 cat<<EOF>Makefile.settings … … 89 96 DATADIR=$datadir 90 97 PLUGINDIR=$plugindir 91 PIDFILE=$pidfile92 98 CONFIG=$config 99 IPCSOCKET=$ipcsocket 100 INCLUDEDIR=$includedir 101 PCDIR=$pcdir 93 102 94 103 ARCH=$arch … … 112 121 #define PLUGINDIR "$plugindir" 113 122 #define PIDFILE "$pidfile" 123 #define IPCSOCKET "$ipcsocket" 114 124 #define ARCH "$arch" 115 125 #define CPU "$cpu" … … 336 346 fi 337 347 348 cat <<EOF>bitlbee.pc 349 prefix=$prefix 350 includedir=$includedir 351 352 Name: bitlbee 353 Description: IRC to IM gateway 354 Requires: glib-2.0 355 Version: $BITLBEE_VERSION 356 Libs: 357 Cflags: -I\${includedir} 358 359 EOF 360 338 361 protocols='' 339 362 protoobjs='' -
doc/example_plugin.c
rf665dab r96ace1b 3 3 * a shared library and place it in the plugin directory: 4 4 * 5 * gcc -o example.so -shared example.c 5 * gcc -o example.so -shared example.c `pkg-config --cflags bitlbee` 6 6 * cp example.so /usr/local/lib/bitlbee 7 7 */ 8 8 #include <stdio.h> 9 #include <bitlbee.h> 9 10 10 11 void init_plugin(void) -
ipc.c
rf665dab r96ace1b 28 28 #include "ipc.h" 29 29 #include "commands.h" 30 #ifndef _WIN32 31 #include <sys/un.h> 32 #endif 30 33 31 34 GSList *child_list = NULL; … … 34 37 static void ipc_master_cmd_client( irc_t *data, char **cmd ) 35 38 { 39 /* Normally data points at an irc_t block, but for the IPC master 40 this is different. We think this scary cast is better than 41 creating a new command_t structure, just to make the compiler 42 happy. */ 36 43 struct bitlbee_child *child = (void*) data; 37 44 … … 457 464 } 458 465 466 467 static gboolean new_ipc_client (GIOChannel *gio, GIOCondition cond, gpointer data) 468 { 469 struct bitlbee_child *child = g_new0( struct bitlbee_child, 1 ); 470 int serversock; 471 472 serversock = g_io_channel_unix_get_fd(gio); 473 474 child->ipc_fd = accept(serversock, NULL, 0); 475 476 if (child->ipc_fd == -1) { 477 log_message( LOGLVL_WARNING, "Unable to accept connection on UNIX domain socket: %s", strerror(errno) ); 478 return TRUE; 479 } 480 481 child->ipc_inpa = gaim_input_add( child->ipc_fd, GAIM_INPUT_READ, ipc_master_read, child ); 482 483 child_list = g_slist_append( child_list, child ); 484 485 return TRUE; 486 } 487 488 #ifndef _WIN32 489 int ipc_master_listen_socket() 490 { 491 struct sockaddr_un un_addr; 492 int serversock; 493 GIOChannel *gio; 494 495 /* Clean up old socket files that were hanging around.. */ 496 if (unlink(IPCSOCKET) == -1 && errno != ENOENT) { 497 log_message( LOGLVL_ERROR, "Could not remove old IPC socket at %s: %s", IPCSOCKET, strerror(errno) ); 498 return 0; 499 } 500 501 un_addr.sun_family = AF_UNIX; 502 strcpy(un_addr.sun_path, IPCSOCKET); 503 504 serversock = socket(AF_UNIX, SOCK_STREAM, PF_UNIX); 505 506 if (serversock == -1) { 507 log_message( LOGLVL_WARNING, "Unable to create UNIX socket: %s", strerror(errno) ); 508 return 0; 509 } 510 511 if (bind(serversock, &un_addr, sizeof(un_addr)) == -1) { 512 log_message( LOGLVL_WARNING, "Unable to bind UNIX socket to %s: %s", IPCSOCKET, strerror(errno) ); 513 return 0; 514 } 515 516 if (listen(serversock, 5) == -1) { 517 log_message( LOGLVL_WARNING, "Unable to listen on UNIX socket: %s", strerror(errno) ); 518 return 0; 519 } 520 521 gio = g_io_channel_unix_new(serversock); 522 523 if (gio == NULL) { 524 log_message( LOGLVL_WARNING, "Unable to create IO channel for unix socket" ); 525 return 0; 526 } 527 528 g_io_add_watch(gio, G_IO_IN, new_ipc_client, NULL); 529 return 1; 530 } 531 #else 532 /* FIXME: Open named pipe \\.\BITLBEE */ 533 #endif 534 459 535 int ipc_master_load_state() 460 536 { -
ipc.h
rf665dab r96ace1b 57 57 void ipc_master_set_statefile( char *fn ); 58 58 int ipc_master_load_state(); 59 59 int ipc_master_listen_socket(); 60 60 61 61 extern GSList *child_list;
Note: See TracChangeset
for help on using the changeset viewer.