本文整理汇总了C++中cmd_params_free函数的典型用法代码示例。如果您正苦于以下问题:C++ cmd_params_free函数的具体用法?C++ cmd_params_free怎么用?C++ cmd_params_free使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cmd_params_free函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: cmd_nick
/* SYNTAX: NICK <new nick> */
static void cmd_nick(const char *data, IRC_SERVER_REC *server, WI_ITEM_REC *item)
{
char *nick;
void *free_arg;
g_return_if_fail(data != NULL);
if (!IS_IRC_SERVER(server) || !server->connected)
cmd_return_error(CMDERR_NOT_CONNECTED);
if (!cmd_get_params(data, &free_arg, 1, &nick))
return;
server->nick_changing = TRUE;
irc_send_cmdv(server, "NICK %s", nick);
nick = g_strdup_printf("%s :%s", nick, nick);
server_redirect_event(SERVER(server), nick, 5,
"event nick", "nickchange over", 0,
"event 433", "nickchange over", 1,
/* 437: ircnet = target unavailable,
dalnet = banned in channel,
can't change nick */
"event 437", "nickchange over", -1,
"event 432", "nickchange over", 1,
"event 438", "nickchange over", 1, NULL);
g_free(nick);
cmd_params_free(free_arg);
}
开发者ID:svn2github,项目名称:irssi,代码行数:30,代码来源:irc-commands.c
示例2: cmd_xmpppasswd
/* SYNTAX: XMPPPASSWD -yes <old_password> <new_password> */
static void
cmd_xmpppasswd(const char *data, SERVER_REC *server, WI_ITEM_REC *item)
{
GHashTable *optlist;
char *old_password, *new_password, *recoded;
LmMessage *lmsg;
LmMessageNode *node;
void *free_arg;
CMD_XMPP_SERVER(server);
if (!cmd_get_params(data, &free_arg, 2 | PARAM_FLAG_OPTIONS,
"xmpppasswd", &optlist, &old_password, &new_password))
return;
if (g_hash_table_lookup(optlist, "yes") == NULL)
cmd_param_error(CMDERR_NOT_GOOD_IDEA);
if (strcmp(old_password, server->connrec->password) != 0)
cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
lmsg = lm_message_new_with_sub_type(XMPP_SERVER(server)->domain,
LM_MESSAGE_TYPE_IQ, LM_MESSAGE_SUB_TYPE_SET);
node = lm_message_node_add_child(lmsg->node, "query", NULL);
lm_message_node_set_attribute(node, XMLNS, XMLNS_REGISTER);
recoded = xmpp_recode_out(XMPP_SERVER(server)->user);
lm_message_node_add_child(node, "username", recoded);
g_free(recoded);
recoded = xmpp_recode_out(new_password);
lm_message_node_add_child(node, "password", recoded);
g_free(recoded);
signal_emit("xmpp send iq", 2, server, lmsg);
lm_message_unref(lmsg);
cmd_params_free(free_arg);
}
开发者ID:ailin-nemui,项目名称:irssi-xmpp,代码行数:32,代码来源:registration.c
示例3: cmd_part
/* SYNTAX: PART [<channels>] [<message>] */
static void cmd_part(const char *data, IRC_SERVER_REC *server,
WI_ITEM_REC *item)
{
char *channame, *msg;
char *recoded = NULL;
void *free_arg;
CMD_IRC_SERVER(server);
if (!cmd_get_params(data, &free_arg, 2 | PARAM_FLAG_GETREST |
PARAM_FLAG_OPTCHAN, item, &channame, &msg))
return;
if (*channame == '\0') cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
if (*msg == '\0') msg = (char *) settings_get_str("part_message");
if (server->cmdcount > MAX_COMMANDS_ON_PART_UNTIL_PURGE)
irc_server_purge_output(server, channame);
if (*msg != '\0')
recoded = recode_out(SERVER(server), msg, channame);
irc_send_cmdv(server, ! recoded ? "PART %s" : "PART %s :%s",
channame, recoded);
g_free(recoded);
cmd_params_free(free_arg);
}
开发者ID:svn2github,项目名称:irssi,代码行数:28,代码来源:irc-commands.c
示例4: cmd_action
static void cmd_action(const char *data, SERVER_REC *server, WI_ITEM_REC *item)
{
CHAT_DCC_REC *dcc;
char *target, *text;
void *free_arg;
g_return_if_fail(data != NULL);
if (*data != '=') {
/* handle only DCC actions */
return;
}
if (!cmd_get_params(data, &free_arg, 2 | PARAM_FLAG_GETREST,
&target, &text))
return;
if (*target == '\0' || *text == '\0')
cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
dcc = dcc_chat_find_id(target+1);
if (dcc == NULL || dcc->sendbuf == NULL) {
printformat(NULL, NULL, MSGLEVEL_CLIENTERROR,
IRCTXT_DCC_CHAT_NOT_FOUND, target+1);
} else {
if (query_find(NULL, target) == NULL)
completion_last_message_add(target);
signal_emit("message dcc own_action", 2, dcc, text);
}
cmd_params_free(free_arg);
}
开发者ID:Adam-,项目名称:irssi,代码行数:31,代码来源:fe-dcc-chat.c
示例5: cmd_echo
/* SYNTAX: ECHO [-current] [-window <name>] [-level <level>] <text> */
static void cmd_echo(const char *data, void *server, WI_ITEM_REC *item)
{
WINDOW_REC *window;
GHashTable *optlist;
char *msg, *levelstr, *winname;
void *free_arg;
int level;
g_return_if_fail(data != NULL);
if (!cmd_get_params(data, &free_arg, 1 | PARAM_FLAG_OPTIONS |
PARAM_FLAG_GETREST, "echo", &optlist, &msg))
return;
levelstr = g_hash_table_lookup(optlist, "level");
level = levelstr == NULL ? 0 :
level2bits(g_hash_table_lookup(optlist, "level"), NULL);
if (level == 0) level = MSGLEVEL_CRAP;
winname = g_hash_table_lookup(optlist, "window");
window = winname == NULL ? NULL :
is_numeric(winname, '\0') ?
window_find_refnum(atoi(winname)) :
window_find_item(NULL, winname);
if (window == NULL) window = active_win;
printtext_window(window, level, "%s", msg);
cmd_params_free(free_arg);
}
开发者ID:ahf,项目名称:irssi,代码行数:30,代码来源:fe-core-commands.c
示例6: cmd_cycle
/* SYNTAX: CYCLE [<channel>] [<message>] */
static void cmd_cycle(const char *data, SERVER_REC *server, WI_ITEM_REC *item)
{
CHANNEL_REC *chanrec;
char *channame, *msg, *joindata;
void *free_arg;
g_return_if_fail(data != NULL);
if (!IS_SERVER(server) || !server->connected)
cmd_return_error(CMDERR_NOT_CONNECTED);
if (!cmd_get_params(data, &free_arg, 2 | PARAM_FLAG_OPTCHAN,
item, &channame, &msg))
return;
if (*channame == '\0') cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
chanrec = channel_find(server, channame);
if (chanrec == NULL) cmd_param_error(CMDERR_CHAN_NOT_FOUND);
joindata = chanrec->get_join_data(chanrec);
window_bind_add(window_item_window(chanrec),
chanrec->server->tag, chanrec->name);
/* FIXME: kludgy kludgy... */
signal_emit("command part", 3, data, server, item);
if (g_slist_find(channels, chanrec) != NULL) {
chanrec->left = TRUE;
channel_destroy(chanrec);
}
server->channels_join(server, joindata, FALSE);
g_free(joindata);
cmd_params_free(free_arg);
}
开发者ID:irssi,项目名称:irssi,代码行数:36,代码来源:fe-channels.c
示例7: cmd_server
static void cmd_server(const char *data, SERVER_REC *server, void *item)
{
GHashTable *optlist;
char *addr;
void *free_arg;
if (*data == '\0') {
print_servers();
print_lookup_servers();
print_reconnects();
signal_stop();
return;
}
if (g_strncasecmp(data, "add ", 4) == 0 ||
g_strncasecmp(data, "remove ", 7) == 0 ||
g_strcasecmp(data, "list") == 0 ||
g_strncasecmp(data, "list ", 5) == 0) {
command_runsub("server", data, server, item);
signal_stop();
return;
}
if (!cmd_get_params(data, &free_arg, 1 | PARAM_FLAG_OPTIONS,
"connect", &optlist, &addr))
return;
if (*addr == '\0' || strcmp(addr, "+") == 0)
cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
if (*addr == '+') window_create(NULL, FALSE);
cmd_params_free(free_arg);
}
开发者ID:svn2github,项目名称:irssi,代码行数:34,代码来源:fe-server.c
示例8: dcc_ctcp_reply
/* Handle incoming DCC CTCP replies */
static void dcc_ctcp_reply(char *data, IRC_SERVER_REC *server, char *sender, char *sendaddr)
{
char *cmd, *subcmd, *args;
void *free_arg;
int type;
DCC_REC *dcc;
g_return_if_fail(data != NULL);
g_return_if_fail(sender != NULL);
if (!cmd_get_params(data, &free_arg, 3 | PARAM_FLAG_GETREST, &cmd, &subcmd, &args))
return;
if (g_strcasecmp(cmd, "REJECT") == 0)
{
type = dcc_str2type(subcmd);
dcc = dcc_find_item(type, sender, type == DCC_TYPE_CHAT ? NULL : args);
if (dcc != NULL)
{
signal_emit("dcc closed", 1, dcc);
dcc_destroy(dcc);
}
}
else
{
/* unknown dcc ctcp reply */
signal_emit("dcc unknown reply", 3, data, sender, sendaddr);
}
cmd_params_free(free_arg);
}
开发者ID:svn2github,项目名称:irssi,代码行数:32,代码来源:dcc.c
示例9: cmd_load
/* SYNTAX: LOAD <module> [<submodule>] */
static void cmd_load(const char *data)
{
char *rootmodule, *submodule;
char **module_prefixes;
void *free_arg;
g_return_if_fail(data != NULL);
if (!cmd_get_params(data, &free_arg, 2 , &rootmodule, &submodule))
return;
if (*rootmodule == '\0')
cmd_load_list();
else {
module_prefixes = module_prefixes_get();
if (*submodule == '\0')
module_load(rootmodule, module_prefixes);
else {
module_load_sub(rootmodule, submodule,
module_prefixes);
}
module_prefixes_free(module_prefixes);
}
cmd_params_free(free_arg);
}
开发者ID:Brijen,项目名称:MacIrssi,代码行数:27,代码来源:fe-modules.c
示例10: cmd_action
/* SYNTAX: ACTION [-<server tag>] <target> <message> */
static void cmd_action(const char *data, IRC_SERVER_REC *server)
{
GHashTable *optlist;
const char *target, *text;
char *subtext;
char **splittexts;
int n = 0;
void *free_arg;
CMD_IRC_SERVER(server);
if (!cmd_get_params(data, &free_arg, 2 | PARAM_FLAG_OPTIONS |
PARAM_FLAG_UNKNOWN_OPTIONS | PARAM_FLAG_GETREST,
"action", &optlist, &target, &text))
return;
if (*target == '\0' || *text == '\0')
cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
server = IRC_SERVER(cmd_options_get_server("action", optlist, SERVER(server)));
if (server == NULL || !server->connected)
cmd_param_error(CMDERR_NOT_CONNECTED);
splittexts = irc_server_split_action(server, target, text);
while ((subtext = splittexts[n++])) {
irc_server_send_action(server, target, subtext);
signal_emit("message irc own_action", 3, server, subtext,
target);
}
g_strfreev(splittexts);
cmd_params_free(free_arg);
}
开发者ID:Adam-,项目名称:irssi,代码行数:33,代码来源:fe-irc-commands.c
示例11: cmd_toggle
/* SYNTAX: TOGGLE <key> [on|off|toggle] */
static void cmd_toggle(const char *data)
{
char *key, *value;
void *free_arg;
int type;
if (!cmd_get_params(data, &free_arg, 2 | PARAM_FLAG_GETREST | PARAM_FLAG_STRIP_TRAILING_WS, &key, &value))
return;
if (*key == '\0')
cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
type = settings_get_type(key);
if (type == SETTING_TYPE_ANY)
printformat(NULL, NULL, MSGLEVEL_CLIENTERROR, TXT_SET_UNKNOWN, key);
else if (type != SETTING_TYPE_BOOLEAN)
printformat(NULL, NULL, MSGLEVEL_CLIENTERROR, TXT_SET_NOT_BOOLEAN, key);
else {
set_boolean(key, *value != '\0' ? value : "TOGGLE");
set_print(settings_get_record(key));
signal_emit("setup changed", 0);
}
cmd_params_free(free_arg);
}
开发者ID:ahf,项目名称:irssi,代码行数:26,代码来源:fe-settings.c
示例12: cmd_oper
static void cmd_oper(const char *data, IRC_SERVER_REC *server)
{
char *nick, *password, *format;
void *free_arg;
g_return_if_fail(data != NULL);
if (!IS_IRC_SERVER(server) || !server->connected)
cmd_return_error(CMDERR_NOT_CONNECTED);
if (!cmd_get_params(data, &free_arg, 2, &nick, &password))
return;
if (*password == '\0') {
/* password not given, ask it.
irc/core handles the /OPER when password is given */
OPER_PASS_REC *rec;
rec = g_new(OPER_PASS_REC, 1);
rec->server = server;
rec->nick = g_strdup(*nick != '\0' ? nick : server->nick);
format = format_get_text(MODULE_NAME, NULL, server, NULL,
IRCTXT_ASK_OPER_PASS);
keyboard_entry_redirect((SIGNAL_FUNC) cmd_oper_got_pass,
format,
ENTRY_REDIRECT_FLAG_HIDDEN, rec);
g_free(format);
signal_stop();
}
cmd_params_free(free_arg);
}
开发者ID:Adam-,项目名称:irssi,代码行数:33,代码来源:fe-irc-commands.c
示例13: cmd_log_open
/* SYNTAX: LOG OPEN [-noopen] [-autoopen] [-window] [-<server tag>]
[-targets <targets>] [-colors]
<fname> [<levels>] */
static void cmd_log_open(const char *data)
{
SERVER_REC *server;
GHashTable *optlist;
char *targetarg, *fname, *levels, *servertag;
void *free_arg;
char window[MAX_INT_STRLEN];
LOG_REC *log;
int level;
if (!cmd_get_params(data, &free_arg, 2 | PARAM_FLAG_GETREST |
PARAM_FLAG_UNKNOWN_OPTIONS | PARAM_FLAG_OPTIONS,
"log open", &optlist, &fname, &levels))
return;
if (*fname == '\0') cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
level = level2bits(levels);
log = log_create_rec(fname, level != 0 ? level : MSGLEVEL_ALL);
/* -<server tag> */
server = cmd_options_get_server("log open", optlist, NULL);
servertag = server == NULL ? NULL : server->tag;
if (g_hash_table_lookup(optlist, "window")) {
/* log by window ref# */
targetarg = g_hash_table_lookup(optlist, "targets");
if (targetarg == NULL || !is_numeric(targetarg, '\0')) {
ltoa(window, active_win->refnum);
targetarg = window;
}
log_item_add(log, LOG_ITEM_WINDOW_REFNUM, targetarg,
servertag);
} else {
targetarg = g_hash_table_lookup(optlist, "targets");
if (targetarg != NULL && *targetarg != '\0')
log_add_targets(log, targetarg, servertag);
else if (servertag != NULL)
log_add_targets(log, "*", servertag);
}
if (g_hash_table_lookup(optlist, "autoopen"))
log->autoopen = TRUE;
if (g_hash_table_lookup(optlist, "colors") == NULL)
log->colorizer = log_colorizer_strip;
log_update(log);
if (log->handle == -1 && g_hash_table_lookup(optlist, "noopen") == NULL) {
/* start logging */
if (log_start_logging(log)) {
printformat(NULL, NULL, MSGLEVEL_CLIENTNOTICE,
TXT_LOG_OPENED, fname);
} else {
log_close(log);
}
}
cmd_params_free(free_arg);
}
开发者ID:svn2github,项目名称:irssi,代码行数:63,代码来源:fe-log.c
示例14: cmd_whowas
/* SYNTAX: WHOWAS [<nicks> [<count>]] */
static void cmd_whowas(const char *data, IRC_SERVER_REC *server)
{
char *nicks, *count;
void *free_arg;
int free_nick;
g_return_if_fail(data != NULL);
if (!IS_IRC_SERVER(server) || !server->connected)
cmd_return_error(CMDERR_NOT_CONNECTED);
if (!cmd_get_params(data, &free_arg, 2, &nicks, &count))
return;
if (*nicks == '\0') nicks = server->nick;
server->whowas_found = FALSE;
irc_send_cmdv(server, *count == '\0' ? "WHOWAS %s" :
"WHOWAS %s %s", nicks, count);
nicks = get_redirect_nicklist(nicks, &free_nick);
server_redirect_event(SERVER(server), nicks, 1,
"event 369", "event 369", 1,
"event 314", "whowas event", 1, NULL);
if (free_nick) g_free(nicks);
cmd_params_free(free_arg);
}
开发者ID:svn2github,项目名称:irssi,代码行数:26,代码来源:irc-commands.c
示例15: cmd_script_exec
static void cmd_script_exec(const char *data)
{
PERL_SCRIPT_REC *script;
GHashTable *optlist;
char *code;
void *free_arg;
if (!cmd_get_params(data, &free_arg, 1 | PARAM_FLAG_OPTIONS |
PARAM_FLAG_GETREST,
"script exec", &optlist, &code))
return;
if (*code == '\0')
cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
script = perl_script_load_data(code);
if (script != NULL &&
g_hash_table_lookup(optlist, "permanent") == NULL) {
/* not a permanent script, unload immediately */
perl_script_unload(script);
}
cmd_params_free(free_arg);
}
开发者ID:Liaf,项目名称:irssi,代码行数:25,代码来源:perl-fe.c
示例16: cmd_unload
/* SYNTAX: UNLOAD <module> [<submodule>] */
static void cmd_unload(const char *data)
{
MODULE_REC *module;
MODULE_FILE_REC *file;
char *rootmodule, *submodule;
void *free_arg;
g_return_if_fail(data != NULL);
if (!cmd_get_params(data, &free_arg, 2 , &rootmodule, &submodule))
return;
if (*rootmodule == '\0') cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
module = module_find(rootmodule);
if (module != NULL) {
if (*submodule == '\0')
module_unload(module);
else {
file = module_file_find(module, submodule);
if (file != NULL)
module_file_unload(file);
else
module = NULL;
}
}
if (module == NULL) {
printformat(NULL, NULL, MSGLEVEL_CLIENTERROR,
TXT_MODULE_NOT_LOADED, rootmodule, submodule);
}
cmd_params_free(free_arg);
}
开发者ID:Brijen,项目名称:MacIrssi,代码行数:34,代码来源:fe-modules.c
示例17: cmd_script_load
static void cmd_script_load(const char *data)
{
PERL_SCRIPT_REC *script;
char *fname, *path;
void *free_arg;
if (!cmd_get_params(data, &free_arg, 1, &path))
return;
if (*path == '\0')
cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
fname = perl_script_get_path(path);
if (fname == NULL) {
printformat(NULL, NULL, MSGLEVEL_CLIENTERROR,
TXT_SCRIPT_NOT_FOUND, data);
} else {
script = perl_script_load_file(fname);
if (script != NULL) {
printformat(NULL, NULL, MSGLEVEL_CLIENTERROR,
TXT_SCRIPT_LOADED,
script->name, script->path);
}
g_free(fname);
}
cmd_params_free(free_arg);
}
开发者ID:Liaf,项目名称:irssi,代码行数:27,代码来源:perl-fe.c
示例18: cmd_topic
/* SYNTAX: TOPIC [-delete] [<channel>] [<topic>] */
static void cmd_topic(const char *data, IRC_SERVER_REC *server, WI_ITEM_REC *item)
{
GHashTable *optlist;
char *channame, *topic;
char *recoded = NULL;
void *free_arg;
CMD_IRC_SERVER(server);
if (!cmd_get_params(data, &free_arg, 2 | PARAM_FLAG_OPTCHAN |
PARAM_FLAG_OPTIONS | PARAM_FLAG_GETREST,
item, "topic", &optlist, &channame, &topic))
return;
if (*topic != '\0' || g_hash_table_lookup(optlist, "delete") != NULL)
recoded = recode_out(SERVER(server), topic, channame);
if (recoded == NULL)
irc_send_cmdv(server, "TOPIC %s", channame);
else
irc_send_cmdv(server, "TOPIC %s :%s", channame, recoded);
g_free(recoded);
cmd_params_free(free_arg);
}
开发者ID:btamada,项目名称:irssi,代码行数:27,代码来源:irc-commands.c
示例19: cmd_server_remove
/* SYNTAX: SERVER REMOVE <address> [<port>] [<network>] */
static void cmd_server_remove(const char *data)
{
SERVER_SETUP_REC *rec;
char *addr, *port, *chatnet;
void *free_arg;
if (!cmd_get_params(data, &free_arg, 3, &addr, &port, &chatnet))
return;
if (*addr == '\0') cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
if (*port == '\0') {
if (*chatnet == '\0')
rec = server_setup_find(addr, -1, NULL);
else
rec = server_setup_find(addr, -1, chatnet);
}
else
{
if (*chatnet == '\0')
rec = server_setup_find(addr, atoi(port), NULL);
else
rec = server_setup_find(addr, atoi(port), chatnet);
}
if (rec == NULL)
printformat(NULL, NULL, MSGLEVEL_CLIENTNOTICE, TXT_SETUPSERVER_NOT_FOUND, addr, port);
else {
server_setup_remove(rec);
printformat(NULL, NULL, MSGLEVEL_CLIENTNOTICE, TXT_SETUPSERVER_REMOVED, addr, port);
}
cmd_params_free(free_arg);
}
开发者ID:RecyclingBin,项目名称:irssi,代码行数:34,代码来源:fe-server.c
示例20: cmd_names
static void cmd_names(const char *data, IRC_SERVER_REC *server,
WI_ITEM_REC *item)
{
GHashTable *optlist;
char *channel;
void *free_arg;
CMD_IRC_SERVER(server);
if (!cmd_get_params(data, &free_arg, 1 | PARAM_FLAG_OPTIONS |
PARAM_FLAG_GETREST | PARAM_FLAG_STRIP_TRAILING_WS,
"names", &optlist, &channel))
return;
if (g_strcmp0(channel, "*") == 0 || *channel == '\0') {
if (!IS_IRC_CHANNEL(item))
cmd_param_error(CMDERR_NOT_JOINED);
channel = IRC_CHANNEL(item)->name;
}
if (g_strcmp0(channel, "**") == 0) {
/* ** displays all nicks.. */
irc_send_cmd(server, "NAMES");
} else {
irc_send_cmdv(server, "NAMES %s", channel);
}
cmd_params_free(free_arg);
}
开发者ID:btamada,项目名称:irssi,代码行数:30,代码来源:irc-commands.c
注:本文中的cmd_params_free函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论