diff options
author | Wilmer van der Gaast <wilmer@gaast.net> | 2006-01-20 16:15:49 +0100 |
---|---|---|
committer | Wilmer van der Gaast <wilmer@gaast.net> | 2006-01-20 16:15:49 +0100 |
commit | f73b9697f9be18e04ec7458634520f9dd2e2432f (patch) | |
tree | bc85b7818c6f76e584a92a067b3b2091d6c14384 | |
parent | 55ec2d66f04d1ea96e180c5a46e90a4294dea0b1 (diff) |
Renamed commands.c, got rid of return values in all command functions.
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | bitlbee.c | 8 | ||||
-rw-r--r-- | bitlbee.h | 4 | ||||
-rw-r--r-- | commands.h | 2 | ||||
-rw-r--r-- | ipc.c | 54 | ||||
-rw-r--r-- | ipc.h | 2 | ||||
-rw-r--r-- | irc.c | 43 | ||||
-rw-r--r-- | irc.h | 7 | ||||
-rw-r--r-- | irc_commands.c | 147 | ||||
-rw-r--r-- | root_commands.c (renamed from commands.c) | 191 | ||||
-rw-r--r-- | user.h | 2 |
11 files changed, 180 insertions, 282 deletions
@@ -9,7 +9,7 @@ -include Makefile.settings # Program variables -objects = account.o bitlbee.o commands.o conf.o crypting.o help.o ini.o ipc.o irc.o irc_commands.o log.o nick.o query.o set.o storage.o storage_text.o unix.o url.o user.o util.o +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 subdirs = protocols # Expansion of variables @@ -166,10 +166,12 @@ gboolean bitlbee_io_current_client_read( GIOChannel *source, GIOCondition condit strcpy( ( irc->readbuffer + strlen( irc->readbuffer ) ), line ); } - if( !irc_process( irc ) ) + irc_process( irc ); + + /* Normally, irc_process() shouldn't call irc_free() but irc_abort(). Just in case: */ + if( !g_slist_find( irc_connection_list, irc ) ) { - log_message( LOGLVL_INFO, "Destroying connection with fd %d.", irc->fd ); - irc_abort( irc ); + log_message( LOGLVL_WARNING, "Abnormal termination of connection with fd %d.", irc->fd ); return FALSE; } @@ -128,8 +128,8 @@ int bitlbee_inetd_init( void ); gboolean bitlbee_io_current_client_read( GIOChannel *source, GIOCondition condition, gpointer data ); gboolean bitlbee_io_current_client_write( GIOChannel *source, GIOCondition condition, gpointer data ); -int root_command_string( irc_t *irc, user_t *u, char *command, int flags ); -int root_command( irc_t *irc, char *command[] ); +void root_command_string( irc_t *irc, user_t *u, char *command, int flags ); +void root_command( irc_t *irc, char *command[] ); void bitlbee_shutdown( gpointer data ); double gettime( void ); G_MODULE_EXPORT void http_encode( char *s ); @@ -32,7 +32,7 @@ typedef struct command { char *command; int required_parameters; - int (*execute)(irc_t *, char **args); + void (*execute)(irc_t *, char **args); int flags; } command_t; @@ -31,7 +31,7 @@ GSList *child_list = NULL; -static int ipc_master_cmd_client( irc_t *data, char **cmd ) +static void ipc_master_cmd_client( irc_t *data, char **cmd ) { struct bitlbee_child *child = (void*) data; @@ -44,21 +44,17 @@ static int ipc_master_cmd_client( irc_t *data, char **cmd ) ipc_to_children_str( "OPERMSG :Client connecting (PID=%d): %s@%s (%s)\r\n", child ? child->pid : -1, cmd[2], cmd[1], cmd[3] ); - - return 1; } -static int ipc_master_cmd_die( irc_t *data, char **cmd ) +static void ipc_master_cmd_die( irc_t *data, char **cmd ) { if( global.conf->runmode == RUNMODE_FORKDAEMON ) ipc_to_children_str( "DIE\r\n" ); bitlbee_shutdown( NULL ); - - return 1; } -int ipc_master_cmd_rehash( irc_t *data, char **cmd ) +void ipc_master_cmd_rehash( irc_t *data, char **cmd ) { runmode_t oldmode; @@ -75,8 +71,6 @@ int ipc_master_cmd_rehash( irc_t *data, char **cmd ) if( global.conf->runmode == RUNMODE_FORKDAEMON ) ipc_to_children( cmd ); - - return 1; } static const command_t ipc_master_commands[] = { @@ -91,50 +85,39 @@ static const command_t ipc_master_commands[] = { }; -static int ipc_child_cmd_die( irc_t *irc, char **cmd ) +static void ipc_child_cmd_die( irc_t *irc, char **cmd ) { - if( irc->status >= USTATUS_LOGGED_IN ) - irc_write( irc, "ERROR :Operator requested server shutdown, bye bye!" ); - - irc_abort( irc ); - - return 1; + irc_abort( irc, 1, "Shutdown requested by operator" ); } -static int ipc_child_cmd_wallops( irc_t *irc, char **cmd ) +static void ipc_child_cmd_wallops( irc_t *irc, char **cmd ) { if( irc->status < USTATUS_LOGGED_IN ) - return 1; + return; if( strchr( irc->umode, 'w' ) ) irc_write( irc, ":%s WALLOPS :%s", irc->myhost, cmd[1] ); - - return 1; } -static int ipc_child_cmd_lilo( irc_t *irc, char **cmd ) +static void ipc_child_cmd_lilo( irc_t *irc, char **cmd ) { if( irc->status < USTATUS_LOGGED_IN ) - return 1; + return; if( strchr( irc->umode, 's' ) ) irc_write( irc, ":%s NOTICE %s :%s", irc->myhost, irc->nick, cmd[1] ); - - return 1; } -static int ipc_child_cmd_opermsg( irc_t *irc, char **cmd ) +static void ipc_child_cmd_opermsg( irc_t *irc, char **cmd ) { if( irc->status < USTATUS_LOGGED_IN ) - return 1; + return; if( strchr( irc->umode, 'o' ) ) irc_write( irc, ":%s NOTICE %s :*** OperMsg *** %s", irc->myhost, irc->nick, cmd[1] ); - - return 1; } -static int ipc_child_cmd_rehash( irc_t *irc, char **cmd ) +static void ipc_child_cmd_rehash( irc_t *irc, char **cmd ) { runmode_t oldmode; @@ -144,23 +127,18 @@ static int ipc_child_cmd_rehash( irc_t *irc, char **cmd ) global.conf = conf_load( 0, NULL ); global.conf->runmode = oldmode; - - return 1; } -static int ipc_child_cmd_kill( irc_t *irc, char **cmd ) +static void ipc_child_cmd_kill( irc_t *irc, char **cmd ) { if( irc->status < USTATUS_LOGGED_IN ) - return 1; + return; if( nick_cmp( cmd[1], irc->nick ) != 0 ) - return 1; /* It's not for us. */ + return; /* It's not for us. */ irc_write( irc, ":%s!%s@%s KILL %s :%s", irc->mynick, irc->mynick, irc->myhost, irc->nick, cmd[2] ); - irc_abort( irc ); - /* g_io_channel_close( irc->io_channel ); */ - - return 0; + irc_abort( irc, 0, "Killed by operator: %s", cmd[2] ); } static const command_t ipc_child_commands[] = { @@ -51,7 +51,7 @@ void ipc_to_children( char **cmd ); void ipc_to_children_str( char *format, ... ); /* We need this function in inetd mode, so let's just make it non-static. */ -int ipc_master_cmd_rehash( irc_t *data, char **cmd ); +void ipc_master_cmd_rehash( irc_t *data, char **cmd ); extern GSList *child_list; @@ -151,23 +151,25 @@ irc_t *irc_new( int fd ) return( irc ); } +/* immed=1 makes this function pretty much equal to irc_free(), except that + this one will "log". In case the connection is already broken and we + shouldn't try to write to it. */ void irc_abort( irc_t *irc, int immed, char *format, ... ) { - va_list params; - if( format != NULL ) { + va_list params; char *reason; va_start( params, format ); - reason = g_strdup_printf( format, params ); + reason = g_strdup_vprintf( format, params ); va_end( params ); if( !immed ) irc_write( irc, "ERROR :Closing link: %s", reason ); ipc_to_master_str( "OPERMSG :Client exiting: %s@%s [%s]\r\n", - irc->nick, irc->host, reason" ); + irc->nick ? irc->nick : "(NONE)", irc->host, reason ); g_free( reason ); } @@ -177,7 +179,7 @@ void irc_abort( irc_t *irc, int immed, char *format, ... ) irc_write( irc, "ERROR :Closing link" ); ipc_to_master_str( "OPERMSG :Client exiting: %s@%s [%s]\r\n", - irc->nick, irc->host, "No reason given" ); + irc->nick ? irc->nick : "(NONE)", irc->host, "No reason given" ); } irc->status = USTATUS_SHUTDOWN; @@ -338,7 +340,7 @@ void irc_setpass (irc_t *irc, const char *pass) } } -int irc_process( irc_t *irc ) +void irc_process( irc_t *irc ) { char **lines, *temp, **cmd; int i; @@ -360,14 +362,16 @@ int irc_process( irc_t *irc ) if( ( cmd = irc_parse_line( lines[i] ) ) == NULL ) continue; - if( !irc_exec( irc, cmd ) ) + irc_exec( irc, cmd ); + + g_free( cmd ); + + /* Shouldn't really happen, but just in case... */ + if( !g_slist_find( irc_connection_list, irc ) ) { - g_free( cmd ); g_free( lines ); - return 0; + return; } - - g_free( cmd ); } if( lines[i] != NULL ) @@ -378,8 +382,6 @@ int irc_process( irc_t *irc ) g_free( lines ); } - - return 1; } char **irc_tokenize( char *buffer ) @@ -971,7 +973,10 @@ int irc_send( irc_t *irc, char *nick, char *s, int flags ) } if( u->send_handler ) - return( u->send_handler( irc, u, s, flags ) ); + { + u->send_handler( irc, u, s, flags ); + return 1; + } } else if( c && c->gc && c->gc->prpl ) { @@ -997,9 +1002,9 @@ gboolean buddy_send_handler_delayed( gpointer data ) return( FALSE ); } -int buddy_send_handler( irc_t *irc, user_t *u, char *msg, int flags ) +void buddy_send_handler( irc_t *irc, user_t *u, char *msg, int flags ) { - if( !u || !u->gc ) return( 0 ); + if( !u || !u->gc ) return; if( set_getint( irc, "buddy_sendbuffer" ) && set_getint( irc, "buddy_sendbuffer_delay" ) > 0 ) { @@ -1035,12 +1040,10 @@ int buddy_send_handler( irc_t *irc, user_t *u, char *msg, int flags ) if( u->sendbuf_timer > 0 ) g_source_remove( u->sendbuf_timer ); u->sendbuf_timer = g_timeout_add( delay, buddy_send_handler_delayed, u ); - - return( 1 ); } else { - return( serv_send_im( irc, u, msg, flags ) ); + serv_send_im( irc, u, msg, flags ); } } @@ -1145,7 +1148,7 @@ static gboolean irc_userping( gpointer _irc ) if( rv > 0 ) { - irc_abort( irc, "ERROR :Closing Link: Ping Timeout: %d seconds", rv ); + irc_abort( irc, 0, "Ping Timeout: %d seconds", rv ); return FALSE; } @@ -107,8 +107,8 @@ irc_t *irc_new( int fd ); void irc_abort( irc_t *irc, int immed, char *format, ... ); void irc_free( irc_t *irc ); -int irc_exec( irc_t *irc, char **cmd ); -int irc_process( irc_t *irc ); +void irc_exec( irc_t *irc, char **cmd ); +void irc_process( irc_t *irc ); char **irc_parse_line( char *line ); char *irc_build_line( char **cmd ); @@ -133,7 +133,6 @@ void irc_kick( irc_t *irc, user_t *u, char *channel, user_t *kicker ); void irc_kill( irc_t *irc, user_t *u ); void irc_invite( irc_t *irc, char *nick, char *channel ); void irc_whois( irc_t *irc, char *nick ); -int irc_away( irc_t *irc, char *away ); void irc_setpass( irc_t *irc, const char *pass ); /* USE WITH CAUTION! */ int irc_send( irc_t *irc, char *nick, char *s, int flags ); @@ -141,6 +140,6 @@ int irc_privmsg( irc_t *irc, user_t *u, char *type, char *to, char *prefix, char int irc_msgfrom( irc_t *irc, char *nick, char *msg ); int irc_noticefrom( irc_t *irc, char *nick, char *msg ); -int buddy_send_handler( irc_t *irc, user_t *u, char *msg, int flags ); +void buddy_send_handler( irc_t *irc, user_t *u, char *msg, int flags ); #endif diff --git a/irc_commands.c b/irc_commands.c index e31a92e8..e4dc4f3e 100644 --- a/irc_commands.c +++ b/irc_commands.c @@ -27,7 +27,7 @@ #include "bitlbee.h" #include "ipc.h" -static int irc_cmd_pass( irc_t *irc, char **cmd ) +static void irc_cmd_pass( irc_t *irc, char **cmd ) { if( global.conf->auth_pass && strcmp( cmd[1], global.conf->auth_pass ) == 0 ) { @@ -38,21 +38,17 @@ static int irc_cmd_pass( irc_t *irc, char **cmd ) { irc_reply( irc, 464, ":Incorrect password" ); } - - return( 1 ); } -static int irc_cmd_user( irc_t *irc, char **cmd ) +static void irc_cmd_user( irc_t *irc, char **cmd ) { irc->user = g_strdup( cmd[1] ); irc->realname = g_strdup( cmd[4] ); irc_check_login( irc ); - - return( 1 ); } -static int irc_cmd_nick( irc_t *irc, char **cmd ) +static void irc_cmd_nick( irc_t *irc, char **cmd ) { if( irc->nick ) { @@ -74,26 +70,22 @@ static int irc_cmd_nick( irc_t *irc, char **cmd ) irc_check_login( irc ); } - - return( 1 ); } -static int irc_cmd_quit( irc_t *irc, char **cmd ) +static void irc_cmd_quit( irc_t *irc, char **cmd ) { - irc_write( irc, "ERROR :%s%s", cmd[1]?"Quit: ":"", cmd[1]?cmd[1]:"Client Quit" ); - /* g_io_channel_close( irc->io_channel ); */ - - return( 0 ); + if( cmd[1] && *cmd[1] ) + irc_abort( irc, 0, "Quit: %s", cmd[1] ); + else + irc_abort( irc, 0, "Leaving..." ); } -static int irc_cmd_ping( irc_t *irc, char **cmd ) +static void irc_cmd_ping( irc_t *irc, char **cmd ) { irc_write( irc, ":%s PONG %s :%s", irc->myhost, irc->myhost, cmd[1]?cmd[1]:irc->myhost ); - - return( 1 ); } -static int irc_cmd_oper( irc_t *irc, char **cmd ) +static void irc_cmd_oper( irc_t *irc, char **cmd ) { if( global.conf->oper_pass && strcmp( cmd[2], global.conf->oper_pass ) == 0 ) { @@ -104,11 +96,9 @@ static int irc_cmd_oper( irc_t *irc, char **cmd ) { irc_reply( irc, 432, ":Incorrect password" ); } - - return( 1 ); } -static int irc_cmd_mode( irc_t *irc, char **cmd ) +static void irc_cmd_mode( irc_t *irc, char **cmd ) { if( *cmd[1] == '#' || *cmd[1] == '&' ) { @@ -132,18 +122,14 @@ static int irc_cmd_mode( irc_t *irc, char **cmd ) else irc_reply( irc, 502, ":Don't touch their modes" ); } - - return( 1 ); } -static int irc_cmd_names( irc_t *irc, char **cmd ) +static void irc_cmd_names( irc_t *irc, char **cmd ) { irc_names( irc, cmd[1]?cmd[1]:irc->channel ); - - return( 1 ); } -static int irc_cmd_part( irc_t *irc, char **cmd ) +static void irc_cmd_part( irc_t *irc, char **cmd ) { struct conversation *c; @@ -171,11 +157,9 @@ static int irc_cmd_part( irc_t *irc, char **cmd ) { irc_reply( irc, 403, "%s :No such channel", cmd[1] ); } - - return( 1 ); } -static int irc_cmd_join( irc_t *irc, char **cmd ) +static void irc_cmd_join( irc_t *irc, char **cmd ) { if( g_strcasecmp( cmd[1], irc->channel ) == 0 ) ; /* Dude, you're already there... @@ -209,11 +193,9 @@ static int irc_cmd_join( irc_t *irc, char **cmd ) irc_reply( irc, 403, "%s :No such channel", cmd[1] ); } } - - return( 1 ); } -static int irc_cmd_invite( irc_t *irc, char **cmd ) +static void irc_cmd_invite( irc_t *irc, char **cmd ) { char *nick = cmd[1], *channel = cmd[2]; struct conversation *c = conv_findchannel( channel ); @@ -224,15 +206,13 @@ static int irc_cmd_invite( irc_t *irc, char **cmd ) { c->gc->prpl->chat_invite( c->gc, c->id, "", u->handle ); irc_reply( irc, 341, "%s %s", nick, channel ); - return( 1 ); + return; } irc_reply( irc, 482, "%s :Invite impossible; User/Channel non-existent or incompatible", channel ); - - return( 1 ); } -static int irc_cmd_privmsg( irc_t *irc, char **cmd ) +static void irc_cmd_privmsg( irc_t *irc, char **cmd ) { if ( !cmd[2] ) { @@ -282,11 +262,9 @@ static int irc_cmd_privmsg( irc_t *irc, char **cmd ) } irc_send( irc, cmd[1], cmd[2], ( g_strcasecmp( cmd[0], "NOTICE" ) == 0 ) ? IM_FLAG_AWAY : 0 ); } - - return( 1 ); } -static int irc_cmd_who( irc_t *irc, char **cmd ) +static void irc_cmd_who( irc_t *irc, char **cmd ) { char *channel = cmd[1]; user_t *u = irc->users; @@ -316,11 +294,9 @@ static int irc_cmd_who( irc_t *irc, char **cmd ) irc_reply( irc, 352, "%s %s %s %s %s %c :0 %s", channel, u->user, u->host, irc->myhost, u->nick, u->online ? ( u->away ? 'G' : 'H' ) : 'G', u->realname ); irc_reply( irc, 315, "%s :End of /WHO list", channel?channel:"**" ); - - return( 1 ); } -static int irc_cmd_userhost( irc_t *irc, char **cmd ) +static void irc_cmd_userhost( irc_t *irc, char **cmd ) { user_t *u; int i; @@ -339,11 +315,9 @@ static int irc_cmd_userhost( irc_t *irc, char **cmd ) else irc_reply( irc, 302, ":%s=+%s@%s", u->nick, u->user, u->host ); } - - return( 1 ); } -static int irc_cmd_ison( irc_t *irc, char **cmd ) +static void irc_cmd_ison( irc_t *irc, char **cmd ) { user_t *u; char buff[IRC_MAX_LINE]; @@ -382,11 +356,9 @@ static int irc_cmd_ison( irc_t *irc, char **cmd ) buff[strlen(buff)-1] = '\0'; irc_reply( irc, 303, ":%s", buff ); - - return( 1 ); } -static int irc_cmd_watch( irc_t *irc, char **cmd ) +static void irc_cmd_watch( irc_t *irc, char **cmd ) { int i; @@ -429,27 +401,23 @@ static int irc_cmd_watch( irc_t *irc, char **cmd ) } } } - - return( 1 ); } -static int irc_cmd_topic( irc_t *irc, char **cmd ) +static void irc_cmd_topic( irc_t *irc, char **cmd ) { if( cmd[2] ) irc_reply( irc, 482, "%s :Cannot change topic", cmd[1] ); else irc_topic( irc, cmd[1] ); - - return( 1 ); } -static int irc_cmd_away( irc_t *irc, char **cmd ) +static void irc_cmd_away( irc_t *irc, char **cmd ) { user_t *u = user_find( irc, irc->nick ); GSList *c = get_connections(); char *away = cmd[1]; - if( !u ) return( 1 ); + if( !u ) return; if( away && *away ) { @@ -481,11 +449,9 @@ static int irc_cmd_away( irc_t *irc, char **cmd ) c = c->next; } - - return( 1 ); } -static int irc_cmd_whois( irc_t *irc, char **cmd ) +static void irc_cmd_whois( irc_t *irc, char **cmd ) { char *nick = cmd[1]; user_t *u = user_find( irc, nick ); @@ -511,11 +477,9 @@ static int irc_cmd_whois( irc_t *irc, char **cmd ) { irc_reply( irc, 401, "%s :Nick does not exist", nick ); } - - return( 1 ); } -static int irc_cmd_whowas( irc_t *irc, char **cmd ) +static void irc_cmd_whowas( irc_t *irc, char **cmd ) { /* For some reason irssi tries a whowas when whois fails. We can ignore this, but then the user never gets a "user not found" @@ -524,37 +488,29 @@ static int irc_cmd_whowas( irc_t *irc, char **cmd ) irc_reply( irc, 406, "%s :Nick does not exist", cmd[1] ); irc_reply( irc, 369, "%s :End of WHOWAS", cmd[1] ); - - return( 1 ); } -static int irc_cmd_nickserv( irc_t *irc, char **cmd ) +static void irc_cmd_nickserv( irc_t *irc, char **cmd ) { /* [SH] This aliases the NickServ command to PRIVMSG root */ /* [TV] This aliases the NS command to PRIVMSG root as well */ root_command( irc, cmd + 1 ); - - return( 1 ); } -static int irc_cmd_motd( irc_t *irc, char **cmd ) +static void irc_cmd_motd( irc_t *irc, char **cmd ) { irc_motd( irc ); - - return( 1 ); } -static int irc_cmd_pong( irc_t *irc, char **cmd ) +static void irc_cmd_pong( irc_t *irc, char **cmd ) { /* We could check the value we get back from the user, but in fact we don't care, we're just happy he's still alive. */ irc->last_pong = gettime(); irc->pinging = 0; - - return( 1 ); } -static int irc_cmd_completions( irc_t *irc, char **cmd ) +static void irc_cmd_completions( irc_t *irc, char **cmd ) { user_t *u = user_find( irc, irc->mynick ); help_t *h; @@ -573,11 +529,9 @@ static int irc_cmd_completions( irc_t *irc, char **cmd ) irc_privmsg( irc, u, "NOTICE", irc->nick, "COMPLETIONS set ", s->key ); irc_privmsg( irc, u, "NOTICE", irc->nick, "COMPLETIONS ", "END" ); - - return( 1 ); } -static int irc_cmd_rehash( irc_t *irc, char **cmd ) +static void irc_cmd_rehash( irc_t *irc, char **cmd ) { if( global.conf->runmode == RUNMODE_INETD ) ipc_master_cmd_rehash( NULL, NULL ); @@ -585,8 +539,6 @@ static int irc_cmd_rehash( irc_t *irc, char **cmd ) ipc_to_master( cmd ); irc_reply( irc, 382, "%s :Rehashing", CONF_FILE ); - - return( 1 ); } static const command_t irc_commands[] = { @@ -624,12 +576,12 @@ static const command_t irc_commands[] = { { NULL } }; -int irc_exec( irc_t *irc, char *cmd[] ) +void irc_exec( irc_t *irc, char *cmd[] ) { - int i, j; + int i; if( !cmd[0] ) - return( 1 ); + return; for( i = 0; irc_commands[i].command; i++ ) if( g_strcasecmp( irc_commands[i].command, cmd[0] ) == 0 ) @@ -637,33 +589,30 @@ int irc_exec( irc_t *irc, char *cmd[] ) if( irc_commands[i].flags & IRC_CMD_PRE_LOGIN && irc->status >= USTATUS_LOGGED_IN ) { irc_reply( irc, 462, ":Only allowed before logging in" ); - return( 1 ); } - if( irc_commands[i].flags & IRC_CMD_LOGGED_IN && irc->status < USTATUS_LOGGED_IN ) + else if( irc_commands[i].flags & IRC_CMD_LOGGED_IN && irc->status < USTATUS_LOGGED_IN ) { irc_reply( irc, 451, ":Register first" ); - return( 1 ); } - if( irc_commands[i].flags & IRC_CMD_OPER_ONLY && !strchr( irc->umode, 'o' ) ) + else if( irc_commands[i].flags & IRC_CMD_OPER_ONLY && !strchr( irc->umode, 'o' ) ) { irc_reply( irc, 481, ":Permission denied - You're not an IRC operator" ); - return( 1 ); } - - for( j = 1; j <= irc_commands[i].required_parameters; j ++ ) - if( !cmd[j] ) - { - irc_reply( irc, 461, "%s :Need more parameters", cmd[0] ); - return( 1 ); - } - - if( irc_commands[i].flags & IRC_CMD_TO_MASTER ) + else if( !cmd[irc_commands[i].required_parameters] ) + { + irc_reply( irc, 461, "%s :Need more parameters", cmd[0] ); + } + else if( irc_commands[i].flags & IRC_CMD_TO_MASTER ) + { /* IPC doesn't make sense in inetd mode, but the function will catch that. */ ipc_to_master( cmd ); + } else - return irc_commands[i].execute( irc, cmd ); + { + irc_commands[i].execute( irc, cmd ); + } + + break; } - - return( 1 ); } diff --git a/commands.c b/root_commands.c index fbe378f6..426cf6e8 100644 --- a/commands.c +++ b/root_commands.c @@ -31,7 +31,7 @@ #include <string.h> -int root_command_string( irc_t *irc, user_t *u, char *command, int flags ) +void root_command_string( irc_t *irc, user_t *u, char *command, int flags ) { char *cmd[IRC_MAX_ARGS]; char *s; @@ -63,15 +63,15 @@ int root_command_string( irc_t *irc, user_t *u, char *command, int flags ) } cmd[k] = NULL; - return( root_command( irc, cmd ) ); + root_command( irc, cmd ); } -int root_command( irc_t *irc, char *cmd[] ) +void root_command( irc_t *irc, char *cmd[] ) { int i; if( !cmd[0] ) - return( 0 ); + return; for( i = 0; commands[i].command; i++ ) if( g_strcasecmp( commands[i].command, cmd[0] ) == 0 ) @@ -79,18 +79,16 @@ int root_command( irc_t *irc, char *cmd[] ) if( !cmd[commands[i].required_parameters] ) { irc_usermsg( irc, "Not enough parameters given (need %d)", commands[i].required_parameters ); - return( 0 ); + return; } commands[i].execute( irc, cmd ); - return( 1 ); + return; } irc_usermsg( irc, "Unknown command: %s. Please use \x02help commands\x02 to get a list of available commands.", cmd[0] ); - - return( 1 ); } -static int cmd_help( irc_t *irc, char **cmd ) +static void cmd_help( irc_t *irc, char **cmd ) { char param[80]; int i; @@ -110,16 +108,14 @@ static int cmd_help( irc_t *irc, char **cmd ) { irc_usermsg( irc, "%s", s ); g_free( s ); - return( 1 ); } else { irc_usermsg( irc, "Error opening helpfile." ); - return( 0 ); } } -static int cmd_identify( irc_t *irc, char **cmd ) +static void cmd_identify( irc_t *irc, char **cmd ) { storage_status_t status = storage_load( irc->nick, cmd[1], irc ); @@ -138,16 +134,14 @@ static int cmd_identify( irc_t *irc, char **cmd ) irc_usermsg( irc, "Something very weird happened" ); break; } - - return( 0 ); } -static int cmd_register( irc_t *irc, char **cmd ) +static void cmd_register( irc_t *irc, char **cmd ) { if( global.conf->authmode == AUTHMODE_REGISTERED ) { irc_usermsg( irc, "This server does not allow registering new accounts" ); - return( 0 ); + return; } irc_setpass( irc, cmd[1] ); @@ -165,11 +159,9 @@ static int cmd_register( irc_t *irc, char **cmd ) irc_usermsg( irc, "Error registering" ); break; } - - return( 0 ); } -static int cmd_drop( irc_t *irc, char **cmd ) +static void cmd_drop( irc_t *irc, char **cmd ) { storage_status_t status; @@ -177,30 +169,30 @@ static int cmd_drop( irc_t *irc, char **cmd ) switch (status) { case STORAGE_NO_SUCH_USER: irc_usermsg( irc, "That account does not exist" ); - return( 0 ); + break; case STORAGE_INVALID_PASSWORD: irc_usermsg( irc, "Password invalid" ); - return( 0 ); + break; case STORAGE_OK: irc_setpass( irc, NULL ); irc->status = USTATUS_LOGGED_IN; irc_umode_set( irc, "-R", 1 ); irc_usermsg( irc, "Account `%s' removed", irc->nick ); - return( 0 ); + break; default: irc_usermsg( irc, "Error: '%d'", status ); - return( 0 ); + break; } } -static int cmd_account( irc_t *irc, char **cmd ) +static void cmd_account( irc_t *irc, char **cmd ) { account_t *a; if( global.conf->authmode == AUTHMODE_REGISTERED && irc->status < USTATUS_IDENTIFIED ) { irc_usermsg( irc, "This server only accepts registered users" ); - return( 0 ); + return; } if( g_strcasecmp( cmd[1], "add" ) == 0 ) @@ -210,7 +202,7 @@ static int cmd_account( irc_t *irc, char **cmd ) if( cmd[2] == NULL || cmd[3] == NULL || cmd[4] == NULL ) { irc_usermsg( irc, "Not enough parameters" ); - return( 0 ); + return; } prpl = find_protocol(cmd[2]); @@ -218,7 +210,7 @@ static int cmd_account( irc_t *irc, char **cmd ) if( prpl == NULL ) { irc_usermsg( irc, "Unknown protocol" ); - return( 0 ); + return; } a = account_add( irc, prpl, cmd[3], cmd[4] ); @@ -280,7 +272,7 @@ static int cmd_account( irc_t *irc, char **cmd ) if( a->gc ) { irc_usermsg( irc, "Account already online" ); - return( 0 ); + return; } else { @@ -290,7 +282,7 @@ static int cmd_account( irc_t *irc, char **cmd ) else { irc_usermsg( irc, "Invalid account" ); - return( 0 ); + return; } } else @@ -336,36 +328,34 @@ static int cmd_account( irc_t *irc, char **cmd ) else { irc_usermsg( irc, "Account already offline" ); - return( 0 ); + return; } } else { irc_usermsg( irc, "Invalid account" ); - return( 0 ); + return; } } else { irc_usermsg( irc, "Unknown command: account %s. Please use \x02help commands\x02 to get a list of available commands.", cmd[1] ); } - - return( 1 ); } -static int cmd_add( irc_t *irc, char **cmd ) +static void cmd_add( irc_t *irc, char **cmd ) { account_t *a; if( !( a = account_get( irc, cmd[1] ) ) ) { irc_usermsg( irc, "Invalid account" ); - return( 1 ); + return; } else if( !( a->gc && ( a->gc->flags & OPT_LOGGED_IN ) ) ) { irc_usermsg( irc, "That account is not on-line" ); - return( 1 ); + return; } if( cmd[3] ) @@ -373,12 +363,12 @@ static int cmd_add( irc_t *irc, char **cmd ) if( !nick_ok( cmd[3] ) ) { irc_usermsg( irc, "The requested nick `%s' is invalid", cmd[3] ); - return( 0 ); + return; } else if( user_find( irc, cmd[3] ) ) { irc_usermsg( irc, "The requested nick `%s' already exists", cmd[3] ); - return( 0 ); + return; } else { @@ -389,11 +379,9 @@ static int cmd_add( irc_t *irc, char **cmd ) add_buddy( a->gc, NULL, cmd[2], cmd[2] ); irc_usermsg( irc, "User `%s' added to your contact list as `%s'", cmd[2], user_findhandle( a->gc, cmd[2] )->nick ); - - return( 0 ); } -static int cmd_info( irc_t *irc, char **cmd ) +static void cmd_info( irc_t *irc, char **cmd ) { struct gaim_connection *gc; account_t *a; @@ -404,7 +392,7 @@ static int cmd_info( irc_t *irc, char **cmd ) if( !u || !u->gc ) { irc_usermsg( irc, "Nick `%s' does not exist", cmd[1] ); - return( 1 ); + return; } gc = u->gc; cmd[2] = u->handle; @@ -412,66 +400,63 @@ static int cmd_info( irc_t *irc, char **cmd ) else if( !( a = account_get( irc, cmd[1] ) ) ) { irc_usermsg( irc, "Invalid account" ); - return( 1 ); + return; } else if( !( ( gc = a->gc ) && ( a->gc->flags & OPT_LOGGED_IN ) ) ) { irc_usermsg( irc, "That account is not on-line" ); - return( 1 ); + return; } if( !gc->prpl->get_info ) { irc_usermsg( irc, "Command `%s' not supported by this protocol", cmd[0] ); - return( 1 ); } - gc->prpl->get_info( gc, cmd[2] ); - - return( 0 ); + else + { + gc->prpl->get_info( gc, cmd[2] ); + } } -static int cmd_rename( irc_t *irc, char **cmd ) +static void cmd_rename( irc_t *irc, char **cmd ) { user_t *u; if( g_strcasecmp( cmd[1], irc->nick ) == 0 ) { irc_usermsg( irc, "Nick `%s' can't be changed", cmd[1] ); - return( 1 ); } - if( user_find( irc, cmd[2] ) && ( nick_cmp( cmd[1], cmd[2] ) != 0 ) ) + else if( user_find( irc, cmd[2] ) && ( nick_cmp( cmd[1], cmd[2] ) != 0 ) ) { irc_usermsg( irc, "Nick `%s' already exists", cmd[2] ); - return( 1 ); } - if( !nick_ok( cmd[2] ) ) + else if( !nick_ok( cmd[2] ) ) { irc_usermsg( irc, "Nick `%s' is invalid", cmd[2] ); - return( 1 ); } - if( !( u = user_find( irc, cmd[1] ) ) ) + else if( !( u = user_find( irc, cmd[1] ) ) ) { irc_usermsg( irc, "Nick `%s' does not exist", cmd[1] ); - return( 1 ); - } - user_rename( irc, cmd[1], cmd[2] ); - irc_write( irc, ":%s!%s@%s NICK %s", cmd[1], u->user, u->host, cmd[2] ); - if( g_strcasecmp( cmd[1], irc->mynick ) == 0 ) - { - g_free( irc->mynick ); - irc->mynick = g_strdup( cmd[2] ); } - else if( u->send_handler == buddy_send_handler ) + else { - nick_set( irc, u->handle, u->gc->prpl, cmd[2] ); + user_rename( irc, cmd[1], cmd[2] ); + irc_write( irc, ":%s!%s@%s NICK %s", cmd[1], u->user, u->host, cmd[2] ); + if( g_strcasecmp( cmd[1], irc->mynick ) == 0 ) + { + g_free( irc->mynick ); + irc->mynick = g_strdup( cmd[2] ); + } + else if( u->send_handler == buddy_send_handler ) + { + nick_set( irc, u->handle, u->gc->prpl, cmd[2] ); + } + + irc_usermsg( irc, "Nick successfully changed" ); } - - irc_usermsg( irc, "Nick successfully changed" ); - - return( 0 ); } -static int cmd_remove( irc_t *irc, char **cmd ) +static void cmd_remove( irc_t *irc, char **cmd ) { user_t *u; char *s; @@ -479,7 +464,7 @@ static int cmd_remove( irc_t *irc, char **cmd ) if( !( u = user_find( irc, cmd[1] ) ) || !u->gc ) { irc_usermsg( irc, "Buddy `%s' not found", cmd[1] ); - return( 1 ); + return; } s = g_strdup( u->handle ); @@ -490,10 +475,10 @@ static int cmd_remove( irc_t *irc, char **cmd ) irc_usermsg( irc, "Buddy `%s' (nick %s) removed from contact list", s, cmd[1] ); g_free( s ); - return( 0 ); + return; } -static int cmd_block( irc_t *irc, char **cmd ) +static void cmd_block( irc_t *irc, char **cmd ) { struct gaim_connection *gc; account_t *a; @@ -504,7 +489,7 @@ static int cmd_block( irc_t *irc, char **cmd ) if( !u || !u->gc ) { irc_usermsg( irc, "Nick `%s' does not exist", cmd[1] ); - return( 1 ); + return; } gc = u->gc; cmd[2] = u->handle; @@ -512,12 +497,12 @@ static int cmd_block( irc_t *irc, char **cmd ) else if( !( a = account_get( irc, cmd[1] ) ) ) { irc_usermsg( irc, "Invalid account" ); - return( 1 ); + return; } else if( !( ( gc = a->gc ) && ( a->gc->flags & OPT_LOGGED_IN ) ) ) { irc_usermsg( irc, "That account is not on-line" ); - return( 1 ); + return; } if( !gc->prpl->add_deny || !gc->prpl->rem_permit ) @@ -530,11 +515,9 @@ static int cmd_block( irc_t *irc, char **cmd ) gc->prpl->add_deny( gc, cmd[2] ); irc_usermsg( irc, "Buddy `%s' moved from your permit- to your deny-list", cmd[2] ); } - - return( 0 ); } -static int cmd_allow( irc_t *irc, char **cmd ) +static void cmd_allow( irc_t *irc, char **cmd ) { struct gaim_connection *gc; account_t *a; @@ -545,7 +528,7 @@ static int cmd_allow( irc_t *irc, char **cmd ) if( !u || !u->gc ) { irc_usermsg( irc, "Nick `%s' does not exist", cmd[1] ); - return( 1 ); + return; } gc = u->gc; cmd[2] = u->handle; @@ -553,12 +536,12 @@ static int cmd_allow( irc_t *irc, char **cmd ) else if( !( a = account_get( irc, cmd[1] ) ) ) { irc_usermsg( irc, "Invalid account" ); - return( 1 ); + return; } else if( !( ( gc = a->gc ) && ( a->gc->flags & OPT_LOGGED_IN ) ) ) { irc_usermsg( irc, "That account is not on-line" ); - return( 1 ); + return; } if( !gc->prpl->rem_deny || !gc->prpl->add_permit ) @@ -572,11 +555,9 @@ static int cmd_allow( irc_t *irc, char **cmd ) irc_usermsg( irc, "Buddy `%s' moved from your deny- to your permit-list", cmd[2] ); } - - return( 0 ); } -static int cmd_yesno( irc_t *irc, char **cmd ) +static void cmd_yesno( irc_t *irc, char **cmd ) { query_t *q = NULL; int numq = 0; @@ -584,7 +565,7 @@ static int cmd_yesno( irc_t *irc, char **cmd ) if( irc->queries == NULL ) { irc_usermsg( irc, "Did I ask you something?" ); - return( 0 ); + return; } /* If there's an argument, the user seems to want to answer another question than the @@ -594,7 +575,7 @@ static int cmd_yesno( irc_t *irc, char **cmd ) if( sscanf( cmd[1], "%d", &numq ) != 1 ) { irc_usermsg( irc, "Invalid query number" ); - return( 0 ); + return; } for( q = irc->queries; q; q = q->next, numq -- ) @@ -604,7 +585,7 @@ static int cmd_yesno( irc_t *irc, char **cmd ) if( !q ) { irc_usermsg( irc, "Uhm, I never asked you something like that..." ); - return( 0 ); + return; } } @@ -612,11 +593,9 @@ static int cmd_yesno( irc_t *irc, char **cmd ) query_answer( irc, q, 1 ); else if( g_strcasecmp( cmd[0], "no" ) == 0 ) query_answer( irc, q, 0 ); - - return( 1 ); } -static int cmd_set( irc_t *irc, char **cmd ) +static void cmd_set( irc_t *irc, char **cmd ) { if( cmd[1] && cmd[2] ) { @@ -638,21 +617,17 @@ static int cmd_set( irc_t *irc, char **cmd ) s = s->next; } } - - return( 0 ); } -static int cmd_save( irc_t *irc, char **cmd ) +static void cmd_save( irc_t *irc, char **cmd ) { if( storage_save( irc, TRUE ) == STORAGE_OK ) irc_usermsg( irc, "Configuration saved" ); else irc_usermsg( irc, "Configuration could not be saved!" ); - - return( 0 ); } -static int cmd_blist( irc_t *irc, char **cmd ) +static void cmd_blist( irc_t *irc, char **cmd ) { int online = 0, away = 0, offline = 0; user_t *u; @@ -694,11 +669,9 @@ static int cmd_blist( irc_t *irc, char **cmd ) } irc_usermsg( irc, "%d buddies (%d available, %d away, %d offline)", n_online + n_away + n_offline, n_online, n_away, n_offline ); - - return( 0 ); } -static int cmd_nick( irc_t *irc, char **cmd ) +static void cmd_nick( irc_t *irc, char **cmd ) { account_t *a; @@ -730,11 +703,9 @@ static int cmd_nick( irc_t *irc, char **cmd ) else a->gc->prpl->set_info( a->gc, cmd[2] ); } - - return( 1 ); } -static int cmd_qlist( irc_t *irc, char **cmd ) +static void cmd_qlist( irc_t *irc, char **cmd ) { query_t *q = irc->queries; int num; @@ -742,7 +713,7 @@ static int cmd_qlist( irc_t *irc, char **cmd ) if( !q ) { irc_usermsg( irc, "There are no pending questions." ); - return( 0 ); + return; } irc_usermsg( irc, "Pending queries:" ); @@ -752,11 +723,9 @@ static int cmd_qlist( irc_t *irc, char **cmd ) irc_usermsg( irc, "%d, %s(%s): %s", num, q->gc->prpl->name, q->gc->username, q->question ); else irc_usermsg( irc, "%d, BitlBee: %s", num, q->question ); - - return( 0 ); } -static int cmd_import_buddies( irc_t *irc, char **cmd ) +static void cmd_import_buddies( irc_t *irc, char **cmd ) { struct gaim_connection *gc; account_t *a; @@ -765,12 +734,12 @@ static int cmd_import_buddies( irc_t *irc, char **cmd ) if( !( a = account_get( irc, cmd[1] ) ) ) { irc_usermsg( irc, "Invalid account" ); - return( 0 ); + return; } else if( !( ( gc = a->gc ) && ( a->gc->flags & OPT_LOGGED_IN ) ) ) { irc_usermsg( irc, "That account is not on-line" ); - return( 0 ); + return; } if( cmd[2] ) @@ -791,7 +760,7 @@ static int cmd_import_buddies( irc_t *irc, char **cmd ) else { irc_usermsg( irc, "Invalid argument: %s", cmd[2] ); - return( 0 ); + return; } } @@ -805,8 +774,6 @@ static int cmd_import_buddies( irc_t *irc, char **cmd ) } irc_usermsg( irc, "Sent all add requests. Please wait for a while, the server needs some time to handle all the adds." ); - - return( 0 ); } const command_t commands[] = { @@ -44,7 +44,7 @@ typedef struct __USER guint sendbuf_timer; int sendbuf_flags; - int (*send_handler) ( irc_t *irc, struct __USER *u, char *msg, int flags ); + void (*send_handler) ( irc_t *irc, struct __USER *u, char *msg, int flags ); struct __USER *next; } user_t; |