struct t_gui_buffer * irc_msgbuffer_get_target_buffer (struct t_irc_server *server, const char *nick, const char *message, const char *alias, struct t_gui_buffer *default_buffer) { struct t_config_option *ptr_option; int target; struct t_gui_buffer *ptr_buffer; struct t_irc_channel *ptr_channel; struct t_weechat_plugin *buffer_plugin; ptr_option = NULL; if (message && message[0]) ptr_option = irc_msgbuffer_get_option (server, message); if (!ptr_option && alias && alias[0]) ptr_option = irc_msgbuffer_get_option (server, alias); if (!ptr_option) { if (default_buffer) return default_buffer; return (server) ? server->buffer : NULL; } target = weechat_config_integer (ptr_option); switch (target) { case IRC_MSGBUFFER_TARGET_WEECHAT: return NULL; break; case IRC_MSGBUFFER_TARGET_SERVER: return (server) ? server->buffer : NULL; break; case IRC_MSGBUFFER_TARGET_CURRENT: break; case IRC_MSGBUFFER_TARGET_PRIVATE: ptr_channel = irc_channel_search (server, nick); if (ptr_channel) return ptr_channel->buffer; if (weechat_config_integer (irc_config_look_msgbuffer_fallback) == IRC_CONFIG_LOOK_MSGBUFFER_FALLBACK_SERVER) { return (server) ? server->buffer : NULL; } break; default: return (server) ? server->buffer : NULL; break; } ptr_buffer = weechat_current_buffer (); buffer_plugin = weechat_buffer_get_pointer (ptr_buffer, "plugin"); if (buffer_plugin == weechat_irc_plugin) return ptr_buffer; return (server) ? server->buffer : NULL; }
char * irc_bar_item_buffer_plugin (void *data, struct t_gui_bar_item *item, struct t_gui_window *window, struct t_gui_buffer *buffer, struct t_hashtable *extra_info) { char buf[512]; struct t_weechat_plugin *ptr_plugin; const char *name; struct t_irc_server *server; struct t_irc_channel *channel; /* make C compiler happy */ (void) data; (void) item; (void) window; (void) extra_info; if (!buffer) return NULL; ptr_plugin = weechat_buffer_get_pointer (buffer, "plugin"); name = weechat_plugin_get_name (ptr_plugin); if (ptr_plugin == weechat_irc_plugin) { irc_buffer_get_server_and_channel (buffer, &server, &channel); if (server && channel && (weechat_config_integer (irc_config_look_item_display_server) == IRC_CONFIG_LOOK_ITEM_DISPLAY_SERVER_PLUGIN)) { snprintf (buf, sizeof (buf), "%s%s/%s%s", name, IRC_COLOR_BAR_DELIM, IRC_COLOR_BAR_FG, server->name); } else { snprintf (buf, sizeof (buf), "%s", name); } } else { snprintf (buf, sizeof (buf), "%s", name); } return strdup (buf); }