这篇教程C++ userlist_find函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中userlist_find函数的典型用法代码示例。如果您正苦于以下问题:C++ userlist_find函数的具体用法?C++ userlist_find怎么用?C++ userlist_find使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了userlist_find函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: find_session_from_nickstatic session *find_session_from_nick (char *nick, server *serv){ session *sess; GSList *list = sess_list; sess = find_dialog (serv, nick); if (sess) return sess; if (serv->front_session) { if (userlist_find (serv->front_session, nick)) return serv->front_session; } if (current_sess && current_sess->server == serv) { if (userlist_find (current_sess, nick)) return current_sess; } while (list) { sess = list->data; if (sess->server == serv) { if (userlist_find (sess, nick)) return sess; } list = list->next; } return 0;}
开发者ID:ArchUser,项目名称:hexchat,代码行数:34,
示例2: nick_command_parsevoidnick_command_parse (session *sess, char *cmd, char *nick, char *allnick){ char *buf; char *host = _("Host unknown"); struct User *user; int len;/* if (sess->type == SESS_DIALOG) { buf = (char *)(GTK_ENTRY (sess->gui->topic_entry)->text); buf = strrchr (buf, '@'); if (buf) host = buf + 1; } else*/ { user = userlist_find (sess, nick); if (user && user->hostname) host = strchr (user->hostname, '@') + 1; } /* this can't overflow, since popup->cmd is only 256 */ len = strlen (cmd) + strlen (nick) + strlen (allnick) + 512; buf = malloc (len); auto_insert (buf, len, cmd, 0, 0, allnick, sess->channel, "", server_get_network (sess->server, TRUE), host, sess->server->nick, nick); nick_command (sess, buf); free (buf);}
开发者ID:arinity,项目名称:gchat2,代码行数:33,
示例3: match_nickstatic gbooleanmatch_nick (const char *word, int *start, int *end){ const server *serv = current_sess->server; const char *nick_prefixes = serv ? serv->nick_prefixes : NICKPRE; char *str; if (!regex_match (re_nick (), word, start, end)) return FALSE; /* ignore matches with prefixes that the server doesn't use */ if (strchr (NICKPRE, word[*start]) && !strchr (nick_prefixes, word[*start])) return FALSE; /* nick prefix is not part of the matched word */ if (strchr (nick_prefixes, word[*start])) (*start)++; str = g_strndup (&word[*start], *end - *start); if (!userlist_find (current_sess, str)) { g_free (str); return FALSE; } g_free (str); return TRUE;}
开发者ID:Farow,项目名称:hexchat,代码行数:31,
示例4: userlist_add_hostnameintuserlist_add_hostname (struct session *sess, char *nick, char *hostname, char *realname, char *servername, char *account, unsigned int away){ struct User *user; user = userlist_find (sess, nick); if (user) { if (!user->hostname && hostname) user->hostname = strdup (hostname); if (!user->realname && realname) user->realname = strdup (realname); if (!user->servername && servername) user->servername = strdup (servername); if (!user->account && account && strcmp (account, "0") != 0) user->account = strdup (account); if (away != 0xff) { if (prefs.hex_gui_ulist_show_hosts || user->away != away) { user->away = away; fe_userlist_rehash (sess, user); } user->away = away; } fe_userlist_update (sess, user); return 1; } return 0;}
开发者ID:EntropyNet,项目名称:hexchat,代码行数:34,
示例5: userlist_add_hostnameintuserlist_add_hostname (struct session *sess, char *nick, char *hostname, char *realname, char *servername, unsigned int away){ struct User *user; user = userlist_find (sess, nick); if (user) { if (!user->hostname && hostname) user->hostname = strdup (hostname); if (!user->realname && realname) user->realname = strdup (realname); if (!user->servername && servername) user->servername = strdup (servername); if (away != 0xff) { if (prefs.showhostname_in_userlist || user->away != away) { user->away = away; fe_userlist_rehash (sess, user); } user->away = away; } fe_userlist_update (sess, user); return 1; } return 0;}
开发者ID:autoscatto,项目名称:xchat.js,代码行数:32,
示例6: ignore_signal_ctcp_inboundvoidignore_signal_ctcp_inbound(gpointer *params){ session *sess = params[0]; gchar *nick = params[2]; gchar *to = params[3]; struct User *user = userlist_find(sess, nick); gchar *hostmask; if (user != NULL) { hostmask = g_strjoin("!", user->nick, user->hostname, NULL); if (!is_channel(sess->server, to)) { if (ignore_check(hostmask, IGNORE_PRIVATE | IGNORE_CTCP)) signal_stop_current(); } else { if (ignore_check(hostmask, IGNORE_PUBLIC | IGNORE_CTCP)) signal_stop_current(); } g_free(hostmask); }}
开发者ID:TingPing,项目名称:conspire,代码行数:26,
示例7: userlist_removeintuserlist_remove (struct session *sess, char *name){ struct User *user; int pos; user = userlist_find (sess, name); if (!user) return FALSE; if (user->voice) sess->voices--; if (user->op) sess->ops--; if (user->hop) sess->hops--; sess->total--; fe_userlist_numbers (sess); fe_userlist_remove (sess, user); if (user == sess->me) sess->me = NULL; tree_remove (sess->usertree, user, &pos); tree_remove (sess->usertree_alpha, user, &pos); free_user (user, NULL); return TRUE;}
开发者ID:autoscatto,项目名称:xchat.js,代码行数:29,
示例8: inbound_quitvoidinbound_quit (server *serv, char *nick, char *ip, char *reason){ GSList *list = sess_list; session *sess; struct User *user; int was_on_front_session = FALSE; while (list) { sess = (session *) list->data; if (sess->server == serv) { if (sess == current_sess) was_on_front_session = TRUE; if ((user = userlist_find (sess, nick))) { EMIT_SIGNAL (XP_TE_QUIT, sess, nick, reason, ip, NULL, 0); userlist_remove_user (sess, user); } else if (sess->type == SESS_DIALOG && !serv->p_cmp (sess->channel, nick)) { EMIT_SIGNAL (XP_TE_QUIT, sess, nick, reason, ip, NULL, 0); } } list = list->next; } notify_set_offline (serv, nick, was_on_front_session);}
开发者ID:ArchUser,项目名称:hexchat,代码行数:29,
示例9: url_check_wordinturl_check_word (const char *word){ laststart = lastend = lasttype = 0; if (do_an_re (word, &laststart, &lastend, &lasttype)) { switch (lasttype) { char *str; case WORD_NICK: if (strchrs (word[laststart], NICKPRE)) laststart++; str = g_strndup (&word[laststart], lastend - laststart); if (!userlist_find (current_sess, str)) lasttype = 0; g_free (str); return lasttype; case WORD_EMAIL: if (!isalnum (word[laststart])) laststart++; /* Fall through */ case WORD_URL: case WORD_HOST: case WORD_HOST6: case WORD_CHANNEL: case WORD_PATH: return lasttype; default: return 0; /* Should not occur */ } } else return 0;}
开发者ID:N3X15,项目名称:hexchat,代码行数:35,
示例10: inbound_chanmsgvoidinbound_chanmsg (server *serv, session *sess, char *chan, char *from, char *text, char fromme, int id){ struct User *user; int hilight = FALSE; char nickchar[2] = "/000"; char idtext[64]; if (!sess) { if (chan) { sess = find_channel (serv, chan); if (!sess && !is_channel (serv, chan)) sess = find_dialog (serv, chan); } else { sess = find_dialog (serv, from); } if (!sess) return; } if (sess != current_tab) { sess->msg_said = TRUE; sess->new_data = FALSE; lastact_update (sess); } user = userlist_find (sess, from); if (user) { if (user->account) id = TRUE; nickchar[0] = user->prefix[0]; user->lasttalk = time (0); } if (fromme) { if (prefs.hex_away_auto_unmark && serv->is_away) sess->server->p_set_back (sess->server); EMIT_SIGNAL (XP_TE_UCHANMSG, sess, from, text, nickchar, NULL, 0); return; } inbound_make_idtext (serv, idtext, sizeof (idtext), id); if (is_hilight (from, text, sess, serv)) hilight = TRUE; if (sess->type == SESS_DIALOG) EMIT_SIGNAL (XP_TE_DPRIVMSG, sess, from, text, idtext, NULL, 0); else if (hilight) EMIT_SIGNAL (XP_TE_HCHANMSG, sess, from, text, nickchar, idtext, 0); else EMIT_SIGNAL (XP_TE_CHANMSG, sess, from, text, nickchar, idtext, 0);}
开发者ID:Misdre,项目名称:hexchat,代码行数:59,
示例11: userlist_removebooluserlist_remove (struct session *sess, const char name[]){ auto user = userlist_find (sess, name); if (!user) return false; userlist_remove_user (sess, user); return true;}
开发者ID:sehe,项目名称:hexchat,代码行数:10,
示例12: menu_nickmenuvoid menu_nickmenu(window_t *sess, GdkEventButton * event, char *nick, int num_sel) { char buf[512]; GtkWidget *menu = gtk_menu_new(); userlist_t *user; if (str_copy) free(str_copy); str_copy = xstrdup(nick); submenu_list = NULL; /* first time through, might not be 0 */ /* [XXX, how does this work? memleak? */ /* more than 1 nick selected? */ if (num_sel > 1) { snprintf(buf, sizeof(buf), "%d nicks selected.", num_sel); menu_quick_item(0, buf, menu, 0, 0, 0); menu_quick_item(0, 0, menu, XCMENU_SHADED, 0, 0); } else { user = userlist_find(sess->session, nick); /* XXX, * jesli nadal nie ma uzytkownika, to szukaj go w konferencjach */ if (user) { GtkWidget *submenu = menu_quick_sub(nick, menu, NULL, XCMENU_DOLIST, -1); char *fmt = "<tt><b>%-11s</b></tt> %s"; /* XXX, gettext? (let the translators tweak this if need be) */ char *real; /* UID */ real = g_markup_escape_text(user->uid, -1); snprintf(buf, sizeof(buf), fmt, "UID:", real); g_free(real); menu_quick_item(0, buf, submenu, XCMENU_MARKUP, 0, 0); /* <separator> ? */ /* XXX, get more data using USERLIST_PRIVHANDLE (?) */ /* the same like above */ menu_quick_endsub(); menu_quick_item(0, 0, menu, XCMENU_SHADED, 0, 0); } }#if 0 if (num_sel > 1) menu_create(menu, popup_list, NULL, FALSE); else menu_create(menu, popup_list, str_copy, FALSE); if (num_sel == 0) /* xtext click */ menu_add_plugin_items(menu, "/x5$NICK", str_copy); else /* userlist treeview click */ menu_add_plugin_items(menu, "/x5$NICK", NULL);#endif menu_popup(menu, event, NULL);}
开发者ID:dmilith,项目名称:ekg2-bsd,代码行数:55,
示例13: inbound_privmsgvoidinbound_privmsg (server *serv, char *from, char *ip, char *text, int id, const message_tags_data *tags_data){ session *sess; struct User *user; char idtext[64]; gboolean nodiag = FALSE; sess = find_dialog (serv, from); if (sess || prefs.hex_gui_autoopen_dialog) { /*0=ctcp 1=priv will set hex_gui_autoopen_dialog=0 here is flud detected */ if (!sess) { if (flood_check (from, ip, serv, current_sess, 1)) /* Create a dialog session */ sess = inbound_open_dialog (serv, from, tags_data); else sess = serv->server_session; if (!sess) return; /* ?? */ } if (ip && ip[0]) set_topic (sess, ip, ip); inbound_chanmsg (serv, NULL, NULL, from, text, FALSE, id, tags_data); return; } sess = find_session_from_nick (from, serv); if (!sess) { sess = serv->front_session; nodiag = TRUE; /* We don't want it to look like a normal message in front sess */ } user = userlist_find (sess, from); if (user) { user->lasttalk = time (0); if (user->account) id = TRUE; } inbound_make_idtext (serv, idtext, sizeof (idtext), id); if (sess->type == SESS_DIALOG && !nodiag) EMIT_SIGNAL_TIMESTAMP (XP_TE_DPRIVMSG, sess, from, text, idtext, NULL, 0, tags_data->timestamp); else EMIT_SIGNAL_TIMESTAMP (XP_TE_PRIVMSG, sess, from, text, idtext, NULL, 0, tags_data->timestamp);}
开发者ID:YelizavetaAr,项目名称:hexchat,代码行数:55,
示例14: userlist_update_modevoiduserlist_update_mode (session * sess, char *name, char mode, char sign){ int access; int offset = 0; int level; int pos; char prefix; struct User *user; user = userlist_find (sess, name); if (!user) return; /* remove from binary trees, before we loose track of it */ tree_remove (sess->usertree, user, &pos); tree_remove (sess->usertree_alpha, user, &pos); /* which bit number is affected? */ access = mode_access (sess->server, mode, &prefix); if (sign == '+') { level = TRUE; if (!(user->access & (1 << access))) { offset = 1; user->access |= (1 << access); } } else { level = FALSE; if (user->access & (1 << access)) { offset = -1; user->access &= ~(1 << access); } } /* now what is this users highest prefix? e.g. @ for ops */ user->prefix[0] = get_nick_prefix (sess->server, user->access); /* update the various counts using the CHANGED prefix only */ update_counts (sess, user, prefix, level, offset); /* insert it back into its new place */ tree_insert (sess->usertree_alpha, user); pos = tree_insert (sess->usertree, user); /* let GTK move it too */ fe_userlist_move (sess, user, pos); fe_userlist_numbers (sess);}
开发者ID:arinity,项目名称:gchat,代码行数:54,
示例15: userlist_removeintuserlist_remove (struct session *sess, char *name){ struct User *user; user = userlist_find (sess, name); if (!user) return FALSE; userlist_remove_user (sess, user); return TRUE;}
开发者ID:EntropyNet,项目名称:hexchat,代码行数:12,
示例16: userlist_set_accountvoiduserlist_set_account (struct session *sess, const char nick[], const char account[]){ auto user = userlist_find (sess, nick); if (user) { if (strcmp (account, "*") == 0) user->account = boost::none; else user->account = std::string(account); /* gui doesnt currently reflect login status, maybe later fe_userlist_rehash (sess, user); */ }}
开发者ID:sehe,项目名称:hexchat,代码行数:15,
示例17: userlist_set_awayvoiduserlist_set_away (struct session *sess, const char nick[], bool away){ auto user = userlist_find (sess, nick); if (user) { if (user->away != away) { user->away = away; /* rehash GUI */ fe_userlist_rehash (sess, user); if (away) fe_userlist_update (sess, user); } }}
开发者ID:sehe,项目名称:hexchat,代码行数:16,
示例18: userlist_find_globalstruct User *userlist_find_global (struct server *serv, const std::string & name){ GSList *list = sess_list; while (list) { session *sess = static_cast<session *>(list->data); if (sess->server == serv) { auto user = userlist_find(sess, name); if (user) return user; } list = list->next; } return nullptr;}
开发者ID:sehe,项目名称:hexchat,代码行数:17,
示例19: ignore_signal_action_publicvoidignore_signal_action_public(gpointer *params){ session *sess = params[0]; gchar *from = params[1]; struct User *user = userlist_find(sess, from); gchar *hostmask; if (user != NULL) { hostmask = g_strjoin("!", user->nick, user->hostname, NULL); if (ignore_check(hostmask, IGNORE_PUBLIC | IGNORE_ACTION)) signal_stop_current(); g_free(hostmask); }}
开发者ID:TingPing,项目名称:conspire,代码行数:18,
示例20: ignore_signal_query_quitvoidignore_signal_query_quit(gpointer *params){ session *sess = params[0]; gchar *nick = params[1]; struct User *user = userlist_find(sess, nick); gchar *hostmask; if (user != NULL) { hostmask = g_strjoin("!", user->nick, user->hostname, NULL); if (ignore_check(hostmask, IGNORE_PRIVATE | IGNORE_QUITS)) signal_stop_current(); g_free(hostmask); }}
开发者ID:TingPing,项目名称:conspire,代码行数:18,
示例21: ignore_signal_channel_modes_rawvoidignore_signal_channel_modes_raw(gpointer *params){ session *sess = params[0]; gchar *nick = params[1]; struct User *user = userlist_find(sess, nick); gchar *hostmask; if (user != NULL) { hostmask = g_strjoin("!", user->nick, user->hostname, NULL); if (ignore_check(hostmask, IGNORE_MODES)) signal_stop_current(); g_free(hostmask); }}
开发者ID:TingPing,项目名称:conspire,代码行数:18,
示例22: userlist_set_awayvoiduserlist_set_away (struct session *sess, char *nick, unsigned int away){ struct User *user; user = userlist_find (sess, nick); if (user) { if (user->away != away) { user->away = away; /* rehash GUI */ fe_userlist_rehash (sess, user); if (away) fe_userlist_update (sess, user); } }}
开发者ID:EntropyNet,项目名称:hexchat,代码行数:18,
示例23: userlist_find_globalstruct User *userlist_find_global (struct server *serv, char *name){ struct User *user; session *sess; GSList *list = sess_list; while (list) { sess = (session *) list->data; if (sess->server == serv) { user = userlist_find (sess, name); if (user) return user; } list = list->next; } return 0;}
开发者ID:EntropyNet,项目名称:hexchat,代码行数:19,
示例24: userlist_set_accountvoiduserlist_set_account (struct session *sess, char *nick, char *account){ struct User *user; user = userlist_find (sess, nick); if (user) { g_free (user->account); if (strcmp (account, "*") == 0) user->account = NULL; else user->account = g_strdup (account); /* gui doesnt currently reflect login status, maybe later fe_userlist_rehash (sess, user); */ }}
开发者ID:Groil,项目名称:hexchat,代码行数:19,
示例25: ignore_signal_nick_changedvoidignore_signal_nick_changed(gpointer *params){ session *sess = params[0]; gchar *nick = params[1]; /* XXX - implement nick-following? -- Aerdan */ /*gchar *newnick = params[2];*/ struct User *user = userlist_find(sess, nick); gchar *hostmask; if (user != NULL) { hostmask = g_strjoin("!", user->nick, user->hostname, NULL); if (ignore_check(hostmask, IGNORE_NICKS)) signal_stop_current(); g_free(hostmask); }}
开发者ID:TingPing,项目名称:conspire,代码行数:20,
示例26: userlist_changeintuserlist_change (struct session *sess, char *oldname, char *newname){ struct User *user = userlist_find (sess, oldname); int pos; if (user) { tree_remove (sess->usertree, user, &pos); fe_userlist_remove (sess, user); safe_strcpy (user->nick, newname, NICKLEN); tree_insert (sess->usertree, user); fe_userlist_insert (sess, user, FALSE); return 1; } return 0;}
开发者ID:Groil,项目名称:hexchat,代码行数:21,
示例27: ignore_signal_action_private_hilightvoidignore_signal_action_private_hilight(gpointer *params){ session *sess = params[0]; gchar *nick = params[1]; gchar *text = params[2]; gchar *nickchar = params[3]; struct User *user = userlist_find(sess, nick); gchar *hostmask; if (user != NULL) { hostmask = g_strjoin("!", user->nick, user->hostname, NULL); if (ignore_check(hostmask, IGNORE_HILIGHT)) { signal_stop_current(); signal_emit("action private", 5, sess, nick, text, nickchar); } g_free(hostmask); }}
开发者ID:TingPing,项目名称:conspire,代码行数:22,
示例28: ignore_signal_message_public_hilightvoidignore_signal_message_public_hilight(gpointer *params){ session *sess = params[0]; gchar *nick = params[1]; gchar *message = params[2]; gchar *nickchar = params[3]; gchar *idtext = params[4]; struct User *user = userlist_find(sess, nick); gchar *hostmask; if (user != NULL) { hostmask = g_strjoin("!", user->nick, user->hostname, NULL); if (ignore_check(hostmask, IGNORE_HILIGHT)) { signal_stop_current(); signal_emit("message public", 5, sess, nick, message, nickchar, idtext); } g_free(hostmask); }}
开发者ID:TingPing,项目名称:conspire,代码行数:23,
示例29: userlist_add_hostnamebooluserlist_add_hostname (struct session *sess, const char nick[], const char hostname[], const char realname[], const char servername[], const char account[], unsigned int away){ auto user = userlist_find (sess, nick); if (user) { bool do_rehash = false; if (!user->hostname && hostname) { if (prefs.hex_gui_ulist_show_hosts) do_rehash = true; user->hostname = hostname; } if (!user->realname && realname && *realname) user->realname = std::string(realname); if (!user->servername && servername) user->servername = std::string(servername); if (!user->account && account && strcmp (account, "0") != 0) user->account = std::string(account); if (away != 0xff) { bool actually_away = !!away; if (user->away != actually_away) do_rehash = true; user->away = actually_away; } fe_userlist_update (sess, user); if (do_rehash) fe_userlist_rehash (sess, user); return true; } return false;}
开发者ID:sehe,项目名称:hexchat,代码行数:36,
示例30: 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,
注:本文中的userlist_find函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ userp函数代码示例 C++ userfunc函数代码示例 |