Changes in / [51bbec0:783e9b7]


Ignore:
Files:
23 edited

Legend:

Unmodified
Added
Removed
  • bitlbee.c

    r51bbec0 r783e9b7  
    5454        ;
    5555
    56         i = getaddrinfo( global.conf->iface, global.conf->port, &hints, &addrinfo_bind );
     56        i = getaddrinfo( global.conf->iface_in, global.conf->port, &hints, &addrinfo_bind );
    5757        if( i )
    5858        {
    5959                log_message( LOGLVL_ERROR, "Couldn't parse address `%s': %s",
    60                                            global.conf->iface, gai_strerror(i) );
     60                                           global.conf->iface_in, gai_strerror(i) );
    6161                return -1;
    6262        }
     
    226226        if( st == size )
    227227        {
    228                 g_free( irc->sendbuffer );
    229                 irc->sendbuffer = NULL;
    230                 irc->w_watch_source_id = 0;
    231                
    232228                if( irc->status & USTATUS_SHUTDOWN )
     229                {
    233230                        irc_free( irc );
     231                }
     232                else
     233                {
     234                        g_free( irc->sendbuffer );
     235                        irc->sendbuffer = NULL;
     236                        irc->w_watch_source_id = 0;
     237                }
    234238               
    235239                return FALSE;
  • bitlbee.conf

    r51bbec0 r783e9b7  
    3434# DaemonInterface = 0.0.0.0
    3535# DaemonPort = 6667
     36
     37## ClientInterface:
     38##
     39## If for any reason, you want BitlBee to use a specific address/interface
     40## for outgoing traffic (IM connections, HTTP(S), etc.), set it here.
     41##
     42# ClientInterface = 0.0.0.0
    3643
    3744## AuthMode
  • bitlbee.h

    r51bbec0 r783e9b7  
    156156gboolean bitlbee_shutdown( gpointer data, gint fd, b_input_condition cond );
    157157
     158char *set_eval_root_nick( set_t *set, char *new_nick );
     159
    158160extern global_t global;
    159161
  • conf.c

    r51bbec0 r783e9b7  
    4545        conf = g_new0( conf_t, 1 );
    4646       
    47         conf->iface = NULL;
     47        conf->iface_in = NULL;
     48        conf->iface_out = NULL;
    4849        conf->port = g_strdup( "6667" );
    4950        conf->nofork = 0;
     
    8283                if( opt == 'i' )
    8384                {
    84                         conf->iface = g_strdup( optarg );
     85                        conf->iface_in = g_strdup( optarg );
    8586                }
    8687                else if( opt == 'p' )
     
    202203                        else if( g_strcasecmp( ini->key, "daemoninterface" ) == 0 )
    203204                        {
    204                                 g_free( conf->iface );
    205                                 conf->iface = g_strdup( ini->value );
     205                                g_free( conf->iface_in );
     206                                conf->iface_in = g_strdup( ini->value );
    206207                        }
    207208                        else if( g_strcasecmp( ini->key, "daemonport" ) == 0 )
     
    209210                                g_free( conf->port );
    210211                                conf->port = g_strdup( ini->value );
     212                        }
     213                        else if( g_strcasecmp( ini->key, "clientinterface" ) == 0 )
     214                        {
     215                                g_free( conf->iface_out );
     216                                conf->iface_out = g_strdup( ini->value );
    211217                        }
    212218                        else if( g_strcasecmp( ini->key, "authmode" ) == 0 )
  • conf.h

    r51bbec0 r783e9b7  
    3232typedef struct conf
    3333{
    34         char *iface;
     34        char *iface_in, *iface_out;
    3535        char *port;
    3636        int nofork;
  • debian/changelog

    r51bbec0 r783e9b7  
    77bitlbee (1.2-4) unstable; urgency=low
    88
    9   * Not a real release, just a placeholder for the changelog.
    109  * Fixed init script to use the BITLBEE_OPTS variable, not an undefined
    11     DAEMON_OPT.
     10    DAEMON_OPT. (Closes: #474583)
    1211  * Added dependency information to the init script. (Closes: #472567)
    13 
    14  -- Wilmer van der Gaast <wilmer@gaast.net>  Sat, 29 Mar 2008 21:10:33 +0000
     12  * Added bitlbee-dev package. Patch from RISKO Gergely <risko@debian.org>
     13    with some small modifications. (Closes: #473480)
     14
     15 -- Wilmer van der Gaast <wilmer@gaast.net>  Wed, 07 May 2008 22:40:40 -0700
    1516
    1617bitlbee (1.2-3) unstable; urgency=low
  • debian/control

    r51bbec0 r783e9b7  
    1414 This program can be used as an IRC server which forwards everything you
    1515 say to people on other chat networks: Jabber, ICQ, AIM, MSN and Yahoo.
     16
     17Package: bitlbee-dev
     18Architecture: all
     19Depends: bitlbee (= ${binary:Version})
     20Description: An IRC to other chat networks gateway
     21 This program can be used as an IRC server which forwards everything you
     22 say to people on other chat networks: Jabber, ICQ, AIM, MSN and Yahoo.
     23 .
     24 This package holds development stuff for compiling plug-ins.
  • debian/rules

    r51bbec0 r783e9b7  
    1313build-arch: build-arch-stamp
    1414build-arch-stamp:
    15         if [ ! -d debian ]; then exit 1; fi
     15        [ -d debian ]
    1616        ./configure --debug=$(DEBUG) --prefix=/usr --etcdir=/etc/bitlbee --events=libevent
    1717        $(MAKE)
     
    2020
    2121clean:
    22         if [ "`whoami`" != "root" -o ! -d debian ]; then exit 1; fi
    23         rm -rf build-arch-stamp debian/bitlbee debian/*.substvars debian/files
     22        [ "`whoami`" = "root" -a -d debian ]
     23        rm -rf build-arch-stamp debian/bitlbee debian/*.substvars debian/files debian/bitlbee-dev
    2424        -$(MAKE) distclean
    2525#       -$(MAKE) -C doc/ clean
     
    2727
    2828install-arch: build-arch
    29         if [ "`whoami`" != "root" -o ! -d debian ]; then exit 1; fi
     29        [ "`whoami`" = "root" -a -d debian ]
    3030        mkdir -p debian/bitlbee/DEBIAN/
    3131        $(MAKE) install install-etc DESTDIR=`pwd`/debian/bitlbee
     
    3535        cp doc/user-guide/user-guide.html debian/bitlbee/usr/share/doc/bitlbee/
    3636
     37install-indep: install-arch
     38        [ "`whoami`" = "root" -a -d debian ]
     39        mkdir -p debian/bitlbee-dev/DEBIAN/
     40        $(MAKE) install-dev DESTDIR=`pwd`/debian/bitlbee-dev
     41
     42        mkdir -p debian/bitlbee-dev/usr/share/doc/bitlbee-dev/
     43
    3744binary-arch: build-arch install-arch
    38         if [ "`whoami`" != "root" -o ! -d debian ]; then exit 1; fi
     45        [ "`whoami`" = "root" -a -d debian ]
    3946
    4047        chmod 755 debian/post* debian/pre* debian/config debian/bitlbee.init
     
    5259                        doc/bitlbee/examples/* man/man8/bitlbee.8 man/man5/bitlbee.conf.5
    5360       
    54         chown -R root.root debian/bitlbee/
     61        chown -R root:root debian/bitlbee/
    5562        find debian/bitlbee/usr/share/ -type d -exec chmod 755 {} \;
    5663        find debian/bitlbee/usr/share/ -type f -exec chmod 644 {} \;
     
    7784        dpkg --build debian/bitlbee ..
    7885
    79 debug-build:
    80         BITLBEE_VERSION=\"`date +%Y%m%d`-`hostname`-debug\" debian/rules clean binary DEBUG=1
     86binary-indep: install-indep
     87        [ "`whoami`" = "root" -a -d debian ]
    8188
    82 binary: binary-arch
     89        chown -R root.root debian/bitlbee-dev/
     90        find debian/bitlbee-dev/usr/share/ -type d -exec chmod 755 {} \;
     91        find debian/bitlbee-dev/usr/share/ -type f -exec chmod 644 {} \;
     92
     93        cp debian/changelog debian/bitlbee-dev/usr/share/doc/bitlbee-dev/changelog.Debian
     94        gzip -9 debian/bitlbee-dev/usr/share/doc/bitlbee-dev/changelog.Debian
     95        cp debian/copyright debian/bitlbee-dev/usr/share/doc/bitlbee-dev/copyright
     96
     97        cd debian/bitlbee-dev; \
     98                find usr -type f -exec md5sum {} \; > DEBIAN/md5sums
     99
     100        dpkg-gencontrol -ldebian/changelog -isp -pbitlbee-dev -Pdebian/bitlbee-dev
     101
     102        dpkg --build debian/bitlbee-dev ..
     103
     104binary: binary-arch binary-indep
    83105build: build-arch
    84 install: install-arch
     106install: install-arch install-indep
    85107
    86 .PHONY: build-arch build clean binary-arch binary install-arch install
     108.PHONY: build-arch build clean binary-arch binary install-arch install binary-indep install-indep
  • doc/user-guide/commands.xml

    r51bbec0 r783e9b7  
    589589        </bitlbee-setting>
    590590
     591        <bitlbee-setting name="root_nick" type="string" scope="global">
     592                <default>root</default>
     593
     594                <description>
     595                        <para>
     596                                Normally the "bot" that takes all your BitlBee commands is called "root". If you don't like this name, you can rename it to anything else using the <emphasis>rename</emphasis> command, or by changing this setting.
     597                        </para>
     598                </description>
     599        </bitlbee-setting>
     600
    591601        <bitlbee-setting name="save_on_quit" type="boolean" scope="global">
    592602                <default>true</default>
  • irc.c

    r51bbec0 r783e9b7  
    151151        set_add( &irc->set, "private", "true", set_eval_bool, irc );
    152152        set_add( &irc->set, "query_order", "lifo", NULL, irc );
     153        set_add( &irc->set, "root_nick", irc->mynick, set_eval_root_nick, irc );
    153154        set_add( &irc->set, "save_on_quit", "true", set_eval_bool, irc );
    154155        set_add( &irc->set, "simulate_netsplit", "true", set_eval_bool, irc );
     
    199200        if( irc->sendbuffer && !immed )
    200201        {
    201                 /* We won't read from this socket anymore. Instead, we'll connect a timer
    202                    to it that should shut down the connection in a second, just in case
    203                    bitlbee_.._write doesn't do it first. */
     202                /* Set up a timeout event that should shut down the connection
     203                   in a second, just in case ..._write doesn't do it first. */
    204204               
    205205                b_event_remove( irc->r_watch_source_id );
    206                 irc->r_watch_source_id = b_timeout_add( 1000, (b_event_handler) irc_free, irc );
     206                irc->r_watch_source_id = 0;
     207               
     208                b_event_remove( irc->ping_source_id );
     209                irc->ping_source_id = b_timeout_add( 1000, (b_event_handler) irc_free, irc );
    207210        }
    208211        else
     
    274277        if( irc->ping_source_id > 0 )
    275278                b_event_remove( irc->ping_source_id );
    276         b_event_remove( irc->r_watch_source_id );
     279        if( irc->r_watch_source_id > 0 )
     280                b_event_remove( irc->r_watch_source_id );
    277281        if( irc->w_watch_source_id > 0 )
    278282                b_event_remove( irc->w_watch_source_id );
  • lib/arc.h

    r51bbec0 r783e9b7  
    3131};
    3232
     33#ifndef G_GNUC_MALLOC
     34#define G_GNUC_MALLOC
     35#endif
     36
    3337G_GNUC_MALLOC struct arc_state *arc_keymaker( unsigned char *key, int kl, int cycles );
    3438unsigned char arc_getbyte( struct arc_state *st );
  • lib/proxy.c

    r51bbec0 r783e9b7  
    114114{
    115115        struct sockaddr_in *sin;
     116        struct sockaddr_in me;
    116117        int fd = -1;
    117118
     
    127128
    128129        sock_make_nonblocking(fd);
     130       
     131        if( global.conf->iface_out )
     132        {
     133                me.sin_family = AF_INET;
     134                me.sin_port = 0;
     135                me.sin_addr.s_addr = inet_addr( global.conf->iface_out );
     136               
     137                if( bind( fd, (struct sockaddr *) &me, sizeof( me ) ) != 0 )
     138                        event_debug( "bind( %d, \"%s\" ) failure\n", fd, global.conf->iface_out );
     139        }
    129140       
    130141        event_debug("proxy_connect_none( \"%s\", %d ) = %d\n", host, port, fd);
  • protocols/jabber/jabber_util.c

    r51bbec0 r783e9b7  
    246246};
    247247
    248 static void jabber_buddy_ask_yes( gpointer w, struct jabber_buddy_ask_data *bla )
    249 {
     248static void jabber_buddy_ask_yes( void *data )
     249{
     250        struct jabber_buddy_ask_data *bla = data;
     251       
    250252        presence_send_request( bla->ic, bla->handle, "subscribed" );
    251253       
     
    257259}
    258260
    259 static void jabber_buddy_ask_no( gpointer w, struct jabber_buddy_ask_data *bla )
    260 {
     261static void jabber_buddy_ask_no( void *data )
     262{
     263        struct jabber_buddy_ask_data *bla = data;
     264       
    261265        presence_send_request( bla->ic, bla->handle, "subscribed" );
    262266       
  • protocols/msn/msn.h

    r51bbec0 r783e9b7  
    2929#define GROUPCHAT_SWITCHBOARD_MESSAGE "\r\r\rME WANT TALK TO MANY PEOPLE\r\r\r"
    3030
    31 #ifdef DEBUG
     31#ifdef DEBUG_MSN
    3232#define debug( text... ) imcb_log( ic, text );
    3333#else
  • protocols/msn/msn_util.c

    r51bbec0 r783e9b7  
    9090};
    9191
    92 static void msn_buddy_ask_yes( gpointer w, struct msn_buddy_ask_data *bla )
    93 {
     92static void msn_buddy_ask_yes( void *data )
     93{
     94        struct msn_buddy_ask_data *bla = data;
     95       
    9496        msn_buddy_list_add( bla->ic, "AL", bla->handle, bla->realname );
    9597       
     
    102104}
    103105
    104 static void msn_buddy_ask_no( gpointer w, struct msn_buddy_ask_data *bla )
    105 {
     106static void msn_buddy_ask_no( void *data )
     107{
     108        struct msn_buddy_ask_data *bla = data;
     109       
    106110        msn_buddy_list_add( bla->ic, "BL", bla->handle, bla->realname );
    107111       
  • protocols/msn/ns.c

    r51bbec0 r783e9b7  
    178178                       
    179179                        debug( "Connecting to a new switchboard with key %s", cmd[5] );
    180                         sb = msn_sb_create( ic, server, port, cmd[5], MSN_SB_NEW );
     180
     181                        if( ( sb = msn_sb_create( ic, server, port, cmd[5], MSN_SB_NEW ) ) == NULL )
     182                        {
     183                                /* Although this isn't strictly fatal for the NS connection, it's
     184                                   definitely something serious (we ran out of file descriptors?). */
     185                                imcb_error( ic, "Could not create new switchboard" );
     186                                imc_logout( ic, TRUE );
     187                                return( 0 );
     188                        }
    181189                       
    182190                        if( md->msgq )
     
    468476                debug( "Got a call from %s (session %d). Key = %s", cmd[5], session, cmd[4] );
    469477               
    470                 sb = msn_sb_create( ic, server, port, cmd[4], session );
    471                 sb->who = g_strdup( cmd[5] );
     478                if( ( sb = msn_sb_create( ic, server, port, cmd[4], session ) ) == NULL )
     479                {
     480                        /* Although this isn't strictly fatal for the NS connection, it's
     481                           definitely something serious (we ran out of file descriptors?). */
     482                        imcb_error( ic, "Could not create new switchboard" );
     483                        imc_logout( ic, TRUE );
     484                        return( 0 );
     485                }
     486                else
     487                {
     488                        sb->who = g_strdup( cmd[5] );
     489                }
    472490        }
    473491        else if( strcmp( cmd[0], "ADD" ) == 0 )
  • protocols/nogaim.c

    r51bbec0 r783e9b7  
    343343/* dialogs.c */
    344344
    345 void imcb_ask( struct im_connection *ic, char *msg, void *data, void *doit, void *dont )
     345void imcb_ask( struct im_connection *ic, char *msg, void *data,
     346               query_callback doit, query_callback dont )
    346347{
    347348        query_add( ic->irc, ic, msg, doit, dont, data );
     
    495496};
    496497
    497 void show_got_added_no( gpointer w, struct show_got_added_data *data )
    498 {
    499         g_free( data->handle );
     498void show_got_added_no( void *data )
     499{
     500        g_free( ((struct show_got_added_data*)data)->handle );
    500501        g_free( data );
    501502}
    502503
    503 void show_got_added_yes( gpointer w, struct show_got_added_data *data )
    504 {
    505         data->ic->acc->prpl->add_buddy( data->ic, data->handle, NULL );
    506         /* imcb_add_buddy( data->ic, NULL, data->handle, data->handle ); */
    507        
    508         return show_got_added_no( w, data );
     504void show_got_added_yes( void *data )
     505{
     506        struct show_got_added_data *sga = data;
     507       
     508        sga->ic->acc->prpl->add_buddy( sga->ic, sga->handle, NULL );
     509        /* imcb_add_buddy( sga->ic, NULL, sga->handle, sga->handle ); */
     510       
     511        return show_got_added_no( data );
    509512}
    510513
  • protocols/nogaim.h

    r51bbec0 r783e9b7  
    4242#include "account.h"
    4343#include "proxy.h"
     44#include "query.h"
    4445#include "md5.h"
    4546
     
    261262 * - 'doit' or 'dont' will be called depending of the answer of the user.
    262263 */
    263 G_MODULE_EXPORT void imcb_ask( struct im_connection *ic, char *msg, void *data, void *doit, void *dont );
     264G_MODULE_EXPORT void imcb_ask( struct im_connection *ic, char *msg, void *data, query_callback doit, query_callback dont );
    264265G_MODULE_EXPORT void imcb_ask_add( struct im_connection *ic, char *handle, const char *realname );
    265266
  • protocols/oscar/oscar.c

    r51bbec0 r783e9b7  
    10841084}
    10851085
    1086 void oscar_accept_chat(gpointer w, struct aim_chat_invitation * inv);
    1087 void oscar_reject_chat(gpointer w, struct aim_chat_invitation * inv);
     1086void oscar_accept_chat(void *data);
     1087void oscar_reject_chat(void *data);
    10881088       
    10891089static int incomingim_chan2(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_t *userinfo, struct aim_incomingim_ch2_args *args) {
     
    11191119}
    11201120
    1121 static void gaim_icq_authgrant(gpointer w, struct icq_auth *data) {
     1121static void gaim_icq_authgrant(void *data_) {
     1122        struct icq_auth *data = data_;
    11221123        char *uin, message;
    11231124        struct oscar_data *od = (struct oscar_data *)data->ic->proto_data;
     
    11341135}
    11351136
    1136 static void gaim_icq_authdeny(gpointer w, struct icq_auth *data) {
     1137static void gaim_icq_authdeny(void *data_) {
     1138        struct icq_auth *data = data_;
    11371139        char *uin, *message;
    11381140        struct oscar_data *od = (struct oscar_data *)data->ic->proto_data;
     
    25882590}
    25892591
    2590 void oscar_accept_chat(gpointer w, struct aim_chat_invitation * inv)
     2592void oscar_accept_chat(void *data)
    25912593{
     2594        struct aim_chat_invitation * inv = data;
     2595       
    25922596        oscar_chat_join(inv->ic, inv->name, NULL, NULL);
    25932597        g_free(inv->name);
     
    25952599}
    25962600
    2597 void oscar_reject_chat(gpointer w, struct aim_chat_invitation * inv)
     2601void oscar_reject_chat(void *data)
    25982602{
     2603        struct aim_chat_invitation * inv = data;
     2604       
    25992605        g_free(inv->name);
    26002606        g_free(inv);
  • protocols/yahoo/yahoo.c

    r51bbec0 r783e9b7  
    797797}
    798798
    799 static void byahoo_accept_conf( gpointer w, struct byahoo_conf_invitation *inv )
    800 {
     799static void byahoo_accept_conf( void *data )
     800{
     801        struct byahoo_conf_invitation *inv = data;
     802       
    801803        yahoo_conference_logon( inv->yid, NULL, inv->members, inv->name );
    802804        imcb_chat_add_buddy( inv->c, inv->ic->acc->user );
     
    805807}
    806808
    807 static void byahoo_reject_conf( gpointer w, struct byahoo_conf_invitation *inv )
    808 {
     809static void byahoo_reject_conf( void *data )
     810{
     811        struct byahoo_conf_invitation *inv = data;
     812       
    809813        yahoo_conference_decline( inv->yid, NULL, inv->members, inv->name, "User rejected groupchat" );
    810814        imcb_chat_free( inv->c );
  • query.c

    r51bbec0 r783e9b7  
    3030static query_t *query_default( irc_t *irc );
    3131
    32 query_t *query_add( irc_t *irc, struct im_connection *ic, char *question, void *yes, void *no, void *data )
     32query_t *query_add( irc_t *irc, struct im_connection *ic, char *question,
     33                    query_callback yes, query_callback no, void *data )
    3334{
    3435        query_t *q = g_new0( query_t, 1 );
     
    144145                else
    145146                        irc_usermsg( irc, "Accepted: %s", q->question );
    146                 q->yes( NULL, q->data );
     147                q->yes( q->data );
    147148        }
    148149        else
     
    152153                else
    153154                        irc_usermsg( irc, "Rejected: %s", q->question );
    154                 q->no( NULL, q->data );
     155                q->no( q->data );
    155156        }
    156157        q->data = NULL;
  • query.h

    r51bbec0 r783e9b7  
    2727#define _QUERY_H
    2828
     29typedef void (*query_callback) ( void *data );
     30
    2931typedef struct query
    3032{
    3133        struct im_connection *ic;
    3234        char *question;
    33         void (* yes) ( gpointer w, void *data );
    34         void (* no) ( gpointer w, void *data );
     35        query_callback yes, no;
    3536        void *data;
    3637        struct query *next;
    3738} query_t;
    3839
    39 query_t *query_add( irc_t *irc, struct im_connection *ic, char *question, void *yes, void *no, void *data );
     40query_t *query_add( irc_t *irc, struct im_connection *ic, char *question,
     41                    query_callback yes, query_callback no, void *data );
    4042void query_del( irc_t *irc, query_t *q );
    4143void query_del_by_conn( irc_t *irc, struct im_connection *ic );
  • root_commands.c

    r51bbec0 r783e9b7  
    204204}
    205205
    206 void cmd_account_del_yes( gpointer w, void *data )
    207 {
    208         account_t *a = data;
    209         irc_t *irc = a->irc;
    210        
    211         if( a->ic )
    212         {
    213                 irc_usermsg( irc, "Account is still logged in, can't delete" );
    214         }
    215         else
    216         {
    217                 account_del( irc, a );
    218                 irc_usermsg( irc, "Account deleted" );
    219         }
    220 }
    221 
    222 void cmd_account_del_no( gpointer w, void *data )
    223 {
     206struct cmd_account_del_data
     207{
     208        account_t *a;
     209        irc_t *irc;
     210};
     211
     212void cmd_account_del_yes( void *data )
     213{
     214        struct cmd_account_del_data *cad = data;
     215        account_t *a;
     216       
     217        for( a = cad->irc->accounts; a && a != cad->a; a = a->next );
     218       
     219        if( a == NULL )
     220        {
     221                irc_usermsg( cad->irc, "Account already deleted" );
     222        }
     223        else if( a->ic )
     224        {
     225                irc_usermsg( cad->irc, "Account is still logged in, can't delete" );
     226        }
     227        else
     228        {
     229                account_del( cad->irc, a );
     230                irc_usermsg( cad->irc, "Account deleted" );
     231        }
     232        g_free( data );
     233}
     234
     235void cmd_account_del_no( void *data )
     236{
     237        g_free( data );
    224238}
    225239
     
    278292                else
    279293                {
     294                        struct cmd_account_del_data *cad;
    280295                        char *msg;
     296                       
     297                        cad = g_malloc( sizeof( struct cmd_account_del_data ) );
     298                        cad->a = a;
     299                        cad->irc = irc;
    281300                       
    282301                        msg = g_strdup_printf( "If you remove this account (%s(%s)), BitlBee will "
     
    285304                                               "set' command. Are you sure you want to delete this "
    286305                                               "account?", a->prpl->name, a->user );
    287                         query_add( irc, NULL, msg, cmd_account_del_yes, cmd_account_del_no, a );
     306                        query_add( irc, NULL, msg, cmd_account_del_yes, cmd_account_del_no, cad );
    288307                        g_free( msg );
    289308                }
     
    404423                        acc_handle = g_strdup( cmd[2] );
    405424               
     425                if( !acc_handle )
     426                {
     427                        irc_usermsg( irc, "Not enough parameters given (need %d)", 3 );
     428                        return;
     429                }
     430               
    406431                if( ( tmp = strchr( acc_handle, '/' ) ) )
    407432                {
     
    584609                        g_free( irc->mynick );
    585610                        irc->mynick = g_strdup( cmd[2] );
     611                       
     612                        if( strcmp( cmd[0], "set_rename" ) != 0 )
     613                                set_setstr( &irc->set, "root_nick", cmd[2] );
    586614                }
    587615                else if( u->send_handler == buddy_send_handler )
     
    592620                irc_usermsg( irc, "Nick successfully changed" );
    593621        }
     622}
     623
     624char *set_eval_root_nick( set_t *set, char *new_nick )
     625{
     626        irc_t *irc = set->data;
     627       
     628        if( strcmp( irc->mynick, new_nick ) != 0 )
     629        {
     630                char *cmd[] = { "set_rename", irc->mynick, new_nick, NULL };
     631               
     632                cmd_rename( irc, cmd );
     633        }
     634       
     635        return strcmp( irc->mynick, new_nick ) == 0 ? new_nick : NULL;
    594636}
    595637
Note: See TracChangeset for help on using the changeset viewer.