Fri, 29 Dec 2017 03:57:44 +0000
Merged in rw_grim/pidgin (pull request #297)
Moved PurpleProtocolXfer to xfer.[ch], started a testing ui
Approved-by: Eion Robb <eionrobb@gmail.com>
| finch/gntblist.c | file | annotate | diff | comparison | revisions |
--- a/doc/reference/libpurple/libpurple-docs.xml Thu Dec 28 21:28:09 2017 -0600 +++ b/doc/reference/libpurple/libpurple-docs.xml Fri Dec 29 03:57:44 2017 +0000 @@ -58,6 +58,7 @@ <xi:include href="xml/nat-pmp.xml" /> <xi:include href="xml/network.xml" /> <xi:include href="xml/notify.xml" /> + <xi:include href="xml/options.xml" /> <xi:include href="xml/plugins.xml" /> <xi:include href="xml/prefs.xml" /> <xi:include href="xml/pluginpref.xml" />
--- a/finch/gntblist.c Thu Dec 28 21:28:09 2017 -0600 +++ b/finch/gntblist.c Fri Dec 29 03:57:44 2017 +0000 @@ -127,10 +127,6 @@ static void add_chat(PurpleChat *chat, FinchBlist *ggblist); static void add_node(PurpleBlistNode *node, FinchBlist *ggblist); static void node_update(PurpleBuddyList *list, PurpleBlistNode *node); -#if 0 -static gboolean is_contact_online(PurpleContact *contact); -static gboolean is_group_online(PurpleGroup *group); -#endif static void draw_tooltip(FinchBlist *ggblist); static void tooltip_for_buddy(PurpleBuddy *buddy, GString *str, gboolean full); static gboolean remove_typing_cb(gpointer null); @@ -385,27 +381,6 @@ fnode = purple_blist_node_get_ui_data(node); if (fnode && fnode->signed_timer) flag |= GNT_TEXT_FLAG_BLINK; - } else if (PURPLE_IS_GROUP(node)) { - /* If the node is collapsed, then check to see if any of the priority buddies of - * any of the contacts within this group recently signed on/off, and set the blink - * flag appropriately. */ - /* XXX: Refs #5444 */ - /* XXX: there's no way I can ask if the node is expanded or not? *sigh* - * API addition would be necessary */ -#if 0 - if (!gnt_tree_get_expanded(GNT_TREE(ggblist->tree), node)) { - for (node = purple_blist_node_get_first_child(node); node; - node = purple_blist_node_get_sibling_next(node)) { - PurpleBlistNode *pnode; - pnode = purple_contact_get_priority_buddy((PurpleContact*)node); - fnode = purple_blist_node_get_ui_data(node); - if (fnode && fnode->signed_timer) { - flag |= GNT_TEXT_FLAG_BLINK; - break; - } - } - } -#endif } return flag; @@ -418,37 +393,6 @@ gnt_tree_set_row_color(GNT_TREE(ggblist->tree), node, get_display_color(node)); } -#if 0 -static gboolean -is_contact_online(PurpleContact *contact) -{ - PurpleBlistNode *node; - for (node = purple_blist_node_get_first_child(((PurpleBlistNode*)contact)); node; - node = purple_blist_node_get_sibling_next(node)) { - FinchBlistNode *fnode = purple_blist_node_get_ui_data(node); - if (PURPLE_BUDDY_IS_ONLINE((PurpleBuddy*)node) || - (fnode && fnode->signed_timer)) - return TRUE; - } - return FALSE; -} - -static gboolean -is_group_online(PurpleGroup *group) -{ - PurpleBlistNode *node; - for (node = purple_blist_node_get_first_child(((PurpleBlistNode*)group)); node; - node = purple_blist_node_get_sibling_next(node)) { - if (PURPLE_IS_CHAT(node) && - purple_account_is_connected(((PurpleChat *)node)->account)) - return TRUE; - else if (is_contact_online((PurpleContact*)node)) - return TRUE; - } - return FALSE; -} -#endif - static void new_node(PurpleBlistNode *node) { @@ -999,20 +943,6 @@ blist_update_row_flags((PurpleBlistNode*)contact); } -#if 0 -static void -buddy_signed_on(PurpleBuddy *buddy, FinchBlist *ggblist) -{ - add_node((PurpleBlistNode*)buddy, ggblist); -} - -static void -buddy_signed_off(PurpleBuddy *buddy, FinchBlist *ggblist) -{ - node_remove(purple_blist_get_buddy_list(), (PurpleBlistNode*)buddy); -} -#endif - PurpleBlistUiOps *finch_blist_get_ui_ops() { return &blist_ui_ops; @@ -3131,17 +3061,6 @@ purple_signal_connect(purple_blist_get_handle(), "buddy-signed-off", finch_blist_get_handle(), PURPLE_CALLBACK(buddy_signed_on_off), ggblist); -#if 0 - /* These I plan to use to indicate unread-messages etc. */ - purple_signal_connect(purple_conversations_get_handle(), "received-im-msg", finch_blist_get_handle(), - PURPLE_CALLBACK(received_im_msg), list); - purple_signal_connect(purple_conversations_get_handle(), "sent-im-msg", finch_blist_get_handle(), - PURPLE_CALLBACK(sent_im_msg), NULL); - - purple_signal_connect(purple_conversations_get_handle(), "received-chat-msg", finch_blist_get_handle(), - PURPLE_CALLBACK(received_chat_msg), list); -#endif - g_signal_connect(G_OBJECT(ggblist->tree), "selection_changed", G_CALLBACK(selection_changed), ggblist); g_signal_connect(G_OBJECT(ggblist->tree), "key_pressed", G_CALLBACK(key_pressed), ggblist); g_signal_connect(G_OBJECT(ggblist->tree), "context-menu", G_CALLBACK(context_menu), ggblist);
--- a/finch/gntplugin.c Thu Dec 28 21:28:09 2017 -0600 +++ b/finch/gntplugin.c Fri Dec 29 03:57:44 2017 +0000 @@ -446,95 +446,6 @@ } } -#if 0 -static void -install_selected_file_cb(gpointer handle, const char *filename) -{ - /* Try to init the selected file. - * If it succeeds, try to make a copy of the file in $USERDIR/plugins/. - * If the copy succeeds, unload and destroy the plugin in the original - * location and init+load the new one. - * Select the plugin in the plugin list. - */ - char *path; - PurplePlugin *plugin; - - g_return_if_fail(plugins.window); - - plugin = purple_plugin_probe(filename); - if (!plugin) { - purple_notify_error(handle, _("Error loading plugin"), - _("The selected file is not a valid plugin."), - _("Please open the debug window and try again to see the exact error message."), NULL); - return; - } - if (g_list_find(gnt_tree_get_rows(GNT_TREE(plugins.tree)), plugin)) { - purple_plugin_load(plugin); - gnt_tree_set_choice(GNT_TREE(plugins.tree), plugin, purple_plugin_is_loaded(plugin)); - gnt_tree_set_selected(GNT_TREE(plugins.tree), plugin); - return; - } - - path = g_build_filename(purple_user_dir(), "plugins", NULL); - if (purple_build_dir(path, S_IRUSR | S_IWUSR | S_IXUSR) == 0) { - char *content = NULL; - gsize length = 0; - - if (g_file_get_contents(filename, &content, &length, NULL)) { - char *file = g_path_get_basename(filename); - g_free(path); - path = g_build_filename(purple_user_dir(), "plugins", file, NULL); - if (purple_util_write_data_to_file_absolute(path, content, length)) { - purple_plugin_destroy(plugin); - plugin = purple_plugin_probe(path); - if (!plugin) { - purple_debug_warning("gntplugin", "This is really strange. %s can be loaded, but %s can't!\n", - filename, path); - g_unlink(path); - plugin = purple_plugin_probe(filename); - } - } else { - } - } - g_free(content); - } - g_free(path); - - purple_plugin_load(plugin); - - if (plugin->info->type == PURPLE_PLUGIN_LOADER) { - GList *cur; - for (cur = PURPLE_PLUGIN_LOADER_INFO(plugin)->exts; cur != NULL; - cur = cur->next) - purple_plugins_probe(cur->data); - return; - } - - if (plugin->info->type != PURPLE_PLUGIN_STANDARD || - (plugin->info->flags & PURPLE_PLUGIN_FLAG_INVISIBLE) || - plugin->error) - return; - - gnt_tree_add_choice(GNT_TREE(plugins.tree), plugin, - gnt_tree_create_row(GNT_TREE(plugins.tree), plugin->info->name), NULL, NULL); - gnt_tree_set_choice(GNT_TREE(plugins.tree), plugin, purple_plugin_is_loaded(plugin)); - gnt_tree_set_row_flags(GNT_TREE(plugins.tree), plugin, GNT_TEXT_FLAG_BOLD); - gnt_tree_set_selected(GNT_TREE(plugins.tree), plugin); -} - -static void -install_plugin_cb(GntWidget *w, gpointer null) -{ - static int handle; - - purple_request_close_with_handle(&handle); - purple_request_file(&handle, _("Select plugin to install"), NULL, - FALSE, G_CALLBACK(install_selected_file_cb), NULL, - NULL, &handle); - g_signal_connect_swapped(G_OBJECT(w), "destroy", G_CALLBACK(purple_request_close_with_handle), &handle); -} -#endif - void finch_plugins_show_all(void) { GntWidget *window, *tree, *box, *aboot, *button; @@ -603,13 +514,6 @@ box = gnt_hbox_new(FALSE); gnt_box_add_widget(GNT_BOX(window), box); -#if 0 - button = gnt_button_new(_("Install Plugin...")); - gnt_box_add_widget(GNT_BOX(box), button); - gnt_util_set_trigger_widget(GNT_WIDGET(tree), GNT_KEY_INS, button); - g_signal_connect(G_OBJECT(button), "activate", G_CALLBACK(install_plugin_cb), NULL); -#endif - button = gnt_button_new(_("Close")); gnt_box_add_widget(GNT_BOX(box), button); g_signal_connect_swapped(G_OBJECT(button), "activate",
--- a/finch/libfinch.c Thu Dec 28 21:28:09 2017 -0600 +++ b/finch/libfinch.c Fri Dec 29 03:57:44 2017 +0000 @@ -29,6 +29,7 @@ #include "glibcompat.h" #include "log.h" #include "notify.h" +#include "options.h" #include "plugins.h" #include "protocol.h" #include "pounce.h" @@ -146,9 +147,6 @@ {"config", 'c', 0, G_OPTION_ARG_FILENAME, &opt_config_dir_arg, _("use DIR for config files"), _("DIR")}, - {"debug", 'd', 0, - G_OPTION_ARG_NONE, &debug_enabled, - _("print debugging messages to stderr"), NULL}, {"nologin", 'n', 0, G_OPTION_ARG_NONE, &opt_nologin, _("don't automatically login"), NULL}, @@ -170,6 +168,9 @@ g_option_context_set_summary(context, DISPLAY_VERSION); g_option_context_add_main_entries(context, option_entries, PACKAGE); + g_option_context_add_group(context, purple_get_option_group()); + g_option_context_add_group(context, gplugin_get_option_group()); + #ifdef G_OS_WIN32 /* Handle Unicode filenames on Windows. See GOptionContext docs. */ args = g_win32_get_command_line();
--- a/finch/libgnt/gntfilesel.c Thu Dec 28 21:28:09 2017 -0600 +++ b/finch/libgnt/gntfilesel.c Fri Dec 29 03:57:44 2017 +0000 @@ -38,10 +38,6 @@ #include <glib/gstdio.h> -#if 0 -#include <glob.h> -#endif - enum { SIG_FILE_SELECTED, @@ -281,12 +277,7 @@ { char *path; char *str; -#if 0 - int count; - glob_t gl; - GStatBuf st; - int glob_ret; -#endif + if (strcmp(key, "\r") && strcmp(key, "\n")) return FALSE; @@ -309,39 +300,9 @@ g_free(path); return FALSE; } -#if 0 - /* XXX: there needs to be a way to allow other methods for globbing, - * like the read_fn stuff. */ - glob_ret = glob(path, GLOB_MARK, NULL, &gl); - if (!glob_ret) { /* XXX: do something with the return value */ - char *loc = g_path_get_dirname(gl.gl_pathv[0]); - g_stat(gl.gl_pathv[0], &st); - gnt_file_sel_set_current_location(sel, loc); /* XXX: check the return value */ - g_free(loc); - if (!S_ISDIR(st.st_mode) && !sel->dirsonly) { - gnt_tree_remove_all(GNT_TREE(sel->files)); - for (count = 0; count < gl.gl_pathc; count++) { - char *tmp = process_path(gl.gl_pathv[count]); - loc = g_path_get_dirname(tmp); - if (g_utf8_collate(sel->current, loc) == 0) { - char *base = g_path_get_basename(tmp); - char size[128]; - snprintf(size, sizeof(size), "%ld", (long)st.st_size); - gnt_tree_add_row_after(GNT_TREE(sel->files), base, - gnt_tree_create_row(GNT_TREE(sel->files), base, size, ""), NULL, NULL); - } - g_free(loc); - g_free(tmp); - } - gnt_widget_draw(sel->files); - } - } else if (sel->files) { - gnt_tree_remove_all(GNT_TREE(sel->files)); - gnt_widget_draw(sel->files); - } - globfree(&gl); -#endif + /* XXX: Add support for globbing via g_pattern_spec_* */ + success: g_free(path); return TRUE;
--- a/finch/libgnt/gntmain.c Thu Dec 28 21:28:09 2017 -0600 +++ b/finch/libgnt/gntmain.c Fri Dec 29 03:57:44 2017 +0000 @@ -340,12 +340,6 @@ } *k = '\0'; -#if 0 - gnt_warning("a key: [%s] %#x %#x %#x %#x %#x %#x", keys, - (guchar)keys[0], (guchar)keys[1], (guchar)keys[2], - (guchar)keys[3], (guchar)keys[4], (guchar)keys[5]); -#endif - /* TODO: we could call detect_mouse_action here, but no * events are triggered (yet?) for mouse on win32. */ @@ -395,17 +389,6 @@ if (mouse_enabled && detect_mouse_action(k)) goto end; -#if 0 - /* I am not sure what's happening here. If this actually does something, - * then this needs to go in gnt_keys_refine. */ - if (*k < 0) { /* Alt not sending ESC* */ - *(k + 1) = 128 - *k; - *k = 27; - *(k + 2) = 0; - rd++; - } -#endif - while (rd) { char back; int p; @@ -450,12 +433,6 @@ g_io_channel_set_close_on_unref(channel, TRUE); -#if 0 - g_io_channel_set_encoding(channel, NULL, NULL); - g_io_channel_set_buffered(channel, FALSE); - g_io_channel_set_flags(channel, G_IO_FLAG_NONBLOCK, NULL ); -#endif - channel_read_callback = result = g_io_add_watch_full(channel, G_PRIORITY_HIGH, (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI), io_invoke, NULL, NULL); @@ -465,10 +442,6 @@ io_invoke_error, GINT_TO_POINTER(result), NULL); g_io_channel_unref(channel); - -#if 0 - gnt_warning("setting up IO (%d)", channel_read_callback); -#endif } static gboolean
--- a/finch/libgnt/gntmenuitem.c Thu Dec 28 21:28:09 2017 -0600 +++ b/finch/libgnt/gntmenuitem.c Fri Dec 29 03:57:44 2017 +0000 @@ -65,13 +65,8 @@ gnt_menuitem_init(GTypeInstance *instance, gpointer klass) { GntMenuItem *item = GNT_MENU_ITEM(instance); -#if 0 - GntMenuItemPriv *priv = &item->priv; - priv->visible = TRUE; -#else item->visible = TRUE; -#endif } /****************************************************************************** @@ -167,13 +162,7 @@ void gnt_menuitem_set_visible(GntMenuItem *item, gboolean visible) { -#if 0 - GntMenuItemPriv *priv = &item->priv; - - priv->visible = visible; -#else item->visible = visible; -#endif } gboolean @@ -181,11 +170,7 @@ { g_return_val_if_fail(GNT_IS_MENU_ITEM(item), FALSE); -#if 0 - return item->priv.visible; -#else return item->visible; -#endif } void
--- a/finch/libgnt/gntwidget.c Thu Dec 28 21:28:09 2017 -0600 +++ b/finch/libgnt/gntwidget.c Fri Dec 29 03:57:44 2017 +0000 @@ -322,42 +322,8 @@ if (widget->window == NULL) { -#if 0 - int x, y, maxx, maxy, w, h; - int oldw, oldh; - gboolean shadow = TRUE; - - if (!gnt_widget_has_shadow(widget)) - shadow = FALSE; - - x = widget->priv.x; - y = widget->priv.y; - w = oldw = widget->priv.width + shadow; - h = oldh = widget->priv.height + shadow; - - getmaxyx(stdscr, maxy, maxx); - maxy -= 1; /* room for the taskbar */ + widget->window = newpad(widget->priv.height + 20, widget->priv.width + 20); - x = MAX(0, x); - y = MAX(0, y); - if (x + w >= maxx) - x = MAX(0, maxx - w); - if (y + h >= maxy) - y = MAX(0, maxy - h); - - w = MIN(w, maxx); - h = MIN(h, maxy); - - widget->priv.x = x; - widget->priv.y = y; - if (w != oldw || h != oldh) { - widget->priv.width = w - shadow; - widget->priv.height = h - shadow; - g_signal_emit(widget, signals[SIG_SIZE_CHANGED], 0, oldw, oldh); - } -#else - widget->window = newpad(widget->priv.height + 20, widget->priv.width + 20); /* XXX: */ -#endif init_widget(widget); } @@ -403,11 +369,6 @@ { g_signal_emit(widget, signals[SIG_HIDE], 0); wbkgdset(widget->window, '\0' | gnt_color_pair(GNT_COLOR_NORMAL)); -#if 0 - /* XXX: I have no clue why, but this seemed to be necessary. */ - if (gnt_widget_has_shadow(widget)) - mvwvline(widget->window, 1, widget->priv.width, ' ', widget->priv.height); -#endif gnt_screen_release(widget); GNT_WIDGET_SET_FLAGS(widget, GNT_WIDGET_INVISIBLE); GNT_WIDGET_UNSET_FLAGS(widget, GNT_WIDGET_MAPPED);
--- a/finch/libgnt/test.c Thu Dec 28 21:28:09 2017 -0600 +++ b/finch/libgnt/test.c Fri Dec 29 03:57:44 2017 +0000 @@ -16,25 +16,6 @@ gnt_box_set_title(GNT_BOX(box), "This is a test"); gnt_widget_show(box); -#if 0 - - gnt_widget_set_focus(w, TRUE); - - /* XXX: This is to just test stuff */ - if (text[0] == 27) - { - if (strcmp(text+1, GNT_KEY_LEFT) == 0 && w->priv.x) - (w->priv.x)--; - else if (strcmp(text+1, GNT_KEY_RIGHT) == 0) - (w->priv.x)++; - else if (strcmp(text+1, GNT_KEY_UP) == 0 && w->priv.y) - (w->priv.y)--; - else if (strcmp(text+1, GNT_KEY_DOWN) == 0) - (w->priv.y)++; - } - - gnt_widget_draw(w); -#endif return FALSE; } @@ -57,11 +38,7 @@ { g_return_val_if_fail(GNT_IS_TREE(tree), FALSE); gnt_tree_scroll(GNT_TREE(tree), 1); - /*wscrl(tree->window, 1);*/ - /*box(tree->window, ACS_VLINE, ACS_HLINE);*/ - /*wrefresh(tree->window);*/ - /*char *s = 0;*/ - /**s = 'a';*/ + return TRUE; } @@ -90,7 +67,6 @@ gnt_box_add_widget(GNT_BOX(vbox), widget2); gnt_box_add_widget(GNT_BOX(hbox), label); - /*gnt_box_add_widget(GNT_BOX(hbox), vbox);*/ gnt_box_add_widget(GNT_BOX(hbox), gnt_entry_new("a")); @@ -106,18 +82,12 @@ GNT_WIDGET_UNSET_FLAGS(hbox, GNT_WIDGET_NO_BORDER | GNT_WIDGET_NO_SHADOW); gnt_box_set_title(GNT_BOX(hbox), "111111111111111111111111111111111111111111111111111111111111111This is the title …"); - /*gnt_widget_set_take_focus(vbox, TRUE);*/ - /*gnt_widget_set_take_focus(hbox, TRUE);*/ - /*gnt_widget_set_position(hbox, 10, 10);*/ - gnt_widget_show(hbox); g_signal_connect(hbox, "key_pressed", G_CALLBACK(key_pressed), tree); g_signal_connect(widget, "activate", G_CALLBACK(button1), hbox); g_signal_connect(widget2, "activate", G_CALLBACK(button2), hbox); - /*g_timeout_add(1000, (GSourceFunc)w_scroll, tree);*/ - gnt_main(); return 0;
--- a/libpurple/conversationtypes.c Thu Dec 28 21:28:09 2017 -0600 +++ b/libpurple/conversationtypes.c Fri Dec 29 03:57:44 2017 +0000 @@ -806,14 +806,6 @@ return; } -#if 0 - PurpleAccount *account = purple_conversation_get_account(conv); - /* XXX: this should not be necessary */ - if (purple_strequal(purple_normalize(account, who), priv->nick)) { - flags |= PURPLE_MESSAGE_SEND; - } -#endif - flags = purple_message_get_flags(msg); if (flags & PURPLE_MESSAGE_RECV) { if (purple_utf8_has_word(purple_message_get_contents(msg), priv->nick)) { @@ -1455,36 +1447,11 @@ { /* Still connected */ int chat_id = purple_chat_conversation_get_id(chat); -#if 0 + /* - * This is unfortunately necessary, because calling - * purple_serv_chat_leave() calls this purple_conversation_destroy(), - * which leads to two calls here.. We can't just return after - * this, because then it'll return on the next pass. So, since - * purple_serv_got_chat_left(), which is eventually called from the - * protocol that purple_serv_chat_leave() calls, removes this conversation - * from the gc's buddy_chats list, we're going to check to see - * if this exists in the list. If so, we want to return after - * calling this, because it'll be called again. If not, fall - * through, because it'll have already been removed, and we'd - * be on the 2nd pass. - * - * Long paragraph. <-- Short sentence. - * - * -- ChipX86 - */ - - if (gc && g_slist_find(gc->buddy_chats, conv) != NULL) { - purple_serv_chat_leave(gc, chat_id); - - return; - } -#endif - /* - * Instead of all of that, lets just close the window when - * the user tells us to, and let the protocol deal with the - * internals on it's own time. Don't do this if the protocol already - * knows it left the chat. + * Close the window when the user tells us to, and let the protocol + * deal with the internals on it's own time. Don't do this if the + * protocol already knows it left the chat. */ if (!purple_chat_conversation_has_left(chat)) purple_serv_chat_leave(gc, chat_id);
--- a/libpurple/dbus-server.c Thu Dec 28 21:28:09 2017 -0600 +++ b/libpurple/dbus-server.c Fri Dec 29 03:57:44 2017 +0000 @@ -691,13 +691,7 @@ gboolean xboolean; gpointer ptr = NULL; gpointer val; -#if 0 - if (purple_value_is_outgoing(purple_values[i])) - { - ptr = my_arg(gpointer); - g_return_val_if_fail(ptr, TRUE); - } -#endif + switch (types[i]) { case G_TYPE_INT: @@ -768,13 +762,8 @@ DBusMessageIter iter; char *newname; -#if 0 /* this is noisy with no dbus connection */ - g_return_if_fail(purple_dbus_connection); -#else if (purple_dbus_connection == NULL) return; -#endif - /* * The test below is a hack that prevents our "dbus-method-called"
--- a/libpurple/http.c Thu Dec 28 21:28:09 2017 -0600 +++ b/libpurple/http.c Fri Dec 29 03:57:44 2017 +0000 @@ -236,11 +236,6 @@ guint16 host_len1; /* host string length */ guint16 host_len2; /* host string length */ guint32 host_off; /* host string offset (always 0x00000020) */ - -#if 0 - guint8 host[*]; /* host string (ASCII) */ - guint8 dom[*]; /* domain string (ASCII) */ -#endif }; static time_t purple_http_rfc1123_to_time(const gchar *str);
--- a/libpurple/log.c Thu Dec 28 21:28:09 2017 -0600 +++ b/libpurple/log.c Fri Dec 29 03:57:44 2017 +0000 @@ -364,19 +364,6 @@ PurpleLogLogger *purple_log_logger_new(const char *id, const char *name, int functions, ...) { -#if 0 - void(*create)(PurpleLog *), - gsize(*write)(PurpleLog *, PurpleMessageFlags, const char *, GDateTime *, const char *), - void(*finalize)(PurpleLog *), - GList*(*list)(PurpleLogType type, const char*, PurpleAccount*), - char*(*read)(PurpleLog*, PurpleLogReadFlags*), - int(*size)(PurpleLog*), - int(*total_size)(PurpleLogType type, const char *name, PurpleAccount *account), - GList*(*list_syslog)(PurpleAccount *account), - void(*get_log_sets)(PurpleLogSetCallback cb, GHashTable *sets), - gboolean(*remove)(PurpleLog *log), - gboolean(*is_deletable)(PurpleLog *log)) -#endif PurpleLogLogger *logger; va_list args;
--- a/libpurple/media.c Thu Dec 28 21:28:09 2017 -0600 +++ b/libpurple/media.c Fri Dec 29 03:57:44 2017 +0000 @@ -499,15 +499,6 @@ g_hash_table_insert(media->priv->sessions, g_strdup(session->id), session); } -#if 0 -static gboolean -purple_media_remove_session(PurpleMedia *media, PurpleMediaSession *session) -{ - g_return_val_if_fail(PURPLE_IS_MEDIA(media), FALSE); - return g_hash_table_remove(media->priv->sessions, session->id); -} -#endif - static PurpleMediaStream * purple_media_insert_stream(PurpleMediaSession *session, const gchar *name, gboolean initiator)
--- a/libpurple/meson.build Thu Dec 28 21:28:09 2017 -0600 +++ b/libpurple/meson.build Fri Dec 29 03:57:44 2017 +0000 @@ -39,6 +39,7 @@ 'nat-pmp.c', 'network.c', 'notify.c', + 'options.c', 'plugins.c', 'pluginpref.c', 'pounce.c', @@ -118,6 +119,7 @@ 'nat-pmp.h', 'network.h', 'notify.h', + 'options.h', 'plugins.h', 'pluginpref.h', 'pounce.h',
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpurple/options.c Fri Dec 29 03:57:44 2017 +0000 @@ -0,0 +1,96 @@ +/* purple + * + * Purple is the legal property of its developers, whose names are too numerous + * to list here. Please refer to the COPYRIGHT file distributed with this + * source distribution. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA + */ + +#include "internal.h" + +#include "options.h" + +#include "network.h" + +/****************************************************************************** + * Callbacks + *****************************************************************************/ +static gboolean +debug_cb(const gchar *option_name, const gchar *value, + gpointer data, GError **error) +{ + purple_debug_set_enabled(TRUE); + + if (purple_strequal(value, "colored")) { + purple_debug_set_colored(TRUE); + } + + return TRUE; +} + +static gboolean +force_online_cb(const gchar *option_name, const gchar *value, + gpointer data, GError **error) +{ + purple_network_force_online(); + + return TRUE; +} + +/****************************************************************************** + * API + *****************************************************************************/ + +/** + * purple_get_option_group: + * + * Returns a #GOptionGroup for the commandline arguments recognized by + * LibPurple. You should add this option group to your #GOptionContext with + * g_option_context_add_group(), if you are using g_option_context_parse() to + * parse your commandline arguments. + * + * Return Value: (transfer full): a #GOptionGroup for the commandline arguments + * recognized by LibPurple. + */ +GOptionGroup * +purple_get_option_group(void) { + GOptionGroup *group = NULL; + GOptionEntry entries[] = { + { + "debug", 'd', G_OPTION_FLAG_OPTIONAL_ARG, + G_OPTION_ARG_CALLBACK, &debug_cb, + _("print debugging messages to stdout"), + _("[colored]") + }, { + "force-online", 'f', 0, + G_OPTION_ARG_NONE, &force_online_cb, + _("force online, regardless of network status"), + NULL + }, + }; + + group = g_option_group_new( + "libpurple", + _("LibPurple options"), + _("Show LibPurple Options"), + NULL, + NULL + ); + + g_option_group_add_entries(group, entries); + + return group; +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpurple/options.h Fri Dec 29 03:57:44 2017 +0000 @@ -0,0 +1,42 @@ +/* purple + * + * Purple is the legal property of its developers, whose names are too numerous + * to list here. Please refer to the COPYRIGHT file distributed with this + * source distribution. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA + */ + +#ifndef PURPLE_OPTIONS_H +#define PURPLE_OPTIONS_H + +/** + * SECTION:options + * @section_id: libpurple-options + * @short_description: <filename>options.h</filename> + * @title: Options API + * + * The functions defined here are to help in handling command line options. + */ + +#include <glib.h> + +G_BEGIN_DECLS + +GOptionGroup *purple_get_option_group(void); + +G_END_DECLS + +#endif /* PURPLE_OPTIONS_H */
--- a/libpurple/plugins/filectl.c Thu Dec 28 21:28:09 2017 -0600 +++ b/libpurple/plugins/filectl.c Fri Dec 29 03:57:44 2017 +0000 @@ -86,27 +86,6 @@ free(arg1); free(arg2); -/* purple_find_conversation() is gone in 2.0.0. */ -#if 0 - } else if (!g_ascii_strncasecmp(command, "send", 4)) { - PurpleConversation *conv; - - arg1 = getarg(buffer, 1, 0); - arg2 = getarg(buffer, 2, 1); - - conv = purple_find_conversation(PURPLE_CONV_TYPE_ANY, arg1); - if (conv != NULL) - { - /* - purple_conversation_write(conv, arg2, WFLAG_SEND, NULL, time(NULL), -1); - purple_serv_send_im(conv->gc, arg1, arg2, 0); - */ - } - - free(arg1); - free(arg2); -#endif - } else if (!g_ascii_strncasecmp(command, "away", 4)) { arg1 = getarg(buffer, 1, 1); /* serv_set_away_all(arg1); */
--- a/libpurple/plugins/log_reader.c Thu Dec 28 21:28:09 2017 -0600 +++ b/libpurple/plugins/log_reader.c Fri Dec 29 03:57:44 2017 +0000 @@ -2444,35 +2444,6 @@ if (path) { /* Read talk.ini file to find the log directory. */ GError *error = NULL; - -#if 0 /* FIXME: Not tested yet. */ - GKeyFile *key_file; - - purple_debug_info("Trillian talk.ini read", "Reading %s\n", path); - - error = NULL; - if (!g_key_file_load_from_file(key_file, path, G_KEY_FILE_NONE, GError &error)) { - purple_debug_error("Trillian talk.ini read", - "Error reading talk.ini\n"); - if (error) - g_error_free(error); - } else { - char *logdir = g_key_file_get_string(key_file, "Logging", "Directory", &error); - if (error) { - purple_debug_error("Trillian talk.ini read", - "Error reading Directory value from Logging section\n"); - g_error_free(error); - } - - if (logdir) { - g_strchomp(logdir); - purple_prefs_add_string("/plugins/core/log_reader/trillian/log_directory", logdir); - found = TRUE; - } - - g_key_file_free(key_file); - } -#else gchar *contents = NULL; if (g_file_test(path, G_FILE_TEST_IS_REGULAR)) { @@ -2514,7 +2485,6 @@ g_free(contents); } g_free(path); -#endif } /* path */ if (!found) {
--- a/libpurple/stun.c Thu Dec 28 21:28:09 2017 -0600 +++ b/libpurple/stun.c Fri Dec 29 03:57:44 2017 +0000 @@ -63,14 +63,6 @@ guint16 len; }; -#if 0 -struct stun_change { - struct stun_header hdr; - struct stun_attrib attrib; - char value[4]; -}; -#endif /* 0 */ - struct stun_conn { int fd; struct sockaddr_in addr; @@ -150,27 +142,6 @@ return TRUE; } -#if 0 -static void do_test2(struct stun_conn *sc) { - struct stun_change data; - data.hdr.type = htons(0x0001); - data.hdr.len = 0; - data.hdr.transid[0] = rand(); - data.hdr.transid[1] = ntohl(((int)'g' << 24) + ((int)'a' << 16) + ((int)'i' << 8) + (int)'m'); - data.hdr.transid[2] = rand(); - data.hdr.transid[3] = rand(); - data.attrib.type = htons(0x003); - data.attrib.len = htons(4); - data.value[3] = 6; - sc->packet = (struct stun_header*)&data; - sc->packetsize = sizeof(struct stun_change); - sc->retry = 0; - sc->test = 2; - sendto(sc->fd, sc->packet, sc->packetsize, 0, (struct sockaddr *)&(sc->addr), sizeof(struct sockaddr_in)); - sc->timeout = g_timeout_add(500, (GSourceFunc) timeoutfunc, sc); -} -#endif /* 0 */ - static void reply_cb(gpointer data, gint source, PurpleInputCondition cond) { struct stun_conn *sc = data; guchar buffer[65536];
--- a/libpurple/tests/test_util.c Thu Dec 28 21:28:09 2017 -0600 +++ b/libpurple/tests/test_util.c Fri Dec 29 03:57:44 2017 +0000 @@ -472,6 +472,10 @@ "aaaa\xef\xbb\xbf", "aaaa\xef\xbb\xbf", }, { + /* U+FFFE (should be stripped) */ + "aaaa\xef\xbf\xbe", + "aaaa", + }, { NULL, NULL, } @@ -484,20 +488,12 @@ g_free(result); + /* NULL as input is a valid test, but it's the last test, so we break + * after it. + */ if(data[i].input == NULL) break; } - -#if 0 - /* invalid UTF-8 */ - /* disabled because make check fails on an assertion */ - fail_unless(NULL == purple_utf8_strip_unprintables("abc\x80\x7f")); - /* disabled because make check fails on an assertion */ - /* U+DB80 (Private Use High Surrogate, First) -- should be stripped */ - assert_string_equal_free("aaaa", purple_utf8_strip_unprintables("aaaa\xed\xa0\x80")); - /* U+FFFE (should be stripped) */ - assert_string_equal_free("aaaa", purple_utf8_strip_unprintables("aaaa\xef\xbf\xbe")); -#endif } /******************************************************************************
--- a/libpurple/trie.c Thu Dec 28 21:28:09 2017 -0600 +++ b/libpurple/trie.c Fri Dec 29 03:57:44 2017 +0000 @@ -244,44 +244,6 @@ return state; } -#if 0 -static gchar * -purple_trie_print(PurpleTrieState *state, int limit) -{ - GString *str = g_string_new(NULL); - int i; - - if (limit < 0) - return g_strdup("{ LIMIT }"); - - if (state->found_word) - g_string_append(str, "*"); - g_string_append(str, "{ "); - for (i = 0; i < 256; i++) { - gchar *chp; - if (!state->children) - continue; - if (!state->children[i]) - continue; - if (i == 0) - g_string_append(str, "(null)->"); - else - g_string_append_printf(str, "%c->", i); - if (state->children[i] == state) - g_string_append(str, "loop"); - else { - chp = purple_trie_print(state->children[i], limit - 1); - g_string_append(str, chp); - g_string_append_c(str, ' '); - g_free(chp); - } - } - g_string_append(str, "}"); - - return g_string_free(str, FALSE); -} -#endif - static gboolean purple_trie_states_build(PurpleTrie *trie) {
--- a/libpurple/upnp.h Thu Dec 28 21:28:09 2017 -0600 +++ b/libpurple/upnp.h Fri Dec 29 03:57:44 2017 +0000 @@ -62,19 +62,6 @@ */ void purple_upnp_discover(PurpleUPnPCallback cb, gpointer cb_data); -#if 0 -/** - * purple_upnp_get_control_info: - * - * Retrieve the current UPnP control info, if there is any available. - * This will only be filled in if purple_upnp_discover() had been called, - * and finished discovering. - * - * Returns: The control URL for the IGD we'll use to use the IGD services - */ -const PurpleUPnPControlInfo* purple_upnp_get_control_info(void); -#endif - /** * purple_upnp_get_public_ip: *
--- a/libpurple/util.c Thu Dec 28 21:28:09 2017 -0600 +++ b/libpurple/util.c Fri Dec 29 03:57:44 2017 +0000 @@ -2538,13 +2538,6 @@ str2[j++] = '\n'; } /* Check for tags which begin CDATA and need to be closed */ -#if 0 /* FIXME.. option is end tag optional, we can't handle this right now */ - else if (g_ascii_strncasecmp(str2 + i, "<option", 7) == 0) - { - /* FIXME: We should not do this if the OPTION is SELECT'd */ - cdata_close_tag = "</option>"; - } -#endif else if (g_ascii_strncasecmp(str2 + i, "<script", 7) == 0) { cdata_close_tag = "</script>"; @@ -5074,69 +5067,3 @@ return ret; } - -#if 0 - -/* Temporarily removed - re-add this when you need ini file support. */ - -#define PURPLE_KEY_FILE_DEFAULT_MAX_SIZE 102400 -#define PURPLE_KEY_FILE_HARD_LIMIT 10485760 - -gboolean -purple_key_file_load_from_ini(GKeyFile *key_file, const gchar *file, - gsize max_size) -{ - const gchar *header = "[default]\n\n"; - int header_len = strlen(header); - int fd; - GStatBuf st; - gsize file_size, buff_size; - gchar *buff; - GError *error = NULL; - - g_return_val_if_fail(key_file != NULL, FALSE); - g_return_val_if_fail(file != NULL, FALSE); - g_return_val_if_fail(max_size < PURPLE_KEY_FILE_HARD_LIMIT, FALSE); - - if (max_size == 0) - max_size = PURPLE_KEY_FILE_DEFAULT_MAX_SIZE; - - fd = g_open(file, O_RDONLY, S_IREAD); - if (fd == -1) { - purple_debug_error("util", "Failed to read ini file %s", file); - return FALSE; - } - - if (_purple_fstat(fd, &st) != 0) { - purple_debug_error("util", "Failed to fstat ini file %s", file); - return FALSE; - } - - file_size = (st.st_size > max_size) ? max_size : st.st_size; - - buff_size = file_size + header_len; - buff = g_new(gchar, buff_size); - memcpy(buff, header, header_len); - if (read(fd, buff + header_len, file_size) != (gssize)file_size) { - purple_debug_error("util", - "Failed to read whole ini file %s", file); - g_close(fd, NULL); - free(buff); - return FALSE; - } - g_close(fd, NULL); - - g_key_file_load_from_data(key_file, buff, buff_size, - G_KEY_FILE_NONE, &error); - - free(buff); - - if (error) { - purple_debug_error("util", "Failed parsing ini file %s: %s", - file, error->message); - return FALSE; - } - - return TRUE; -} -#endif
--- a/libpurple/xmlnode.c Thu Dec 28 21:28:09 2017 -0600 +++ b/libpurple/xmlnode.c Fri Dec 29 03:57:44 2017 +0000 @@ -74,19 +74,6 @@ node = new_node(name, PURPLE_XMLNODE_TYPE_TAG); purple_xmlnode_insert_child(parent, node); -#if 0 - /* This would give PurpleXmlNodes more appropriate namespacing - * when creating them. Otherwise, unless an explicit namespace - * is set, purple_xmlnode_get_namespace() will return NULL, when - * there may be a default namespace. - * - * I'm unconvinced that it's useful, and concerned it may break things. - * - * _insert_child would need the same thing, probably (assuming - * xmlns->node == NULL) - */ - purple_xmlnode_set_namespace(node, purple_xmlnode_get_default_namespace(node)) -#endif return node; }
--- a/pidgin/gtkstyle.h Thu Dec 28 21:28:09 2017 -0600 +++ b/pidgin/gtkstyle.h Fri Dec 29 03:57:44 2017 +0000 @@ -1,8 +1,3 @@ -/** - * @file gtkstyle.h GTK+ Style utility functions - * @ingroup pidgin - */ - /* pidgin * * Pidgin is the legal property of its developers, whose names are too numerous @@ -23,6 +18,14 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA */ + +/** + * SECTION:gtkstyle + * @section_id: pidgin-gtkstyle + * @short_description: <filename>gtkstyle.h</filename> + * @title: Style API + */ + #ifndef _PIDGINSTYLE_H_ #define _PIDGINSTYLE_H_ @@ -30,30 +33,27 @@ G_BEGIN_DECLS -/*@{*/ - /** - * Returns TRUE if dark mode is enabled and foreground colours should be invertred + * pidgin_style_is_dark: + * @style: The GtkStyle in use, or NULL to use a cached version. * - * @param style The GtkStyle in use, or NULL to use a cached version. + * Returns whether or not dark mode is enabled. * - * @return @c TRUE if dark mode, @c FALSE otherwise + * Returns: TRUE if dark mode is enabled and foreground colours should be invertred */ gboolean pidgin_style_is_dark(GtkStyle *style); /** - * Lighten a color if dark mode is enabled. + * pidgin_style_adjust_contrast: + * @style: The GtkStyle in use. + * @color: Color to be lightened. Transformed color will be written here. * - * @param style The GtkStyle in use. - * - * @param color Color to be lightened. Transformed color will be written here. + * Lighten a color if dark mode is enabled. */ void pidgin_style_adjust_contrast(GtkStyle *style, GdkColor *color); -/*@}*/ - G_END_DECLS #endif /* _PIDGINSTYLE_H_ */
--- a/pidgin/libpidgin.c Thu Dec 28 21:28:09 2017 -0600 +++ b/pidgin/libpidgin.c Fri Dec 29 03:57:44 2017 +0000 @@ -33,6 +33,7 @@ #include "log.h" #include "network.h" #include "notify.h" +#include "options.h" #include "prefs.h" #include "protocol.h" #include "pounce.h" @@ -375,25 +376,10 @@ purple_blist_set_visible(TRUE); } -static gboolean debug_colored = FALSE; -static gboolean debug_enabled = FALSE; static gboolean opt_login = FALSE; static gchar *opt_login_arg = NULL; static gboolean -debug_opt_arg_func(const gchar *option_name, const gchar *value, - gpointer data, GError **error) -{ - debug_enabled = TRUE; - - if (purple_strequal(value, "colored")) { - debug_colored = TRUE; - } - - return TRUE; -} - -static gboolean login_opt_arg_func(const gchar *option_name, const gchar *value, gpointer data, GError **error) { @@ -408,7 +394,6 @@ int pidgin_start(int argc, char *argv[]) { GApplication *app; - gboolean opt_force_online = FALSE; gboolean opt_nologin = FALSE; gboolean opt_version = FALSE; gboolean opt_si = TRUE; /* Check for single instance? */ @@ -441,13 +426,6 @@ {"config", 'c', 0, G_OPTION_ARG_FILENAME, &opt_config_dir_arg, _("use DIR for config files"), _("DIR")}, - {"debug", 'd', G_OPTION_FLAG_OPTIONAL_ARG, - G_OPTION_ARG_CALLBACK, &debug_opt_arg_func, - _("print debugging messages to stdout"), - _("[colored]")}, - {"force-online", 'f', 0, - G_OPTION_ARG_NONE, &opt_force_online, - _("force online, regardless of network status"), NULL}, {"login", 'l', G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_CALLBACK, &login_opt_arg_func, _("enable specified account(s) (optional argument NAME\n" @@ -468,11 +446,8 @@ {NULL} }; - debug_colored = FALSE; #ifdef DEBUG - debug_enabled = TRUE; -#else - debug_enabled = FALSE; + purple_debug_set_enabled(TRUE); #endif #ifdef ENABLE_NLS @@ -594,6 +569,8 @@ g_free(summary); g_option_context_add_main_entries(context, option_entries, PACKAGE); + g_option_context_add_group(context, purple_get_option_group()); + g_option_context_add_group(context, gplugin_get_option_group()); g_option_context_add_group(context, gtk_get_option_group(TRUE)); #ifdef G_OS_WIN32 @@ -646,11 +623,6 @@ * Fire up this baby. */ - if (g_getenv("PIDGIN_DEBUG_COLORED") != NULL) - debug_colored = TRUE; - purple_debug_set_enabled(debug_enabled); - purple_debug_set_colored(debug_colored); - app = G_APPLICATION(gtk_application_new("im.pidgin.Pidgin", G_APPLICATION_NON_UNIQUE)); @@ -741,11 +713,6 @@ g_free(opt_config_dir_arg); opt_config_dir_arg = NULL; - /* This needs to be before purple_blist_show() so the - * statusbox gets the forced online status. */ - if (opt_force_online) - purple_network_force_online(); - /* * We want to show the blist early in the init process so the * user feels warm and fuzzy (not cold and prickley).