mirror of
https://github.com/irssi/irssi.git
synced 2026-08-11 21:00:40 +02:00
Changed option handling in /commands. Irssi will now complain about
unknown options and missing option arguments. Renamed /SERVER -add, -remove and -list to /SERVER ADD, REMOVE and LIST. git-svn-id: http://svn.irssi.org/repos/irssi/trunk@365 dbcabf3a-b0e7-0310-adc4-f8d773084564
This commit is contained in:
parent
ca4226cca6
commit
a5d31a195d
34 changed files with 949 additions and 576 deletions
|
|
@ -59,7 +59,8 @@ DCC_REC *item_get_dcc(void *item)
|
|||
static void cmd_msg(const char *data)
|
||||
{
|
||||
DCC_REC *dcc;
|
||||
char *params, *text, *target;
|
||||
char *text, *target;
|
||||
void *free_arg;
|
||||
|
||||
g_return_if_fail(text != NULL);
|
||||
|
||||
|
|
@ -68,12 +69,13 @@ static void cmd_msg(const char *data)
|
|||
return;
|
||||
}
|
||||
|
||||
params = cmd_get_params(data, 2 | PARAM_FLAG_GETREST, &target, &text);
|
||||
if (!cmd_get_params(data, &free_arg, 2 | PARAM_FLAG_GETREST, &target, &text))
|
||||
return;
|
||||
|
||||
dcc = dcc_find_item(DCC_TYPE_CHAT, ++target, NULL);
|
||||
if (dcc != NULL) dcc_chat_send(dcc, text);
|
||||
|
||||
g_free(params);
|
||||
cmd_params_free(free_arg);
|
||||
signal_stop();
|
||||
}
|
||||
|
||||
|
|
@ -96,9 +98,9 @@ static void cmd_me(const char *data, IRC_SERVER_REC *server, WI_IRC_REC *item)
|
|||
|
||||
static void cmd_action(const char *data, IRC_SERVER_REC *server)
|
||||
{
|
||||
char *params, *target, *text;
|
||||
DCC_REC *dcc;
|
||||
char *str;
|
||||
char *target, *text, *str;
|
||||
void *free_arg;
|
||||
|
||||
g_return_if_fail(data != NULL);
|
||||
|
||||
|
|
@ -107,7 +109,8 @@ static void cmd_action(const char *data, IRC_SERVER_REC *server)
|
|||
return;
|
||||
}
|
||||
|
||||
params = cmd_get_params(data, 3 | PARAM_FLAG_GETREST, &target, &text);
|
||||
if (!cmd_get_params(data, &free_arg, 3 | PARAM_FLAG_GETREST, &target, &text))
|
||||
return;
|
||||
if (*target == '\0' || *text == '\0') cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
|
||||
|
||||
dcc = dcc_find_item(DCC_TYPE_CHAT, target+1, NULL);
|
||||
|
|
@ -117,25 +120,26 @@ static void cmd_action(const char *data, IRC_SERVER_REC *server)
|
|||
g_free(str);
|
||||
}
|
||||
|
||||
g_free(params);
|
||||
cmd_params_free(free_arg);
|
||||
signal_stop();
|
||||
}
|
||||
|
||||
static void cmd_ctcp(const char *data, IRC_SERVER_REC *server)
|
||||
{
|
||||
char *params, *target, *ctcpcmd, *ctcpdata;
|
||||
DCC_REC *dcc;
|
||||
char *str;
|
||||
char *target, *ctcpcmd, *ctcpdata, *str;
|
||||
void *free_arg;
|
||||
|
||||
g_return_if_fail(data != NULL);
|
||||
if (server == NULL || !server->connected) cmd_return_error(CMDERR_NOT_CONNECTED);
|
||||
|
||||
params = cmd_get_params(data, 3 | PARAM_FLAG_GETREST, &target, &ctcpcmd, &ctcpdata);
|
||||
if (!cmd_get_params(data, &free_arg, 3 | PARAM_FLAG_GETREST, &target, &ctcpcmd, &ctcpdata))
|
||||
return;
|
||||
if (*target == '\0' || *ctcpcmd == '\0') cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
|
||||
|
||||
if (*target != '=') {
|
||||
/* handle only DCC CTCPs */
|
||||
g_free(params);
|
||||
cmd_params_free(free_arg);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -148,7 +152,7 @@ static void cmd_ctcp(const char *data, IRC_SERVER_REC *server)
|
|||
g_free(str);
|
||||
}
|
||||
|
||||
g_free(params);
|
||||
cmd_params_free(free_arg);
|
||||
signal_stop();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -212,12 +212,14 @@ static void cmd_dcc_get(const char *data)
|
|||
{
|
||||
DCC_REC *dcc;
|
||||
GSList *tmp, *next;
|
||||
char *params, *nick, *fname;
|
||||
char *nick, *fname;
|
||||
void *free_arg;
|
||||
int found;
|
||||
|
||||
g_return_if_fail(data != NULL);
|
||||
|
||||
params = cmd_get_params(data, 2 | PARAM_FLAG_GETREST, &nick, &fname);
|
||||
if (!cmd_get_params(data, &free_arg, 2 | PARAM_FLAG_GETREST, &nick, &fname))
|
||||
return;
|
||||
if (*nick == '\0') cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
|
||||
|
||||
dcc = NULL; found = FALSE;
|
||||
|
|
@ -235,7 +237,7 @@ static void cmd_dcc_get(const char *data)
|
|||
if (!found)
|
||||
signal_emit("dcc error get not found", 1, nick);
|
||||
|
||||
g_free(params);
|
||||
cmd_params_free(free_arg);
|
||||
}
|
||||
|
||||
static void dcc_resume_send(DCC_REC *dcc, int port)
|
||||
|
|
@ -264,7 +266,8 @@ static void dcc_ctcp_msg(const char *data, IRC_SERVER_REC *server,
|
|||
const char *sender, const char *sendaddr,
|
||||
const char *target, DCC_REC *chat)
|
||||
{
|
||||
char *params, *type, *arg, *portstr, *sizestr;
|
||||
char *type, *arg, *portstr, *sizestr;
|
||||
void *free_arg;
|
||||
unsigned long size;
|
||||
int port;
|
||||
DCC_REC *dcc;
|
||||
|
|
@ -272,8 +275,9 @@ static void dcc_ctcp_msg(const char *data, IRC_SERVER_REC *server,
|
|||
g_return_if_fail(data != NULL);
|
||||
g_return_if_fail(sender != NULL);
|
||||
|
||||
params = cmd_get_params(data, 4 | PARAM_FLAG_NOQUOTES,
|
||||
&type, &arg, &portstr, &sizestr);
|
||||
if (!cmd_get_params(data, &free_arg, 4 | PARAM_FLAG_NOQUOTES,
|
||||
&type, &arg, &portstr, &sizestr))
|
||||
return;
|
||||
|
||||
port = atoi(portstr);
|
||||
size = atol(sizestr);
|
||||
|
|
@ -281,7 +285,7 @@ static void dcc_ctcp_msg(const char *data, IRC_SERVER_REC *server,
|
|||
dcc = dcc_find_by_port(sender, port);
|
||||
if (dcc == NULL || !is_resume_type(type) ||
|
||||
!is_resume_ok(type, dcc) || !is_accept_ok(type, dcc)) {
|
||||
g_free(params);
|
||||
cmd_params_free(free_arg);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -298,7 +302,7 @@ static void dcc_ctcp_msg(const char *data, IRC_SERVER_REC *server,
|
|||
dcc_get_connect(dcc);
|
||||
}
|
||||
|
||||
g_free(params);
|
||||
cmd_params_free(free_arg);
|
||||
}
|
||||
|
||||
static void dcc_resume_rec(DCC_REC *dcc)
|
||||
|
|
@ -331,12 +335,14 @@ static void cmd_dcc_resume(const char *data)
|
|||
{
|
||||
DCC_REC *dcc;
|
||||
GSList *tmp;
|
||||
char *params, *nick, *fname;
|
||||
char *nick, *fname;
|
||||
void *free_arg;
|
||||
int found;
|
||||
|
||||
g_return_if_fail(data != NULL);
|
||||
|
||||
params = cmd_get_params(data, 2 | PARAM_FLAG_GETREST, &nick, &fname);
|
||||
if (!cmd_get_params(data, &free_arg, 2 | PARAM_FLAG_GETREST, &nick, &fname))
|
||||
return;
|
||||
if (*nick == '\0') cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
|
||||
|
||||
dcc = NULL; found = FALSE;
|
||||
|
|
@ -353,7 +359,7 @@ static void cmd_dcc_resume(const char *data)
|
|||
if (!found)
|
||||
signal_emit("dcc error get not found", 1, nick);
|
||||
|
||||
g_free(params);
|
||||
cmd_params_free(free_arg);
|
||||
}
|
||||
|
||||
/* input function: DCC SEND - we're ready to send more data */
|
||||
|
|
@ -483,7 +489,8 @@ static void dcc_send_init(DCC_REC *dcc)
|
|||
/* command: DCC SEND */
|
||||
static void cmd_dcc_send(const char *data, IRC_SERVER_REC *server, WI_IRC_REC *item)
|
||||
{
|
||||
char *params, *target, *fname, *str, *ptr;
|
||||
char *target, *fname, *str, *ptr;
|
||||
void *free_arg;
|
||||
char host[MAX_IP_LEN];
|
||||
int hfile, hlisten, port;
|
||||
long fsize;
|
||||
|
|
@ -492,7 +499,8 @@ static void cmd_dcc_send(const char *data, IRC_SERVER_REC *server, WI_IRC_REC *i
|
|||
|
||||
g_return_if_fail(data != NULL);
|
||||
|
||||
params = cmd_get_params(data, 2 | PARAM_FLAG_GETREST, &target, &fname);
|
||||
if (!cmd_get_params(data, &free_arg, 2 | PARAM_FLAG_GETREST, &target, &fname))
|
||||
return;
|
||||
if (*target == '\0' || *fname == '\0') cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
|
||||
|
||||
/* if we're in dcc chat, send the request via it. */
|
||||
|
|
@ -506,7 +514,7 @@ static void cmd_dcc_send(const char *data, IRC_SERVER_REC *server, WI_IRC_REC *i
|
|||
|
||||
if (dcc_find_item(DCC_TYPE_SEND, target, fname)) {
|
||||
signal_emit("dcc error send exists", 2, target, fname);
|
||||
g_free(params);
|
||||
cmd_params_free(free_arg);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -525,7 +533,7 @@ static void cmd_dcc_send(const char *data, IRC_SERVER_REC *server, WI_IRC_REC *i
|
|||
|
||||
if (hfile == -1) {
|
||||
signal_emit("dcc error file not found", 2, target, fname);
|
||||
g_free(params);
|
||||
cmd_params_free(free_arg);
|
||||
return;
|
||||
}
|
||||
fsize = lseek(hfile, 0, SEEK_END);
|
||||
|
|
@ -565,7 +573,7 @@ static void cmd_dcc_send(const char *data, IRC_SERVER_REC *server, WI_IRC_REC *i
|
|||
g_free(str);
|
||||
|
||||
g_free(fname);
|
||||
g_free(params);
|
||||
cmd_params_free(free_arg);
|
||||
}
|
||||
|
||||
static void read_settings(void)
|
||||
|
|
|
|||
|
|
@ -278,7 +278,8 @@ static void dcc_get_address(const char *str, IPADDR *ip)
|
|||
/* Handle incoming DCC CTCP messages */
|
||||
static void dcc_ctcp_msg(char *data, IRC_SERVER_REC *server, char *sender, char *sendaddr, char *target, DCC_REC *chat)
|
||||
{
|
||||
char *params, *type, *arg, *addrstr, *portstr, *sizestr, *str;
|
||||
char *type, *arg, *addrstr, *portstr, *sizestr, *str;
|
||||
void *free_arg;
|
||||
const char *cstr;
|
||||
DCC_REC *dcc;
|
||||
gulong size;
|
||||
|
|
@ -287,8 +288,9 @@ static void dcc_ctcp_msg(char *data, IRC_SERVER_REC *server, char *sender, char
|
|||
g_return_if_fail(data != NULL);
|
||||
g_return_if_fail(sender != NULL);
|
||||
|
||||
params = cmd_get_params(data, 5 | PARAM_FLAG_NOQUOTES,
|
||||
&type, &arg, &addrstr, &portstr, &sizestr);
|
||||
if (!cmd_get_params(data, &free_arg, 5 | PARAM_FLAG_NOQUOTES,
|
||||
&type, &arg, &addrstr, &portstr, &sizestr))
|
||||
return;
|
||||
|
||||
if (sscanf(portstr, "%d", &port) != 1) port = 0;
|
||||
if (sscanf(sizestr, "%lu", &size) != 1) size = 0;
|
||||
|
|
@ -349,20 +351,22 @@ static void dcc_ctcp_msg(char *data, IRC_SERVER_REC *server, char *sender, char
|
|||
break;
|
||||
}
|
||||
|
||||
g_free(params);
|
||||
cmd_params_free(free_arg);
|
||||
}
|
||||
|
||||
/* Handle incoming DCC CTCP replies */
|
||||
static void dcc_ctcp_reply(char *data, IRC_SERVER_REC *server, char *sender, char *sendaddr)
|
||||
{
|
||||
char *params, *cmd, *subcmd, *args;
|
||||
char *cmd, *subcmd, *args;
|
||||
void *free_arg;
|
||||
int type;
|
||||
DCC_REC *dcc;
|
||||
|
||||
g_return_if_fail(data != NULL);
|
||||
g_return_if_fail(sender != NULL);
|
||||
|
||||
params = cmd_get_params(data, 3 | PARAM_FLAG_GETREST, &cmd, &subcmd, &args);
|
||||
if (!cmd_get_params(data, &free_arg, 3 | PARAM_FLAG_GETREST, &cmd, &subcmd, &args))
|
||||
return;
|
||||
|
||||
if (g_strcasecmp(cmd, "REJECT") == 0)
|
||||
{
|
||||
|
|
@ -380,7 +384,7 @@ static void dcc_ctcp_reply(char *data, IRC_SERVER_REC *server, char *sender, cha
|
|||
signal_emit("dcc unknown reply", 3, data, sender, sendaddr);
|
||||
}
|
||||
|
||||
g_free(params);
|
||||
cmd_params_free(free_arg);
|
||||
}
|
||||
|
||||
static void dcc_reject(DCC_REC *dcc, IRC_SERVER_REC *server)
|
||||
|
|
@ -409,20 +413,22 @@ static void cmd_dcc_close(char *data, IRC_SERVER_REC *server)
|
|||
{
|
||||
DCC_REC *dcc;
|
||||
GSList *tmp, *next;
|
||||
char *params, *type, *nick, *arg;
|
||||
char *type, *nick, *arg;
|
||||
void *free_arg;
|
||||
gboolean found;
|
||||
int itype;
|
||||
|
||||
g_return_if_fail(data != NULL);
|
||||
|
||||
params = cmd_get_params(data, 3, &type, &nick, &arg);
|
||||
if (!cmd_get_params(data, &free_arg, 3, &type, &nick, &arg))
|
||||
return;
|
||||
|
||||
g_strup(type);
|
||||
itype = dcc_str2type(type);
|
||||
if (itype == 0)
|
||||
{
|
||||
signal_emit("dcc error unknown type", 1, type);
|
||||
g_free(params);
|
||||
cmd_params_free(free_arg);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -442,7 +448,7 @@ static void cmd_dcc_close(char *data, IRC_SERVER_REC *server)
|
|||
if (!found)
|
||||
signal_emit("dcc error close not found", 3, type, nick, arg);
|
||||
|
||||
g_free(params);
|
||||
cmd_params_free(free_arg);
|
||||
}
|
||||
|
||||
static void cmd_dcc(const char *data, IRC_SERVER_REC *server, WI_IRC_REC *item)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue