Mercurial > pidgin
changeset 31835:36011b558d3e
merge of '1b0275bd7ec6ff5c9cb2a1b7a0a60c36091448a6'
and '807d1abbfdb467f3e6b995ae329f287a13a1b093'
author | Elliott Sales de Andrade <qulogic@pidgin.im> |
---|---|
date | Sat, 19 Mar 2011 19:38:55 +0000 |
parents | da81195f635e (diff) 507e7721c5e4 (current diff) |
children | 8d6630912021 |
files | gaim-uninstalled.pc.in gaim.pc.in libpurple/Makefile.am libpurple/account.c libpurple/purple-2-uninstalled.pc.in libpurple/purple-2.pc.in libpurple/purple-uninstalled.pc.in libpurple/purple.pc.in pidgin/Makefile.am pidgin/pidgin-2-uninstalled.pc.in pidgin/pidgin-2.pc.in pidgin/pidgin-uninstalled.pc.in pidgin/pidgin.pc.in |
diffstat | 25 files changed, 96 insertions(+), 767 deletions(-) [+] |
line wrap: on
line diff
--- a/.mtn-ignore Thu Mar 17 08:00:18 2011 +0000 +++ b/.mtn-ignore Sat Mar 19 19:38:55 2011 +0000 @@ -1,8 +1,8 @@ +(.*/)?TAGS$ (.*/)?\.svn +.*/?.*\.pc$ .*/?Makefile(\.in)?$ .*/?Makefile\.am\.mingw$ -(.*/)?TAGS$ -.*/?.*\.pc$ .*/perl/common/[^/]+\.c$ .*/perl/common/blib.* .*/perl/common/pm_to_blib$ @@ -11,8 +11,9 @@ .*\.dll$ .*\.exe$ .*\.loT$ -intltool-.* Doxyfile(\.mingw)?$ +VERSION$ +\.tx aclocal.m4 autogen.args compile @@ -24,42 +25,15 @@ config.status config.sub configure$ +depcomp +doc/finch.1$ +doc/html +doc/pidgin.1$ finch/finch$ finch/libgnt/gntmarshal.c finch/libgnt/gntmarshal.h -depcomp -doc/finch.1$ -doc/pidgin.1$ -doc/html -package_revision.h -package_revision_raw.txt -pidgin.apspec$ -pidgin.desktop$ -pidgin.spec$ -pidgin-.*.tar.gz -pidgin-.*.tar.bz2 -pidgin-*.*.*-dbgsym$ -pidgin-*.*.*-dbgsym.zip$ -pidgin-*.*.*-win32bin$ -pidgin-*.*.*-win32-bin.zip$ -pidgin/pidgin$ -pidgin/pixmaps/emotes/default/24/theme -pidgin/pixmaps/emotes/none/theme -pidgin/pixmaps/emotes/small/16/theme -pidgin/plugins/musicmessaging/music-messaging-bindings.c -pidgin/plugins/perl/common/Makefile.PL$ -pidgin/plugins/perl/common/Makefile.old -pidgin/win32/pidgin_dll_rc.rc$ -pidgin/win32/pidgin_exe_rc.rc$ -pidgin/win32/nsis/gtk-runtime-*.*.*.*.zip -pidgin/win32/nsis/gtk_runtime_stage$ -pidgin/win32/nsis/pidgin-translations.nsh$ -pidgin/win32/nsis/langmacros.nsh -pidgin/win32/nsis/nsis_translations.desktop -pidgin/win32/nsis/pidgin-spellcheck-preselect.nsh -pidgin/win32/nsis/pidgin-spellcheck.nsh -pidgin/win32/nsis/translations install-sh +intltool-.* libpurple/dbus-bindings.c libpurple/dbus-signals.c libpurple/dbus-types.c @@ -73,10 +47,10 @@ libpurple/plugins/perl/common/const-c.inc libpurple/plugins/perl/common/const-xs.inc libpurple/plugins/perl/common/lib -libpurple/purple.h$ libpurple/purple-client-bindings.c libpurple/purple-client-bindings.h libpurple/purple-client-example +libpurple/purple.h$ libpurple/tests/check_libpurple libpurple/tests/libpurple.. libpurple/version.h$ @@ -86,6 +60,34 @@ ltmain.sh missing mkinstalldirs +package_revision.h +package_revision_raw.txt +pidgin-*.*.*-dbgsym$ +pidgin-*.*.*-dbgsym.zip$ +pidgin-*.*.*-win32-bin.zip$ +pidgin-*.*.*-win32bin$ +pidgin-.*.tar.bz2 +pidgin-.*.tar.gz +pidgin.apspec$ +pidgin.desktop$ +pidgin.spec$ +pidgin/pidgin$ +pidgin/pixmaps/emotes/default/24/theme +pidgin/pixmaps/emotes/none/theme +pidgin/pixmaps/emotes/small/16/theme +pidgin/plugins/musicmessaging/music-messaging-bindings.c +pidgin/plugins/perl/common/Makefile.PL$ +pidgin/plugins/perl/common/Makefile.old +pidgin/win32/nsis/gtk-runtime-*.*.*.*.zip +pidgin/win32/nsis/gtk_runtime_stage$ +pidgin/win32/nsis/langmacros.nsh +pidgin/win32/nsis/nsis_translations.desktop +pidgin/win32/nsis/pidgin-spellcheck-preselect.nsh +pidgin/win32/nsis/pidgin-spellcheck.nsh +pidgin/win32/nsis/pidgin-translations.nsh$ +pidgin/win32/nsis/translations +pidgin/win32/pidgin_dll_rc.rc$ +pidgin/win32/pidgin_exe_rc.rc$ po/Makefile.in.in po/POTFILES$ po/missing @@ -94,4 +96,3 @@ po/stamp-it stamp-h1 win32-install-dir(\.release)? -VERSION$
--- a/ChangeLog Thu Mar 17 08:00:18 2011 +0000 +++ b/ChangeLog Sat Mar 19 19:38:55 2011 +0000 @@ -14,6 +14,7 @@ #13095) * Simple Silence Suppression is optional per-account. (Jakub Adam) (half of #13180) + * Fix purple-url-handler being unable to find an account. Pidgin: * Duplicate code cleanup. (Gabriel Schulhof) (#10599)
--- a/ChangeLog.API Thu Mar 17 08:00:18 2011 +0000 +++ b/ChangeLog.API Sat Mar 19 19:38:55 2011 +0000 @@ -1,5 +1,10 @@ Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul +version 3.0.0 (??/??/????): + libpurple: + Removed: + * purple_core_migrate + version 2.8.0 (??/??/????): libpurple: Added:
--- a/Makefile.am Thu Mar 17 08:00:18 2011 +0000 +++ b/Makefile.am Sat Mar 19 19:38:55 2011 +0000 @@ -11,8 +11,6 @@ config.h.mingw \ doxy2devhelp.xsl \ fix-casts.sh \ - gaim.pc.in \ - gaim-uninstalled.pc.in \ intltool-extract.in \ intltool-merge.in \ intltool-update.in \
--- a/finch/finch.c Thu Mar 17 08:00:18 2011 +0000 +++ b/finch/finch.c Sat Mar 19 19:38:55 2011 +0000 @@ -334,29 +334,6 @@ /* We don't want debug-messages to show up and corrupt the display */ purple_debug_set_enabled(debug_enabled); - /* If we're using a custom configuration directory, we - * do NOT want to migrate, or weird things will happen. */ - if (opt_config_dir_arg == NULL) - { - if (!purple_core_migrate()) - { - char *old = g_strconcat(purple_home_dir(), - G_DIR_SEPARATOR_S ".gaim", NULL); - char *text = g_strdup_printf(_( - "%s encountered errors migrating your settings " - "from %s to %s. Please investigate and complete the " - "migration by hand. Please report this error at http://developer.pidgin.im"), _("Finch"), - old, purple_user_dir()); - - g_free(old); - - purple_print_utf8_to_console(stderr, text); - g_free(text); - - return 0; - } - } - purple_core_set_ui_ops(gnt_core_get_ui_ops()); purple_eventloop_set_ui_ops(gnt_eventloop_get_ui_ops()); purple_idle_set_ui_ops(finch_idle_get_ui_ops());
--- a/finch/gntprefs.c Thu Mar 17 08:00:18 2011 +0000 +++ b/finch/gntprefs.c Sat Mar 19 19:38:55 2011 +0000 @@ -62,14 +62,6 @@ void finch_prefs_update_old() { - const char *str = NULL; - - purple_prefs_rename("/gaim/gnt", "/finch"); - purple_prefs_rename("/purple/gnt", "/finch"); - - if ((str = purple_prefs_get_string("/purple/away/idle_reporting")) && - strcmp(str, "gaim") == 0) - purple_prefs_set_string("/purple/away/idle_reporting", "purple"); } typedef struct
--- a/gaim-uninstalled.pc.in Thu Mar 17 08:00:18 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ -datarootdir=@datarootdir@ -datadir=@datadir@ -sysconfdir=@sysconfdir@ - -Name: Pidgin (Gaim compatibility) -Description: Pidgin is a GTK2-based instant messenger application. -Version: @VERSION@ -Requires: glib-2.0 -Cflags: -I${pc_top_builddir}/${pcfiledir}/libpurple -I${pc_top_builddir}/${pcfiledir}/pidgin -Libs: ${pc_top_builddir}/${pcfiledir}/libpurple/libpurple.la
--- a/gaim.pc.in Thu Mar 17 08:00:18 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ -datarootdir=@datarootdir@ -datadir=@datadir@ -sysconfdir=@sysconfdir@ - -Name: Pidgin (Gaim compatibility) -Description: Pidgin is a GTK2-based instant messenger application. -Version: @VERSION@ -Requires: glib-2.0 -Cflags: -I${includedir}/libpurple -Libs: -L${libdir} -lpurple
--- a/libpurple/account.c Thu Mar 17 08:00:18 2011 +0000 +++ b/libpurple/account.c Sat Mar 19 19:38:55 2011 +0000 @@ -921,15 +921,6 @@ { purple_buddy_icons_set_account_icon(ret, (guchar *)contents, len); } - else - { - /* Try to see if the icon got left behind in the old cache. */ - g_free(filename); - filename = g_build_filename(g_get_home_dir(), ".gaim", "icons", data, NULL); - if (g_file_get_contents(filename, &contents, &len, NULL)) { - purple_buddy_icons_set_account_icon(ret, (guchar*)contents, len); - } - } g_free(filename); g_free(data);
--- a/libpurple/buddyicon.c Thu Mar 17 08:00:18 2011 +0000 +++ b/libpurple/buddyicon.c Sat Mar 19 19:38:55 2011 +0000 @@ -105,9 +105,6 @@ /** "Should icons be cached to disk?" */ static gboolean icon_caching = TRUE; -/* For ~/.gaim to ~/.purple migration. */ -static char *old_icons_dir = NULL; - static void delete_buddy_icon_settings(PurpleBlistNode *node, const char *setting_name); /* @@ -977,12 +974,6 @@ return purple_buddy_icons_node_set_custom_icon((PurpleBlistNode*)contact, icon_data, icon_len); } -void -_purple_buddy_icon_set_old_icons_dir(const char *dirname) -{ - old_icons_dir = g_strdup(dirname); -} - static void delete_buddy_icon_settings(PurpleBlistNode *node, const char *setting_name) { @@ -995,133 +986,6 @@ } } -static void -migrate_buddy_icon(PurpleBlistNode *node, const char *setting_name, - const char *dirname, const char *filename) -{ - char *path; - - if (filename[0] != '/') - { - path = g_build_filename(dirname, filename, NULL); - if (g_file_test(path, G_FILE_TEST_EXISTS)) - { - g_free(path); - return; - } - g_free(path); - - path = g_build_filename(old_icons_dir, filename, NULL); - } - else - path = g_strdup(filename); - - if (g_file_test(path, G_FILE_TEST_EXISTS)) - { - guchar *icon_data; - size_t icon_len; - FILE *file; - char *new_filename; - - if (!read_icon_file(path, &icon_data, &icon_len)) - { - g_free(path); - delete_buddy_icon_settings(node, setting_name); - return; - } - - if (icon_data == NULL || icon_len <= 0) - { - /* This really applies to the icon_len check. - * icon_data should never be NULL if - * read_icon_file() returns TRUE. */ - purple_debug_error("buddyicon", "Empty buddy icon file: %s\n", path); - delete_buddy_icon_settings(node, setting_name); - g_free(path); - return; - } - - g_free(path); - - new_filename = purple_util_get_image_filename(icon_data, icon_len); - if (new_filename == NULL) - { - purple_debug_error("buddyicon", - "New icon filename is NULL. This should never happen! " - "The old filename was: %s\n", path); - delete_buddy_icon_settings(node, setting_name); - g_return_if_reached(); - } - - path = g_build_filename(dirname, new_filename, NULL); - if ((file = g_fopen(path, "wb")) != NULL) - { - if (!fwrite(icon_data, icon_len, 1, file)) - { - purple_debug_error("buddyicon", "Error writing %s: %s\n", - path, g_strerror(errno)); - } - else - purple_debug_info("buddyicon", "Wrote migrated cache file: %s\n", path); - - fclose(file); - } - else - { - purple_debug_error("buddyicon", "Unable to create file %s: %s\n", - path, g_strerror(errno)); - g_free(new_filename); - g_free(path); - - delete_buddy_icon_settings(node, setting_name); - return; - } - g_free(path); - - purple_blist_node_set_string(node, - setting_name, - new_filename); - ref_filename(new_filename); - - g_free(new_filename); - - if (purple_strequal(setting_name, "buddy_icon")) - { - const char *hash; - - hash = purple_blist_node_get_string(node, "avatar_hash"); - if (hash != NULL) - { - purple_blist_node_set_string(node, "icon_checksum", hash); - purple_blist_node_remove_setting(node, "avatar_hash"); - } - else - { - PurpleAccount *account = purple_buddy_get_account((PurpleBuddy *)node); - const char *prpl_id = purple_account_get_protocol_id(account); - - if (g_str_equal(prpl_id, "prpl-yahoo") || g_str_equal(prpl_id, "prpl-yahoojp")) - { - int checksum = purple_blist_node_get_int(node, "icon_checksum"); - if (checksum != 0) - { - char *checksum_str = g_strdup_printf("%i", checksum); - purple_blist_node_remove_setting(node, "icon_checksum"); - purple_blist_node_set_string(node, "icon_checksum", checksum_str); - g_free(checksum_str); - } - } - } - } - } - else - { - purple_debug_error("buddyicon", "Old icon file doesn't exist: %s\n", path); - delete_buddy_icon_settings(node, setting_name); - g_free(path); - } -} - void _purple_buddy_icons_account_loaded_cb() { @@ -1153,22 +1017,6 @@ PurpleBlistNode *node = purple_blist_get_root(); const char *dirname = purple_buddy_icons_get_cache_dir(); - /* Doing this once here saves having to check it inside a loop. */ - if (old_icons_dir != NULL) - { - if (!g_file_test(dirname, G_FILE_TEST_IS_DIR)) - { - purple_debug_info("buddyicon", "Creating icon cache directory.\n"); - - if (g_mkdir(dirname, S_IRUSR | S_IWUSR | S_IXUSR) < 0) - { - purple_debug_error("buddyicon", - "Unable to create directory %s: %s\n", - dirname, g_strerror(errno)); - } - } - } - while (node != NULL) { if (PURPLE_BLIST_NODE_IS_BUDDY(node)) @@ -1178,26 +1026,17 @@ filename = purple_blist_node_get_string(node, "buddy_icon"); if (filename != NULL) { - if (old_icons_dir != NULL) + char *path = g_build_filename(dirname, filename, NULL); + if (!g_file_test(path, G_FILE_TEST_EXISTS)) { - migrate_buddy_icon(node, - "buddy_icon", - dirname, filename); + purple_blist_node_remove_setting(node, + "buddy_icon"); + purple_blist_node_remove_setting(node, + "icon_checksum"); } else - { - char *path = g_build_filename(dirname, filename, NULL); - if (!g_file_test(path, G_FILE_TEST_EXISTS)) - { - purple_blist_node_remove_setting(node, - "buddy_icon"); - purple_blist_node_remove_setting(node, - "icon_checksum"); - } - else - ref_filename(filename); - g_free(path); - } + ref_filename(filename); + g_free(path); } } else if (PURPLE_BLIST_NODE_IS_CONTACT(node) || @@ -1209,24 +1048,15 @@ filename = purple_blist_node_get_string(node, "custom_buddy_icon"); if (filename != NULL) { - if (old_icons_dir != NULL) + char *path = g_build_filename(dirname, filename, NULL); + if (!g_file_test(path, G_FILE_TEST_EXISTS)) { - migrate_buddy_icon(node, - "custom_buddy_icon", - dirname, filename); + purple_blist_node_remove_setting(node, + "custom_buddy_icon"); } else - { - char *path = g_build_filename(dirname, filename, NULL); - if (!g_file_test(path, G_FILE_TEST_EXISTS)) - { - purple_blist_node_remove_setting(node, - "custom_buddy_icon"); - } - else - ref_filename(filename); - g_free(path); - } + ref_filename(filename); + g_free(path); } } node = purple_blist_node_next(node, TRUE); @@ -1298,11 +1128,9 @@ g_hash_table_destroy(icon_data_cache); g_hash_table_destroy(icon_file_cache); g_hash_table_destroy(pointer_icon_cache); - g_free(old_icons_dir); g_free(cache_dir); cache_dir = NULL; - old_icons_dir = NULL; } void purple_buddy_icon_get_scale_size(PurpleBuddyIconSpec *spec, int *width, int *height)
--- a/libpurple/core.c Thu Mar 17 08:00:18 2011 +0000 +++ b/libpurple/core.c Sat Mar 19 19:38:55 2011 +0000 @@ -371,386 +371,6 @@ return is_single_instance; } -static gboolean -move_and_symlink_dir(const char *path, const char *basename, const char *old_base, const char *new_base, const char *relative) -{ - char *new_name = g_build_filename(new_base, basename, NULL); -#ifndef _WIN32 - char *old_name; -#endif - if (g_rename(path, new_name)) - { - purple_debug_error("core", "Error renaming %s to %s: %s. Please report this at " PURPLE_DEVEL_WEBSITE "\n", - path, new_name, g_strerror(errno)); - g_free(new_name); - return FALSE; - } - g_free(new_name); - -#ifndef _WIN32 - /* NOTE: This new_name is relative. */ - new_name = g_build_filename(relative, basename, NULL); - old_name = g_build_filename(old_base, basename, NULL); - if (symlink(new_name, old_name)) - { - purple_debug_warning("core", "Error symlinking %s to %s: %s. Please report this at " PURPLE_DEVEL_WEBSITE "\n", - old_name, new_name, g_strerror(errno)); - } - g_free(old_name); - g_free(new_name); -#endif - - return TRUE; -} - -gboolean -purple_core_migrate(void) -{ - const char *user_dir = purple_user_dir(); - char *old_user_dir = g_strconcat(purple_home_dir(), - G_DIR_SEPARATOR_S ".gaim", NULL); - char *status_file; - FILE *fp; - GDir *dir; - GError *err; - const char *entry; -#ifndef _WIN32 - char *logs_dir; -#endif - char *old_icons_dir; - - if (!g_file_test(old_user_dir, G_FILE_TEST_EXISTS)) - { - /* ~/.gaim doesn't exist, so there's nothing to migrate. */ - g_free(old_user_dir); - return TRUE; - } - - status_file = g_strconcat(user_dir, G_DIR_SEPARATOR_S "migrating", NULL); - - if (g_file_test(user_dir, G_FILE_TEST_EXISTS)) - { - /* If we're here, we have both ~/.gaim and .purple. */ - - if (!g_file_test(status_file, G_FILE_TEST_EXISTS)) - { - /* There's no "migrating" status file, - * so ~/.purple is all up to date. */ - g_free(status_file); - g_free(old_user_dir); - return TRUE; - } - } - - /* If we're here, it's time to migrate from ~/.gaim to ~/.purple. */ - - /* Ensure the user directory exists */ - if (!g_file_test(user_dir, G_FILE_TEST_IS_DIR)) - { - if (g_mkdir(user_dir, S_IRUSR | S_IWUSR | S_IXUSR) == -1) - { - purple_debug_error("core", "Error creating directory %s: %s. Please report this at " PURPLE_DEVEL_WEBSITE "\n", - user_dir, g_strerror(errno)); - g_free(status_file); - g_free(old_user_dir); - return FALSE; - } - } - - /* This writes ~/.purple/migrating, which allows us to detect - * incomplete migrations and properly retry. */ - if (!(fp = g_fopen(status_file, "w"))) - { - purple_debug_error("core", "Error opening file %s for writing: %s. Please report this at " PURPLE_DEVEL_WEBSITE "\n", - status_file, g_strerror(errno)); - g_free(status_file); - g_free(old_user_dir); - return FALSE; - } - fclose(fp); - - /* Open ~/.gaim so we can loop over its contents. */ - err = NULL; - if (!(dir = g_dir_open(old_user_dir, 0, &err))) - { - purple_debug_error("core", "Error opening directory %s: %s. Please report this at " PURPLE_DEVEL_WEBSITE "\n", - status_file, - (err ? err->message : "Unknown error")); - if (err) - g_error_free(err); - g_free(status_file); - g_free(old_user_dir); - return FALSE; - } - - /* Loop over the contents of ~/.gaim */ - while ((entry = g_dir_read_name(dir))) - { - char *name = g_build_filename(old_user_dir, entry, NULL); - -#ifndef _WIN32 - /* Deal with symlinks... */ - if (g_file_test(name, G_FILE_TEST_IS_SYMLINK)) - { - /* We're only going to duplicate a logs symlink. */ - if (purple_strequal(entry, "logs")) - { - char *link; - err = NULL; - - if ((link = g_file_read_link(name, &err)) == NULL) - { - char *name_utf8 = g_filename_to_utf8(name, -1, NULL, NULL, NULL); - purple_debug_error("core", "Error reading symlink %s: %s. Please report this at " PURPLE_DEVEL_WEBSITE "\n", - name_utf8 ? name_utf8 : name, err->message); - g_free(name_utf8); - g_error_free(err); - g_free(name); - g_dir_close(dir); - g_free(status_file); - g_free(old_user_dir); - return FALSE; - } - - logs_dir = g_build_filename(user_dir, "logs", NULL); - - if (purple_strequal(link, "../.purple/logs") || - purple_strequal(link, logs_dir)) - { - /* If the symlink points to the new directory, we're - * likely just trying again after a failed migration, - * so there's no need to fail here. */ - g_free(link); - g_free(logs_dir); - continue; - } - - /* In case we are trying again after a failed migration, we need - * to unlink any existing symlink. If it's a directory, this - * will fail, and so will the symlink below, which is good - * because the user should sort things out. */ - g_unlink(logs_dir); - - /* Relative links will most likely still be - * valid from ~/.purple, though it's not - * guaranteed. Oh well. */ - if (symlink(link, logs_dir)) - { - purple_debug_error("core", "Error symlinking %s to %s: %s. Please report this at " PURPLE_DEVEL_WEBSITE "\n", - logs_dir, link, g_strerror(errno)); - g_free(link); - g_free(name); - g_free(logs_dir); - g_dir_close(dir); - g_free(status_file); - g_free(old_user_dir); - return FALSE; - } - - g_free(link); - g_free(logs_dir); - continue; - } - - /* Ignore all other symlinks. */ - continue; - } -#endif - - /* Deal with directories... */ - if (g_file_test(name, G_FILE_TEST_IS_DIR)) - { - if (purple_strequal(entry, "icons")) - { - /* This is a special case for the Album plugin, which - * stores data in the icons folder. We're not copying - * the icons directory over because previous bugs - * meant that it filled up with junk for many users. - * This is a great time to purge it. */ - - GDir *icons_dir; - char *new_icons_dir; - const char *icons_entry; - - err = NULL; - if (!(icons_dir = g_dir_open(name, 0, &err))) - { - purple_debug_error("core", "Error opening directory %s: %s. Please report this at " PURPLE_DEVEL_WEBSITE "\n", - name, - (err ? err->message : "Unknown error")); - if (err) - g_error_free(err); - g_free(name); - g_dir_close(dir); - g_free(status_file); - g_free(old_user_dir); - return FALSE; - } - - new_icons_dir = g_build_filename(user_dir, "icons", NULL); - /* Ensure the new icon directory exists */ - if (!g_file_test(new_icons_dir, G_FILE_TEST_IS_DIR)) - { - if (g_mkdir(new_icons_dir, S_IRUSR | S_IWUSR | S_IXUSR) == -1) - { - purple_debug_error("core", "Error creating directory %s: %s. Please report this at " PURPLE_DEVEL_WEBSITE "\n", - new_icons_dir, g_strerror(errno)); - g_free(new_icons_dir); - g_dir_close(icons_dir); - g_free(name); - g_dir_close(dir); - g_free(status_file); - g_free(old_user_dir); - return FALSE; - } - } - - while ((icons_entry = g_dir_read_name(icons_dir))) - { - char *icons_name = g_build_filename(name, icons_entry, NULL); - - if (g_file_test(icons_name, G_FILE_TEST_IS_DIR)) - { - if (!move_and_symlink_dir(icons_name, icons_entry, - name, new_icons_dir, "../../.purple/icons")) - { - g_free(icons_name); - g_free(new_icons_dir); - g_dir_close(icons_dir); - g_free(name); - g_dir_close(dir); - g_free(status_file); - g_free(old_user_dir); - return FALSE; - } - } - g_free(icons_name); - } - - g_dir_close(icons_dir); - } - else if (purple_strequal(entry, "plugins")) - { - /* Do nothing, because we broke plugin compatibility. - * This means that the plugins directory gets left behind. */ - } - else - { - /* All other directories are moved and symlinked. */ - if (!move_and_symlink_dir(name, entry, old_user_dir, user_dir, "../.purple")) - { - g_free(name); - g_dir_close(dir); - g_free(status_file); - g_free(old_user_dir); - return FALSE; - } - } - } - else if (g_file_test(name, G_FILE_TEST_IS_REGULAR)) - { - /* Regular files are copied. */ - - char *new_name; - FILE *new_file; - - if (!(fp = g_fopen(name, "rb"))) - { - purple_debug_error("core", "Error opening file %s for reading: %s. Please report this at " PURPLE_DEVEL_WEBSITE "\n", - name, g_strerror(errno)); - g_free(name); - g_dir_close(dir); - g_free(status_file); - g_free(old_user_dir); - return FALSE; - } - - new_name = g_build_filename(user_dir, entry, NULL); - if (!(new_file = g_fopen(new_name, "wb"))) - { - purple_debug_error("core", "Error opening file %s for writing: %s. Please report this at " PURPLE_DEVEL_WEBSITE "\n", - new_name, g_strerror(errno)); - fclose(fp); - g_free(new_name); - g_free(name); - g_dir_close(dir); - g_free(status_file); - g_free(old_user_dir); - return FALSE; - } - - while (!feof(fp)) - { - unsigned char buf[256]; - size_t size; - - size = fread(buf, 1, sizeof(buf), fp); - if (size != sizeof(buf) && !feof(fp)) - { - purple_debug_error("core", "Error reading %s: %s. Please report this at " PURPLE_DEVEL_WEBSITE "\n", - name, g_strerror(errno)); - fclose(new_file); - fclose(fp); - g_free(new_name); - g_free(name); - g_dir_close(dir); - g_free(status_file); - g_free(old_user_dir); - return FALSE; - } - - if (!fwrite(buf, size, 1, new_file) && ferror(new_file) != 0) - { - purple_debug_error("core", "Error writing %s: %s. Please report this at " PURPLE_DEVEL_WEBSITE "\n", - new_name, g_strerror(errno)); - fclose(new_file); - fclose(fp); - g_free(new_name); - g_free(name); - g_dir_close(dir); - g_free(status_file); - g_free(old_user_dir); - return FALSE; - } - } - - if (fclose(new_file)) - { - purple_debug_error("core", "Error writing: %s: %s. Please report this at " PURPLE_DEVEL_WEBSITE "\n", - new_name, g_strerror(errno)); - } - if (fclose(fp)) - { - purple_debug_warning("core", "Error closing %s: %s\n", - name, g_strerror(errno)); - } - g_free(new_name); - } - else - purple_debug_warning("core", "Not a regular file or directory: %s\n", name); - - g_free(name); - } - - /* The migration was successful, so delete the status file. */ - if (g_unlink(status_file)) - { - purple_debug_error("core", "Error unlinking file %s: %s. Please report this at " PURPLE_DEVEL_WEBSITE "\n", - status_file, g_strerror(errno)); - g_free(status_file); - return FALSE; - } - - old_icons_dir = g_build_filename(old_user_dir, "icons", NULL); - _purple_buddy_icon_set_old_icons_dir(old_icons_dir); - g_free(old_icons_dir); - - g_free(old_user_dir); - - g_free(status_file); - return TRUE; -} - GHashTable* purple_core_get_ui_info() { PurpleCoreUiOps *ops = purple_core_get_ui_ops();
--- a/libpurple/core.h Thu Mar 17 08:00:18 2011 +0000 +++ b/libpurple/core.h Sat Mar 19 19:38:55 2011 +0000 @@ -156,17 +156,6 @@ PurpleCoreUiOps *purple_core_get_ui_ops(void); /** - * Migrates from <tt>.gaim</tt> to <tt>.purple</tt>. - * - * UIs <strong>must not</strong> call this if they have been told to use a - * custom user directory. - * - * @return A boolean indicating success or migration failure. On failure, - * the application must display an error to the user and then exit. - */ -gboolean purple_core_migrate(void); - -/** * Ensures that only one instance is running. If libpurple is built with D-Bus * support, this checks if another process owns the libpurple bus name and if * so whether that process is using the same configuration directory as this
--- a/libpurple/internal.h Thu Mar 17 08:00:18 2011 +0000 +++ b/libpurple/internal.h Sat Mar 19 19:38:55 2011 +0000 @@ -176,12 +176,6 @@ void _purple_buddy_icons_blist_loaded_cb(void); -/* This is for the purple_core_migrate() code to tell the buddy - * icon subsystem about the old icons directory so it can - * migrate any icons in use. */ -void -_purple_buddy_icon_set_old_icons_dir(const char *dirname); - /** * Creates a connection to the specified account and either connects * or attempts to register a new account. If you are logging in,
--- a/libpurple/plugins/fortuneprofile.pl Thu Mar 17 08:00:18 2011 +0000 +++ b/libpurple/plugins/fortuneprofile.pl Sat Mar 19 19:38:55 2011 +0000 @@ -51,7 +51,7 @@ summary => "Sets your AIM profile to a fortune (with a header and footer of your choice).", description => "Sets your AIM profile to a fortune (with a header and footer of your choice).", author => "Sean Egan <seanegan\@gmail.com>", - url => "http://gaim.sf.net/", + url => "http://pidgin.im/", load => "plugin_load" );
--- a/libpurple/protocols/gg/lib/libgadu.h Thu Mar 17 08:00:18 2011 +0000 +++ b/libpurple/protocols/gg/lib/libgadu.h Sat Mar 19 19:38:55 2011 +0000 @@ -33,10 +33,11 @@ #ifndef __GG_LIBGADU_H #define __GG_LIBGADU_H -#ifdef __cplusplus #ifdef _WIN32 #pragma pack(push, 1) #endif + +#ifdef __cplusplus extern "C" { #endif @@ -2056,10 +2057,11 @@ #ifdef __cplusplus } +#endif + #ifdef _WIN32 #pragma pack(pop) #endif -#endif #endif /* __GG_LIBGADU_H */
--- a/libpurple/protocols/msn/msg.c Thu Mar 17 08:00:18 2011 +0000 +++ b/libpurple/protocols/msn/msg.c Sat Mar 19 19:38:55 2011 +0000 @@ -613,7 +613,8 @@ if (msg->msnslp_message) { - msn_slpmsgpart_to_string(msg->part, str); + if (msg->part) + msn_slpmsgpart_to_string(msg->part, str); if (purple_debug_is_verbose() && body != NULL) {
--- a/libpurple/protocols/msn/notification.c Thu Mar 17 08:00:18 2011 +0000 +++ b/libpurple/protocols/msn/notification.c Sat Mar 19 19:38:55 2011 +0000 @@ -1186,34 +1186,40 @@ id = xmlnode_get_attrib(msg, "id"); - if (id && !strcmp(id, "407")) { + if (id && strcmp(id, "1")) { PurpleConversation *conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_ANY, who, gc->account); if (conv != NULL) { - purple_conversation_write(conv, NULL, - _("Mobile message was not sent because it was too long."), + const char *error; + if (!strcmp(id, "407")) + error = _("Mobile message was not sent because it was too long."); + else + error = _("Mobile message was not sent because an unknown error occurred."); + + purple_conversation_write(conv, NULL, error, PURPLE_MESSAGE_ERROR, time(NULL)); if ((id = xmlnode_get_attrib(payloadNode, "id")) != NULL) { unsigned int trId = atol(id); MsnTransaction *trans; - MsnMessage *msg; trans = msn_history_find(cmdproc->history, trId); - msg = (MsnMessage *)trans->data; - - if (msg) { - char *body_str = msn_message_to_string(msg); - char *body_enc = g_markup_escape_text(body_str, -1); - - purple_conversation_write(conv, NULL, body_enc, - PURPLE_MESSAGE_RAW, time(NULL)); - - g_free(body_str); - g_free(body_enc); - msn_message_unref(msg); - trans->data = NULL; + if (trans) { + MsnMessage *msg = (MsnMessage *)trans->data; + + if (msg) { + char *body_str = msn_message_to_string(msg); + char *body_enc = g_markup_escape_text(body_str, -1); + + purple_conversation_write(conv, NULL, body_enc, + PURPLE_MESSAGE_RAW, time(NULL)); + + g_free(body_str); + g_free(body_enc); + msn_message_unref(msg); + trans->data = NULL; + } } } }
--- a/libpurple/protocols/msn/oim.c Thu Mar 17 08:00:18 2011 +0000 +++ b/libpurple/protocols/msn/oim.c Sat Mar 19 19:38:55 2011 +0000 @@ -175,7 +175,8 @@ if (faultcode_str) { if (g_str_equal(faultcode_str, "q0:BadContextToken") || - g_str_equal(faultcode_str, "AuthenticationFailed")) + g_str_equal(faultcode_str, "AuthenticationFailed") || + g_str_equal(faultcode_str, "s:AuthenticationFailed")) need_token_update = TRUE; else if (g_str_equal(faultcode_str, "q0:AuthenticationFailed") && xmlnode_get_child(fault, "detail/RequiredAuthPolicy") != NULL)
--- a/libpurple/protocols/msn/switchboard.c Thu Mar 17 08:00:18 2011 +0000 +++ b/libpurple/protocols/msn/switchboard.c Sat Mar 19 19:38:55 2011 +0000 @@ -726,6 +726,7 @@ g_return_if_fail(msg != NULL); msg_error_helper(cmdproc, msg, MSN_MSG_ERROR_NAK); + cmd->trans->data = NULL; } static void @@ -743,6 +744,7 @@ if (swboard) swboard->ack_list = g_list_remove(swboard->ack_list, msg); msn_message_unref(msg); + cmd->trans->data = NULL; } static void
--- a/libpurple/purple-url-handler Thu Mar 17 08:00:18 2011 +0000 +++ b/libpurple/purple-url-handler Sat Mar 19 19:38:55 2011 +0000 @@ -73,7 +73,7 @@ def findaccount(protocolname, accountname="", matcher=None): if matcher: for account in cpurple.PurpleAccountsGetAll(): - if (protocolname != cpurple.PurpleAccountGetProtocolID(account)) or \ + if (protocolname != cpurple.PurpleAccountGetProtocolId(account)) or \ (accountname != "" and accountname != cpurple.PurpleAccountGetUsername(account)): continue if matcher(account): @@ -188,7 +188,7 @@ print "Invalid irc URI: %s" % uri return - server = urllib.unquote_plus(match.group(2)) or "" + server = urllib.unquote_plus(match.group(2) or "") target = match.group(3) or "" query = match.group(5) or ""
--- a/pidgin/gtkconv.c Thu Mar 17 08:00:18 2011 +0000 +++ b/pidgin/gtkconv.c Sat Mar 19 19:38:55 2011 +0000 @@ -6767,7 +6767,7 @@ atk_object_set_description(accessibility_obj, _("New Event")); style = "tab-label-event"; } else { - style = NULL; + style = "tab-label"; } gtk_widget_set_name(gtkconv->tab_label, style);
--- a/pidgin/gtkmain.c Thu Mar 17 08:00:18 2011 +0000 +++ b/pidgin/gtkmain.c Sat Mar 19 19:38:55 2011 +0000 @@ -496,7 +496,6 @@ int opt; gboolean gui_check; gboolean debug_enabled; - gboolean migration_failed = FALSE; GList *active_accounts; struct stat st; @@ -728,16 +727,6 @@ purple_debug_set_enabled(debug_enabled); - /* If we're using a custom configuration directory, we - * do NOT want to migrate, or weird things will happen. */ - if (opt_config_dir_arg == NULL) - { - if (!purple_core_migrate()) - { - migration_failed = TRUE; - } - } - search_path = g_build_filename(purple_user_dir(), "gtkrc-2.0", NULL); gtk_rc_add_default_file(search_path); g_free(search_path); @@ -763,37 +752,6 @@ winpidgin_init(hint); #endif - if (migration_failed) - { - char *old = g_strconcat(purple_home_dir(), - G_DIR_SEPARATOR_S ".gaim", NULL); - const char *text = _( - "%s encountered errors migrating your settings " - "from %s to %s. Please investigate and complete the " - "migration by hand. Please report this error at http://developer.pidgin.im"); - GtkWidget *dialog; - - dialog = gtk_message_dialog_new(NULL, - 0, - GTK_MESSAGE_ERROR, - GTK_BUTTONS_CLOSE, - text, PIDGIN_NAME, - old, purple_user_dir()); - g_free(old); - - g_signal_connect_swapped(dialog, "response", - G_CALLBACK(gtk_main_quit), NULL); - - gtk_widget_show_all(dialog); - - gtk_main(); - -#ifdef HAVE_SIGNAL_H - g_free(segfault_message); -#endif - return 0; - } - purple_core_set_ui_ops(pidgin_core_get_ui_ops()); purple_eventloop_set_ui_ops(pidgin_eventloop_get_ui_ops());
--- a/pidgin/gtkprefs.c Thu Mar 17 08:00:18 2011 +0000 +++ b/pidgin/gtkprefs.c Sat Mar 19 19:38:55 2011 +0000 @@ -2857,8 +2857,6 @@ { const char *str = NULL; - purple_prefs_rename("/gaim/gtk", PIDGIN_PREFS_ROOT); - /* Rename some old prefs */ purple_prefs_rename(PIDGIN_PREFS_ROOT "/logging/log_ims", "/purple/logging/log_ims"); purple_prefs_rename(PIDGIN_PREFS_ROOT "/logging/log_chats", "/purple/logging/log_chats"); @@ -2882,12 +2880,6 @@ purple_prefs_remove(PIDGIN_PREFS_ROOT "/browsers/command"); } - /* this string pref moved into the core, try to be friendly */ - purple_prefs_rename(PIDGIN_PREFS_ROOT "/idle/reporting_method", "/purple/away/idle_reporting"); - if ((str = purple_prefs_get_string("/purple/away/idle_reporting")) && - strcmp(str, "gaim") == 0) - purple_prefs_set_string("/purple/away/idle_reporting", "purple"); - /* Remove some no-longer-used prefs */ purple_prefs_remove(PIDGIN_PREFS_ROOT "/blist/auto_expand_contacts"); purple_prefs_remove(PIDGIN_PREFS_ROOT "/blist/button_style");
--- a/pidgin/gtkutils.h Thu Mar 17 08:00:18 2011 +0000 +++ b/pidgin/gtkutils.h Sat Mar 19 19:38:55 2011 +0000 @@ -364,7 +364,7 @@ * Add autocompletion of screenames to an entry, supporting a filtering function. * * @param entry The GtkEntry on which to setup autocomplete. - * @param optmenu A menu for accounts, returned by gaim_gtk_account_option_menu_new(). + * @param optmenu A menu for accounts, returned by pidgin_account_option_menu_new(). * If @a optmenu is not @c NULL, it'll be updated when a username is chosen * from the autocomplete list. * @param filter_func A function for checking if an autocomplete entry
--- a/po/l10n.xsl Thu Mar 17 08:00:18 2011 +0000 +++ b/po/l10n.xsl Sat Mar 19 19:38:55 2011 +0000 @@ -12,7 +12,6 @@ <head> <title><xsl:value-of select='@name'/> translation statistics</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <!-- <link rel="Stylesheet" href="/gaim.css" type="text/css" media="screen" /> --> <style type="text/css"> .bargraph { width: 200px;