这篇教程C++ EMIT_SIGNAL函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中EMIT_SIGNAL函数的典型用法代码示例。如果您正苦于以下问题:C++ EMIT_SIGNAL函数的具体用法?C++ EMIT_SIGNAL怎么用?C++ EMIT_SIGNAL使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了EMIT_SIGNAL函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: inbound_open_dialogstatic session *inbound_open_dialog (server * serv, char *from){ session *sess; sess = new_ircwindow (serv, from, SESS_DIALOG, 0); /* for playing sounds */ EMIT_SIGNAL (XP_TE_OPENDIALOG, sess, NULL, NULL, NULL, NULL, 0); return sess;}
开发者ID:gchat,项目名称:gchat,代码行数:11,
示例2: inbound_ping_replyvoidinbound_ping_reply (session * sess, char *timestring, char *from){ unsigned long tim, nowtim, dif; int lag = 0; char outbuf[64]; if (strncmp (timestring, "LAG", 3) == 0) { timestring += 3; lag = 1; } tim = strtoul (timestring, NULL, 10); nowtim = make_ping_time (); dif = nowtim - tim; sess->server->ping_recv = time (0); if (lag) { sess->server->lag_sent = 0; sess->server->lag = dif / 1000; fe_set_lag (sess->server, dif / 100000); return; } if (atol (timestring) == 0) { if (sess->server->lag_sent) sess->server->lag_sent = 0; else EMIT_SIGNAL (XP_TE_PINGREP, sess, from, "?", NULL, NULL, 0); } else { snprintf (outbuf, sizeof (outbuf), "%ld.%ld%ld", dif / 1000000, (dif / 100000) % 10, dif % 10); EMIT_SIGNAL (XP_TE_PINGREP, sess, from, outbuf, NULL, NULL, 0); }}
开发者ID:arinity,项目名称:gchat,代码行数:41,
示例3: inbound_next_nickvoidinbound_next_nick (session *sess, char *nick){ sess->server->nickcount++; switch (sess->server->nickcount) { case 2: sess->server->p_change_nick (sess->server, prefs.nick2); EMIT_SIGNAL (XP_TE_NICKCLASH, sess, nick, prefs.nick2, NULL, NULL, 0); break; case 3: sess->server->p_change_nick (sess->server, prefs.nick3); EMIT_SIGNAL (XP_TE_NICKCLASH, sess, nick, prefs.nick3, NULL, NULL, 0); break; default: EMIT_SIGNAL (XP_TE_NICKFAIL, sess, NULL, NULL, NULL, NULL, 0); }}
开发者ID:BackupTheBerlios,项目名称:vertigo,代码行数:21,
示例4: inbound_topictimevoidinbound_topictime (server *serv, char *chan, char *nick, time_t stamp){ char *tim = ctime (&stamp); session *sess = find_channel (serv, chan); if (!sess) sess = serv->server_session; tim[24] = 0; /* get rid of the /n */ EMIT_SIGNAL (XP_TE_TOPICDATE, sess, chan, nick, tim, NULL, 0);}
开发者ID:ArchUser,项目名称:hexchat,代码行数:12,
示例5: inbound_sasl_authenticatevoidinbound_sasl_authenticate (server *serv, char *data){ ircnet *net = (ircnet*)serv->network; char *user, *pass = NULL; const char *mech = sasl_mechanisms[serv->sasl_mech]; /* Got a list of supported mechanisms from inspircd */ if (strchr (data, ',') != NULL) { inbound_sasl_supportedmechs (serv, data); return; } if (net->user && !(net->flags & FLAG_USE_GLOBAL)) user = net->user; else user = prefs.hex_irc_user_name; switch (serv->sasl_mech) { case MECH_PLAIN: pass = encode_sasl_pass_plain (user, serv->password); break;#ifdef USE_OPENSSL case MECH_BLOWFISH: pass = encode_sasl_pass_blowfish (user, serv->password, data); break; case MECH_AES: pass = encode_sasl_pass_aes (user, serv->password, data); break; case MECH_EXTERNAL: pass = g_strdup ("+"); break;#endif } if (pass == NULL) { /* something went wrong abort */ serv->sent_saslauth = TRUE; /* prevent trying PLAIN */ tcp_sendf (serv, "AUTHENTICATE */r/n"); return; } serv->sent_saslauth = TRUE; tcp_sendf (serv, "AUTHENTICATE %s/r/n", pass); g_free (pass); EMIT_SIGNAL (XP_TE_SASLAUTH, serv->server_session, user, (char*)mech);}
开发者ID:TheWug,项目名称:hexchat,代码行数:52,
示例6: do_dnsvoiddo_dns (session *sess, char *nick, char *host){ char *po; char tbuf[1024]; po = strrchr (host, '@'); if (po) host = po + 1; EMIT_SIGNAL (XP_TE_RESOLVINGUSER, sess, nick, host, NULL, NULL, 0); snprintf (tbuf, sizeof (tbuf), "exec -d %s %s", prefs.hex_dnsprogram, host); handle_command (sess, tbuf, FALSE);}
开发者ID:ArchUser,项目名称:hexchat,代码行数:13,
示例7: inbound_foundipvoidinbound_foundip (session *sess, char *ip){ struct hostent *HostAddr; HostAddr = gethostbyname (ip); if (HostAddr) { prefs.dcc_ip = ((struct in_addr *) HostAddr->h_addr)->s_addr; EMIT_SIGNAL (XP_TE_FOUNDIP, sess, inet_ntoa (*((struct in_addr *) HostAddr->h_addr)), NULL, NULL, NULL, 0); }}
开发者ID:ArchUser,项目名称:hexchat,代码行数:14,
示例8: inbound_topicvoidinbound_topic (server * serv, char *chan, char *topic_text){ session *sess = find_channel (serv, chan); if (sess) { set_topic (sess, topic_text, topic_text); } else sess = serv->server_session; EMIT_SIGNAL (XP_TE_TOPIC, sess, chan, topic_text, NULL, NULL, 0);}
开发者ID:gchat,项目名称:gchat,代码行数:14,
示例9: inbound_ujoinvoidinbound_ujoin (server *serv, char *chan, char *nick, char *ip){ session *sess; /* already joined? probably a bnc */ sess = find_channel (serv, chan); if (!sess) { /* see if a window is waiting to join this channel */ sess = find_session_from_waitchannel (chan, serv); if (!sess) { /* find a "<none>" tab and use that */ sess = find_unused_session (serv); if (!sess) /* last resort, open a new tab/window */ sess = new_ircwindow (serv, chan, SESS_CHANNEL); } } safe_strcpy (sess->channel, chan, CHANLEN); fe_set_channel (sess); fe_set_title (sess); fe_set_nonchannel (sess, TRUE); clear_user_list (sess); if (prefs.logging) log_open (sess); sess->waitchannel[0] = 0; sess->ignore_date = TRUE; sess->ignore_mode = TRUE; sess->ignore_names = TRUE; sess->end_of_names = FALSE; /* sends a MODE */ serv->p_join_info (sess->server, chan); EMIT_SIGNAL (XP_TE_UJOIN, sess, nick, chan, ip, NULL, 0); if (prefs.userhost) { /* sends WHO #channel */ serv->p_user_list (sess->server, chan); sess->doing_who = TRUE; }}
开发者ID:BackupTheBerlios,项目名称:vertigo,代码行数:49,
示例10: inbound_ukickvoidinbound_ukick (server *serv, char *chan, char *kicker, char *reason){ session *sess = find_channel (serv, chan); if (sess) { EMIT_SIGNAL (XP_TE_UKICK, sess, serv->nick, chan, kicker, reason, 0); clear_channel (sess); if (prefs.hex_irc_auto_rejoin) { serv->p_join (serv, chan, sess->channelkey); safe_strcpy (sess->waitchannel, chan, CHANLEN); } }}
开发者ID:ArchUser,项目名称:hexchat,代码行数:15,
示例11: inbound_topicnewvoidinbound_topicnew (server *serv, char *nick, char *chan, char *topic){ session *sess; char *stripped_topic; sess = find_channel (serv, chan); if (sess) { EMIT_SIGNAL (XP_TE_NEWTOPIC, sess, nick, topic, chan, NULL, 0); stripped_topic = strip_color (topic, -1, STRIP_ALL); set_topic (sess, topic, stripped_topic); g_free (stripped_topic); }}
开发者ID:ArchUser,项目名称:hexchat,代码行数:15,
示例12: inbound_away_notifyvoidinbound_away_notify (server *serv, char *nick, char *reason){ session *sess = NULL; GSList *list; list = sess_list; while (list) { sess = list->data; if (sess->server == serv) { userlist_set_away (sess, nick, reason ? TRUE : FALSE); if (sess == serv->front_session && notify_is_in_list (serv, nick)) { if (reason) EMIT_SIGNAL (XP_TE_NOTIFYAWAY, sess, nick, reason, NULL, NULL, 0); else EMIT_SIGNAL (XP_TE_NOTIFYBACK, sess, nick, NULL, NULL, NULL, 0); } } list = list->next; }}
开发者ID:Misdre,项目名称:hexchat,代码行数:24,
示例13: inbound_topicnewvoidinbound_topicnew (server *serv, char *nick, char *chan, char *topic){ session *sess; char *new_topic; sess = find_channel (serv, chan); if (sess) { new_topic = strip_color (topic); set_topic (sess, new_topic); free (new_topic); EMIT_SIGNAL (XP_TE_NEWTOPIC, sess, nick, topic, chan, NULL, 0); }}
开发者ID:BackupTheBerlios,项目名称:vertigo,代码行数:15,
示例14: inbound_topicvoidinbound_topic (server *serv, char *chan, char *topic_text){ session *sess = find_channel (serv, chan); char *new_topic; if (sess) { new_topic = strip_color (topic_text); set_topic (sess, new_topic); free (new_topic); } else sess = serv->server_session; EMIT_SIGNAL (XP_TE_TOPIC, sess, chan, topic_text, NULL, NULL, 0);}
开发者ID:BackupTheBerlios,项目名称:vertigo,代码行数:16,
示例15: notify_announce_offlinestatic voidnotify_announce_offline (server * serv, struct notify_per_server *servnot, char *nick, int quiet){ session *sess; sess = serv->front_session; servnot->ison = FALSE; servnot->lastoff = time (0); if (!quiet) EMIT_SIGNAL (XP_TE_NOTIFYOFFLINE, sess, nick, serv->servername, server_get_network (serv, TRUE), NULL, 0); fe_notify_update (nick); fe_notify_update (0);}
开发者ID:cremno,项目名称:hexchat,代码行数:16,
示例16: inbound_topicvoidinbound_topic (server *serv, char *chan, char *topic_text){ session *sess = find_channel (serv, chan); char *stripped_topic; if (sess) { stripped_topic = strip_color (topic_text, -1, STRIP_ALL); set_topic (sess, topic_text, stripped_topic); g_free (stripped_topic); } else sess = serv->server_session; EMIT_SIGNAL (XP_TE_TOPIC, sess, chan, topic_text, NULL, NULL, 0);}
开发者ID:ArchUser,项目名称:hexchat,代码行数:16,
示例17: inbound_topicvoidinbound_topic (server * serv, char *chan, char *topic_text){ session *sess = find_channel (serv, chan); if (sess) { if (!prefs.topic_color) set_topic(sess, topic_text, strip_color(topic_text, -1, STRIP_ALL)); else set_topic(sess, topic_text, topic_text); } else sess = serv->server_session; EMIT_SIGNAL (XP_TE_TOPIC, sess, chan, topic_text, NULL, NULL, 0);}
开发者ID:arinity,项目名称:gchat,代码行数:17,
示例18: inbound_banlistvoidinbound_banlist (session *sess, time_t stamp, char *chan, char *mask, char *banner){ char *time_str = ctime (&stamp); server *serv = sess->server; time_str[19] = 0; /* get rid of the /n */ if (stamp == 0) time_str = ""; sess = find_channel (serv, chan); if (!sess) sess = serv->front_session; if (!fe_is_banwindow (sess)) EMIT_SIGNAL (XP_TE_BANLIST, sess, chan, mask, banner, time_str, 0); else fe_add_ban_list (sess, mask, banner, time_str);}
开发者ID:BackupTheBerlios,项目名称:vertigo,代码行数:18,
示例19: lag_checkvoidlag_check (void){ server *serv; GSList *list = serv_list; unsigned long tim; char tbuf[128]; time_t now = time (0); time_t lag; tim = make_ping_time (); while (list) { serv = list->data; if (serv->connected && serv->end_of_motd) { lag = now - serv->ping_recv; if (prefs.hex_net_ping_timeout != 0 && lag > prefs.hex_net_ping_timeout && lag > 0) { sprintf (tbuf, "%" G_GINT64_FORMAT, (gint64) lag); EMIT_SIGNAL (XP_TE_PINGTIMEOUT, serv->server_session, tbuf, NULL, NULL, NULL, 0); if (prefs.hex_net_auto_reconnect) serv->auto_reconnect (serv, FALSE, -1); } else { g_snprintf (tbuf, sizeof (tbuf), "LAG%lu", tim); serv->p_ping (serv, "", tbuf); if (!serv->lag_sent) { serv->lag_sent = tim; fe_set_lag (serv, -1); } } } list = list->next; }}
开发者ID:rfmcpherson,项目名称:hexchat,代码行数:41,
示例20: dcc_abortstatic voiddcc_abort (struct DCC *dcc){ if (dcc) { switch (dcc->dccstat) { case STAT_QUEUED: case STAT_CONNECTING: case STAT_ACTIVE: dcc_close (dcc, STAT_ABORTED, FALSE); EMIT_SIGNAL (XP_TE_DCCABORT, dcc->serv->front_session, dcctypes[(int) dcc->type], file_part (dcc->file), dcc->nick, NULL, 0); break; default: dcc_close (dcc, 0, TRUE); } }}
开发者ID:UIKit0,项目名称:picogui,代码行数:21,
示例21: inbound_awayvoidinbound_away (server * serv, char *nick, char *msg){ struct away_msg *away = server_away_find_message (serv, nick); session *sess = NULL; GSList *list; if (away && !strcmp (msg, away->message)) /* Seen the msg before? */ { if (prefs.show_away_once && !serv->inside_whois) return; } else { server_away_save_message (serv, nick, msg); } if (prefs.irc_whois_front) sess = serv->front_session; else { if (!serv->inside_whois) sess = find_session_from_nick (nick, serv); if (!sess) sess = serv->server_session; } /* possibly hide the output */ if (!serv->inside_whois || !serv->skip_next_whois) EMIT_SIGNAL (XP_TE_WHOIS5, sess, nick, msg, NULL, NULL, 0); list = sess_list; while (list) { sess = list->data; if (sess->server == serv) userlist_set_away (sess, nick, TRUE); list = list->next; }}
开发者ID:arinity,项目名称:gchat,代码行数:40,
示例22: inbound_noticevoidinbound_notice (server *serv, char *to, char *nick, char *msg, char *ip, int id){ char *po,*ptr=to; session *sess = 0; int server_notice = FALSE; if (is_channel (serv, ptr)) sess = find_channel (serv, ptr); if (!sess && ptr[0] == '@') { ptr++; sess = find_channel (serv, ptr); } if (!sess && ptr[0] == '%') { ptr++; sess = find_channel (serv, ptr); } if (!sess && ptr[0] == '+') { ptr++; sess = find_channel (serv, ptr); } if (strcmp (nick, ip) == 0) server_notice = TRUE; if (!sess) { ptr = 0; if (prefs.hex_gui_tab_notices) { int stype = server_notice ? SESS_SNOTICES : SESS_NOTICES; sess = find_session_from_type (stype, serv); if (!sess) { if (stype == SESS_NOTICES) sess = new_ircwindow (serv, "(notices)", SESS_NOTICES, 0); else sess = new_ircwindow (serv, "(snotices)", SESS_SNOTICES, 0); fe_set_channel (sess); fe_set_title (sess); fe_set_nonchannel (sess, FALSE); userlist_clear (sess); log_open_or_close (sess); } /* Avoid redundancy with some Undernet notices */ if (!strncmp (msg, "*** Notice -- ", 14)) msg += 14; } else { /* paranoia check */ if (msg[0] == '[' && (!serv->have_idmsg || id)) { /* guess where chanserv meant to post this -sigh- */ if (!g_ascii_strcasecmp (nick, "ChanServ") && !find_dialog (serv, nick)) { char *dest = strdup (msg + 1); char *end = strchr (dest, ']'); if (end) { *end = 0; sess = find_channel (serv, dest); } free (dest); } } if (!sess) sess = find_session_from_nick (nick, serv); } if (!sess) { if (server_notice) sess = serv->server_session; else sess = serv->front_session; } } if (msg[0] == 1) { msg++; if (!strncmp (msg, "PING", 4)) { inbound_ping_reply (sess, msg + 5, nick); return; } } po = strchr (msg, '/001'); if (po) po[0] = 0; if (server_notice) EMIT_SIGNAL (XP_TE_SERVNOTICE, sess, msg, nick, NULL, NULL, 0); else if (ptr) EMIT_SIGNAL (XP_TE_CHANNOTICE, sess, nick, to, msg, NULL, 0);//.........这里部分代码省略.........
开发者ID:ArchUser,项目名称:hexchat,代码行数:101,
示例23: inbound_noticevoidinbound_notice (server * serv, char *to, char *nick, char *msg, char *ip, int id){ char *po, *ptr = to; session *sess = 0; int server_notice = FALSE; if (is_channel (serv, ptr)) sess = find_channel (serv, ptr); if (!sess && ptr[0] == '@') { ptr++; sess = find_channel (serv, ptr); } if (!sess && ptr[0] == '%') { ptr++; sess = find_channel (serv, ptr); } if (!sess && ptr[0] == '+') { ptr++; sess = find_channel (serv, ptr); } if (strcmp (nick, ip) == 0) server_notice = TRUE; if (!sess) { ptr = 0; /* paranoia check */ if (msg[0] == '[' && (!serv->have_idmsg || id)) { /* guess where a services bot meant to put this */ if (!find_dialog (serv, nick)) { char *dest = strdup (msg + 1); char *end = strchr (dest, ']'); if (end) { *end = 0; sess = find_channel (serv, dest); } free (dest); } } if (!sess) { if (server_notice) sess = serv->server_session; else sess = serv->front_session; } } if (msg[0] == 1) { msg++; if (!strncmp (msg, "PING", 4)) { inbound_ping_reply (sess, msg + 5, nick); return; } } po = strchr (msg, '/001'); if (po) po[0] = 0; if (server_notice) EMIT_SIGNAL (XP_TE_SERVNOTICE, sess, msg, nick, NULL, NULL, 0); else if (ptr) EMIT_SIGNAL (XP_TE_CHANNOTICE, sess, nick, to, msg, NULL, 0); else EMIT_SIGNAL (XP_TE_NOTICE, sess, nick, msg, NULL, NULL, 0);}
开发者ID:arinity,项目名称:gchat,代码行数:82,
示例24: inbound_actionvoidinbound_action (session *sess, char *chan, char *from, char *ip, char *text, int fromme, int id){ session *def = sess; server *serv = sess->server; struct User *user; char nickchar[2] = "/000"; char idtext[64]; int privaction = FALSE; if (!fromme) { if (is_channel (serv, chan)) { sess = find_channel (serv, chan); } else { /* it's a private action! */ privaction = TRUE; /* find a dialog tab for it */ sess = find_dialog (serv, from); /* if non found, open a new one */ if (!sess && prefs.hex_gui_autoopen_dialog) { /* but only if it wouldn't flood */ if (flood_check (from, ip, serv, current_sess, 1)) sess = inbound_open_dialog (serv, from); else sess = serv->server_session; } if (!sess) { sess = find_session_from_nick (from, serv); /* still not good? */ if (!sess) sess = serv->front_session; } } } if (!sess) sess = def; if (sess != current_tab) { if (fromme) { sess->msg_said = FALSE; sess->new_data = TRUE; } else { sess->msg_said = TRUE; sess->new_data = FALSE; } } user = userlist_find (sess, from); if (user) { nickchar[0] = user->prefix[0]; user->lasttalk = time (0); } inbound_make_idtext (serv, idtext, sizeof (idtext), id); if (!fromme && !privaction) { if (is_hilight (from, text, sess, serv)) { EMIT_SIGNAL (XP_TE_HCHANACTION, sess, from, text, nickchar, idtext, 0); return; } } if (fromme) EMIT_SIGNAL (XP_TE_UACTION, sess, from, text, nickchar, idtext, 0); else if (!privaction) EMIT_SIGNAL (XP_TE_CHANACTION, sess, from, text, nickchar, idtext, 0); else if (sess->type == SESS_DIALOG) EMIT_SIGNAL (XP_TE_DPRIVACTION, sess, from, text, idtext, NULL, 0); else EMIT_SIGNAL (XP_TE_PRIVACTION, sess, from, text, idtext, NULL, 0);}
开发者ID:ArchUser,项目名称:hexchat,代码行数:83,
示例25: handle_single_modestatic voidhandle_single_mode (mode_run *mr, char sign, char mode, char *nick, char *chan, char *arg, int quiet, int is_324){ session *sess; server *serv = mr->serv; char outbuf[4]; char *cm = serv->chanmodes; gboolean supportsq = FALSE; outbuf[0] = sign; outbuf[1] = 0; outbuf[2] = mode; outbuf[3] = 0; sess = find_channel (serv, chan); if (!sess || !is_channel (serv, chan)) { /* got modes for a chan we're not in! probably nickmode +isw etc */ sess = serv->front_session; goto genmode; } /* is this a nick mode? */ if (strchr (serv->nick_modes, mode)) { /* update the user in the userlist */ userlist_update_mode (sess, /*nickname */ arg, mode, sign); } else { if (!is_324 && !sess->ignore_mode && mode_chanmode_type(serv, mode) >= 1) record_chan_mode (sess, sign, mode, arg); } /* Is q a chanmode on this server? */ if (cm) while (*cm) { if (*cm == ',') break; if (*cm == 'q') supportsq = TRUE; cm++; } switch (sign) { case '+': switch (mode) { case 'k': safe_strcpy (sess->channelkey, arg, sizeof (sess->channelkey)); fe_update_channel_key (sess); fe_update_mode_buttons (sess, mode, sign); if (!quiet) EMIT_SIGNAL (XP_TE_CHANSETKEY, sess, nick, arg, NULL, NULL, 0); return; case 'l': sess->limit = atoi (arg); fe_update_channel_limit (sess); fe_update_mode_buttons (sess, mode, sign); if (!quiet) EMIT_SIGNAL (XP_TE_CHANSETLIMIT, sess, nick, arg, NULL, NULL, 0); return; case 'o': if (!quiet) mr->op = mode_cat (mr->op, arg); return; case 'h': if (!quiet) EMIT_SIGNAL (XP_TE_CHANHOP, sess, nick, arg, NULL, NULL, 0); return; case 'v': if (!quiet) mr->voice = mode_cat (mr->voice, arg); return; case 'b': if (!quiet) EMIT_SIGNAL (XP_TE_CHANBAN, sess, nick, arg, NULL, NULL, 0); return; case 'e': if (!quiet) EMIT_SIGNAL (XP_TE_CHANEXEMPT, sess, nick, arg, NULL, NULL, 0); return; case 'I': if (!quiet) EMIT_SIGNAL (XP_TE_CHANINVITE, sess, nick, arg, NULL, NULL, 0); return; case 'q': if (!supportsq) break; /* +q is owner on this server */ if (!quiet) EMIT_SIGNAL (XP_TE_CHANQUIET, sess, nick, arg, NULL, NULL, 0); return; } break; case '-': switch (mode) { case 'k'://.........这里部分代码省略.........
开发者ID:amalmurali47,项目名称:hexchat,代码行数:101,
示例26: process_named_msgstatic voidprocess_named_msg (session *sess, char *type, char *word[], char *word_eol[]){ server *serv = sess->server; char ip[128], nick[NICKLEN]; char *text, *ex; int len = strlen (type); /* fill in the "ip" and "nick" buffers */ ex = strchr (word[1], '!'); if (!ex) /* no '!', must be a server message */ { safe_strcpy (ip, word[1], sizeof (ip)); safe_strcpy (nick, word[1], sizeof (nick)); } else { safe_strcpy (ip, ex + 1, sizeof (ip)); ex[0] = 0; safe_strcpy (nick, word[1], sizeof (nick)); ex[0] = '!'; } if (len == 4) { guint32 t; t = WORDL((guint8)type[0], (guint8)type[1], (guint8)type[2], (guint8)type[3]); /* this should compile to a bunch of: CMP.L, JE ... nice & fast */ switch (t) { case WORDL('J','O','I','N'): { char *chan = word[3]; if (*chan == ':') chan++; if (!serv->p_cmp (nick, serv->nick)) inbound_ujoin (serv, chan, nick, ip); else inbound_join (serv, chan, nick, ip); } return; case WORDL('K','I','C','K'): { char *kicked = word[4]; char *reason = word_eol[5]; if (*kicked) { if (*reason == ':') reason++; if (!strcmp (kicked, serv->nick)) inbound_ukick (serv, word[3], nick, reason); else inbound_kick (serv, word[3], kicked, nick, reason); } } return; case WORDL('K','I','L','L'): EMIT_SIGNAL (XP_TE_KILL, sess, nick, word_eol[5], NULL, NULL, 0); return; case WORDL('M','O','D','E'): handle_mode (serv, word, word_eol, nick, FALSE); /* modes.c */ return; case WORDL('N','I','C','K'): inbound_newnick (serv, nick, (word_eol[3][0] == ':') ? word_eol[3] + 1 : word_eol[3], FALSE); return; case WORDL('P','A','R','T'): { char *chan = word[3]; char *reason = word_eol[4]; if (*chan == ':') chan++; if (*reason == ':') reason++; if (!strcmp (nick, serv->nick)) inbound_upart (serv, chan, ip, reason); else inbound_part (serv, chan, nick, ip, reason); } return; case WORDL('P','O','N','G'): inbound_ping_reply (serv->server_session, (word[4][0] == ':') ? word[4] + 1 : word[4], word[3]); return; case WORDL('Q','U','I','T'): inbound_quit (serv, nick, ip, (word_eol[3][0] == ':') ? word_eol[3] + 1 : word_eol[3]); return; } goto garbage;//.........这里部分代码省略.........
开发者ID:Elrina,项目名称:xchat,代码行数:101,
示例27: process_numeric//.........这里部分代码省略......... { char *eq = strchr (word[4], '='); if (eq) { *eq = 0; if (!serv->p_cmp (word[4] + 1, serv->nick)) { char *at = strrchr (eq + 1, '@'); if (at) inbound_foundip (sess, at + 1); } } serv->skip_next_userhost = FALSE; break; } else goto def; case 303: word[4]++; notify_markonline (serv, word); break; case 305: inbound_uback (serv); goto def; case 306: inbound_uaway (serv); goto def; case 312: if (!serv->skip_next_whois) EMIT_SIGNAL (XP_TE_WHOIS3, whois_sess, word[4], word_eol[5], NULL, NULL, 0); else inbound_user_info (sess, NULL, NULL, NULL, word[5], word[4], NULL, 0xff); break; case 311: /* WHOIS 1st line */ serv->inside_whois = 1; inbound_user_info_start (sess, word[4]); if (!serv->skip_next_whois) EMIT_SIGNAL (XP_TE_WHOIS1, whois_sess, word[4], word[5], word[6], word_eol[8] + 1, 0); else inbound_user_info (sess, NULL, word[5], word[6], NULL, word[4], word_eol[8][0] == ':' ? word_eol[8] + 1 : word_eol[8], 0xff); break; case 314: /* WHOWAS */ inbound_user_info_start (sess, word[4]); EMIT_SIGNAL (XP_TE_WHOIS1, whois_sess, word[4], word[5], word[6], word_eol[8] + 1, 0); break; case 317: if (!serv->skip_next_whois) { time_t timestamp = (time_t) atol (word[6]); long idle = atol (word[5]); char *tim; char outbuf[64]; snprintf (outbuf, sizeof (outbuf), "%02ld:%02ld:%02ld", idle / 3600, (idle / 60) % 60, idle % 60);
开发者ID:Elrina,项目名称:xchat,代码行数:67,
示例28: handle_ctcpvoidhandle_ctcp (struct session *sess, char *outbuf, char *to, char *nick, char *msg, char *word[], char *word_eol[]){ char *po; session *chansess; if (!strncasecmp (msg, "VERSION", 7) && !prefs.hidever) { sprintf (outbuf, "NOTICE %s :/001VERSION xchat "VERSION" %s (PicoGUI)/001/r/n", nick, get_cpu_str ()); tcp_send (sess->server, outbuf); } if (!ctcp_check (sess, outbuf, nick, word, word_eol, word[4] + 2)) { if (!strncasecmp (msg, "ACTION", 6)) { po = strchr (msg + 7, '/001'); if (po) po[0] = 0; channel_action (sess, outbuf, to, nick, msg + 7, FALSE); return; } if (!strncasecmp (msg, "DCC", 3)) { handle_dcc (sess, outbuf, nick, word, word_eol); return; } if (!strncasecmp (msg, "SOUND", 5)) { po = strchr (word[5], '/001'); if (po) po[0] = 0; EMIT_SIGNAL (XP_TE_CTCPSND, sess->server->front_session, word[5], nick, NULL, NULL, 0); sprintf (outbuf, "%s/%s", prefs.sounddir, word[5]); if (strchr (word[5], '/') == 0 && access (outbuf, R_OK) == 0) { sprintf (outbuf, "%s %s/%s", prefs.soundcmd, prefs.sounddir, word[5]); xchat_exec (outbuf); } return; } } po = strchr (msg, '/001'); if (po) po[0] = 0; if (!is_channel (sess->server, to)) { EMIT_SIGNAL (XP_TE_CTCPGEN, sess->server->front_session, msg, nick, NULL, NULL, 0); } else { chansess = find_session_from_channel (to, sess->server); if (chansess) { EMIT_SIGNAL (XP_TE_CTCPGENC, chansess, msg, nick, to, NULL, 0); return; } EMIT_SIGNAL (XP_TE_CTCPGENC, sess->server->front_session, msg, nick, to, NULL, 0); }}
开发者ID:UIKit0,项目名称:picogui,代码行数:66,
示例29: handle_modevoidhandle_mode (server * serv, char *word[], char *word_eol[], char *nick, int numeric_324){ session *sess; char *chan; char *modes; char *argstr; char sign; int len; int arg; int i, num_args; int num_modes; int offset = 3; int all_modes_have_args = FALSE; int using_front_tab = FALSE; mode_run mr; mr.serv = serv; mr.op = mr.deop = mr.voice = mr.devoice = NULL; /* numeric 324 has everything 1 word later (as opposed to MODE) */ if (numeric_324) offset++; chan = word[offset]; modes = word[offset + 1]; if (*modes == ':') modes++; if (*modes == 0) return; /* beyondirc's blank modes */ sess = find_channel (serv, chan); if (!sess) { sess = serv->front_session; using_front_tab = TRUE; } /* remove trailing space */ len = strlen (word_eol[offset]) - 1; if (word_eol[offset][len] == ' ') word_eol[offset][len] = 0; if (prefs.hex_irc_raw_modes && !numeric_324) EMIT_SIGNAL (XP_TE_RAWMODES, sess, nick, word_eol[offset], 0, 0, 0); if (numeric_324 && !using_front_tab) { if (sess->current_modes) free (sess->current_modes); sess->current_modes = strdup (word_eol[offset+1]); } sign = *modes; modes++; arg = 1; /* count the number of arguments (e.g. after the -o+v) */ num_args = 0; i = 1; while ((i + offset + 1) < PDIWORDS) { i++; if (!(*word[i + offset])) break; num_args++; } /* count the number of modes (without the -/+ chars */ num_modes = 0; i = 0; while (i < strlen (modes)) { if (modes[i] != '+' && modes[i] != '-') num_modes++; i++; } if (num_args == num_modes) all_modes_have_args = TRUE; while (*modes) { switch (*modes) { case '-': case '+': /* print all the grouped Op/Deops */ mode_print_grouped (sess, nick, &mr); sign = *modes; break; default: argstr = ""; if ((all_modes_have_args || mode_has_arg (serv, sign, *modes)) && arg < (num_args+1)) { arg++; argstr = word[arg + offset]; } handle_single_mode (&mr, sign, *modes, nick, chan,//.........这里部分代码省略.........
开发者ID:amalmurali47,项目名称:hexchat,代码行数:101,
示例30: ctcp_handlevoidctcp_handle (session *sess, char *to, char *nick, char *msg, char *word[], char *word_eol[], int id){ char *po; session *chansess; server *serv = sess->server; char outbuf[1024]; /* consider DCC to be different from other CTCPs */ if (!strncasecmp (msg, "DCC", 3)) { /* but still let CTCP replies override it */ if (!ctcp_check (sess, nick, word, word_eol, word[4] + 2)) { if (!ignore_check (word[1], IG_DCC)) handle_dcc (sess, nick, word, word_eol); } return; } /* consider ACTION to be different from other CTCPs. Check ignore as if it was a PRIV/CHAN. */ if (!strncasecmp (msg, "ACTION ", 7)) { if (is_channel (serv, to)) { /* treat a channel action as a CHAN */ if (ignore_check (word[1], IG_CHAN)) return; } else { /* treat a private action as a PRIV */ if (ignore_check (word[1], IG_PRIV)) return; } /* but still let CTCP replies override it */ if (ctcp_check (sess, nick, word, word_eol, word[4] + 2)) goto generic; inbound_action (sess, to, nick, msg + 7, FALSE, id); return; } if (ignore_check (word[1], IG_CTCP)) return; if (!strcasecmp (msg, "VERSION") && !prefs.hidever) {#ifdef FE_AQUA snprintf (outbuf, sizeof (outbuf), "VERSION X-Chat Aqua %s (xchat "PACKAGE_VERSION") %s", prefs.xchat_aqua_version, get_cpu_str ());#else snprintf (outbuf, sizeof (outbuf), "VERSION xchat "PACKAGE_VERSION" %s", get_cpu_str ());#endif serv->p_nctcp (serv, nick, outbuf); } if (!ctcp_check (sess, nick, word, word_eol, word[4] + 2)) { if (!strncasecmp (msg, "SOUND", 5)) { po = strchr (word[5], '/001'); if (po) po[0] = 0; if (is_channel (sess->server, to)) { chansess = find_channel (sess->server, to); if (!chansess) chansess = sess; EMIT_SIGNAL (XP_TE_CTCPSNDC, chansess, word[5], nick, to, NULL, 0); } else { EMIT_SIGNAL (XP_TE_CTCPSND, sess->server->front_session, word[5], nick, NULL, NULL, 0); } /* don't let IRCers specify path */#ifdef WIN32 if (strchr (word[5], '/') == NULL && strchr (word[5], '//') == NULL)#else if (strchr (word[5], '/') == NULL)#endif sound_play (word[5], TRUE); return; } }generic: po = strchr (msg, '/001'); if (po) po[0] = 0; if (!is_channel (sess->server, to)) {//.........这里部分代码省略.........
开发者ID:Kyuuketsuki,项目名称:xchat-aqua,代码行数:101,
注:本文中的EMIT_SIGNAL函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ EMIT_SOUND函数代码示例 C++ EMIT函数代码示例 |