diff options
| author | Wilmer van der Gaast <wilmer@gaast.net> | 2006-01-17 22:15:42 +0100 | 
|---|---|---|
| committer | Wilmer van der Gaast <wilmer@gaast.net> | 2006-01-17 22:15:42 +0100 | 
| commit | 48721c328e574e0ff76c41734b78aab217edbf65 (patch) | |
| tree | 95e7cb0a59c26f596e77c9dec962f68a0faceb53 /ipc.c | |
| parent | daa9e027e8c8d1bc91e104dba985d5d44fef8c77 (diff) | |
A KILL command. Unfortunately the user doesn't see the KILL message yet. :-(
Diffstat (limited to 'ipc.c')
| -rw-r--r-- | ipc.c | 34 | 
1 files changed, 23 insertions, 11 deletions
| @@ -31,7 +31,7 @@  GSList *child_list = NULL; -static int ipc_master_cmd_die( irc_t *data, char **cmd ) +static int ipc_master_cmd_die( irc_t *irc, char **cmd )  {  	if( global.conf->runmode == RUNMODE_FORKDAEMON )  		ipc_to_children_str( "DIE\r\n" ); @@ -41,7 +41,7 @@ static int ipc_master_cmd_die( irc_t *data, char **cmd )  	return 1;  } -static int ipc_master_cmd_rehash( irc_t *data, char **cmd ) +static int ipc_master_cmd_rehash( irc_t *irc, char **cmd )  {  	runmode_t oldmode; @@ -67,21 +67,20 @@ static const command_t ipc_master_commands[] = {  	{ "wallops",    1, NULL,                      IPC_CMD_TO_CHILDREN },  	{ "lilo",       1, NULL,                      IPC_CMD_TO_CHILDREN },  	{ "rehash",     0, ipc_master_cmd_rehash,     0 }, +	{ "kill",       2, NULL,                      IPC_CMD_TO_CHILDREN },  	{ NULL }  }; -static int ipc_child_cmd_die( irc_t *data, char **cmd ) +static int ipc_child_cmd_die( irc_t *irc, char **cmd )  {  	bitlbee_shutdown( NULL );  	return 1;  } -static int ipc_child_cmd_wallops( irc_t *data, char **cmd ) +static int ipc_child_cmd_wallops( irc_t *irc, char **cmd )  { -	irc_t *irc = data; -	  	if( irc->status < USTATUS_LOGGED_IN )  		return 1; @@ -91,10 +90,8 @@ static int ipc_child_cmd_wallops( irc_t *data, char **cmd )  	return 1;  } -static int ipc_child_cmd_lilo( irc_t *data, char **cmd ) +static int ipc_child_cmd_lilo( irc_t *irc, char **cmd )  { -	irc_t *irc = data; -	  	if( irc->status < USTATUS_LOGGED_IN )  		return 1; @@ -104,7 +101,7 @@ static int ipc_child_cmd_lilo( irc_t *data, char **cmd )  	return 1;  } -static int ipc_child_cmd_rehash( irc_t *data, char **cmd ) +static int ipc_child_cmd_rehash( irc_t *irc, char **cmd )  {  	runmode_t oldmode; @@ -118,11 +115,26 @@ static int ipc_child_cmd_rehash( irc_t *data, char **cmd )  	return 1;  } +static int ipc_child_cmd_kill( irc_t *irc, char **cmd ) +{ +	if( irc->status < USTATUS_LOGGED_IN ) +		return 1; +	 +	if( nick_cmp( cmd[1], irc->nick ) != 0 ) +		return 1;	/* It's not for us. */ +	 +	irc_write( irc, ":%s!%s@%s KILL %s :%s", irc->mynick, irc->mynick, irc->myhost, irc->nick, cmd[2] ); +	g_io_channel_close( irc->io_channel ); +	 +	return 0; +} +  static const command_t ipc_child_commands[] = {  	{ "die",        0, ipc_child_cmd_die,         0 },  	{ "wallops",    1, ipc_child_cmd_wallops,     0 },  	{ "lilo",       1, ipc_child_cmd_lilo,        0 }, -	{ "rehash",     0, ipc_child_cmd_rehash,     0 }, +	{ "rehash",     0, ipc_child_cmd_rehash,      0 }, +	{ "kill",       2, ipc_child_cmd_kill,        0 },  	{ NULL }  }; | 
