pidgin/pidgin

e69cbf7921ec
Parents 5375c1d58c50
Children 7bd5bff547b4
Add an out parameter for an error to purple_core_init

Testing Done:
Ran the unit tests, pidgin3 and finch3 without issue.

Bugs closed: PIDGIN-17699

Reviewed at https://reviews.imfreedom.org/r/2004/
--- a/finch/libfinch.c Mon Oct 31 04:02:09 2022 -0500
+++ b/finch/libfinch.c Mon Oct 31 22:50:20 2022 -0500
@@ -162,11 +162,13 @@
purple_idle_set_ui(finch_idle_new());
- if (!purple_core_init(finch_ui_new()))
+ if (!purple_core_init(finch_ui_new(), &error))
{
fprintf(stderr,
- "Initialization of the Purple core failed. Dumping core.\n"
- "Please report this!\n");
+ _("Initialization of the libpurple core failed. %s\n"
+ "Aborting!\nPlease report this!\n"),
+ (error != NULL) ? error->message : "unknown error");
+ g_clear_error(&error);
abort();
}
--- a/libpurple/core.c Mon Oct 31 04:02:09 2022 -0500
+++ b/libpurple/core.c Mon Oct 31 22:50:20 2022 -0500
@@ -92,7 +92,7 @@
}
gboolean
-purple_core_init(PurpleUi *ui) {
+purple_core_init(PurpleUi *ui, G_GNUC_UNUSED GError **error) {
PurpleCore *core;
g_return_val_if_fail(PURPLE_IS_UI(ui), FALSE);
--- a/libpurple/core.h Mon Oct 31 04:02:09 2022 -0500
+++ b/libpurple/core.h Mon Oct 31 22:50:20 2022 -0500
@@ -38,14 +38,13 @@
/**
* purple_core_init:
* @ui: (transfer full): The [class@Purple.Ui] of the UI using the core.
+ * @error: (optional) (nullable): A return address for a [type@GLib.GError].
*
* Initializes the core of purple.
*
- * This will setup preferences for all the core subsystems.
- *
- * Returns: %TRUE if successful, or %FALSE otherwise.
+ * Returns: %TRUE if successful, otherwise %FALSE with @error potentially set.
*/
-gboolean purple_core_init(PurpleUi *ui);
+gboolean purple_core_init(PurpleUi *ui, GError **error);
/**
* purple_core_quit:
--- a/libpurple/tests/test_ui.c Mon Oct 31 04:02:09 2022 -0500
+++ b/libpurple/tests/test_ui.c Mon Oct 31 22:50:20 2022 -0500
@@ -25,6 +25,7 @@
#include <glib.h>
#include <glib/gprintf.h>
+#include <glib/gi18n-lib.h>
#define G_SETTINGS_ENABLE_BACKEND
#include <gio/gsettingsbackend.h>
@@ -151,11 +152,13 @@
/* Now that all the essential stuff has been set, let's try to init the core. It's
* necessary to provide a non-NULL name for the current ui to the core. This name
* is used by stuff that depends on this ui, for example the ui-specific plugins. */
- if (!purple_core_init(ui)) {
+ if (!purple_core_init(ui, &error)) {
/* Initializing the core failed. Terminate. */
fprintf(stderr,
- "libpurple initialization failed. Dumping core.\n"
- "Please report this!\n");
+ _("Initialization of the libpurple core failed. %s\n"
+ "Aborting!\nPlease report this!\n"),
+ (error != NULL) ? error->message : "unknown error");
+ g_clear_error(&error);
abort();
}
--- a/pidgin/pidginapplication.c Mon Oct 31 04:02:09 2022 -0500
+++ b/pidgin/pidginapplication.c Mon Oct 31 22:50:20 2022 -0500
@@ -746,6 +746,7 @@
static void
pidgin_application_startup(GApplication *application) {
PurpleAccountManager *manager = NULL;
+ GError *error = NULL;
GList *active_accounts = NULL;
gpointer handle = NULL;
@@ -780,10 +781,12 @@
winpidgin_init();
#endif
- if(!purple_core_init(pidgin_ui_new())) {
+ if(!purple_core_init(pidgin_ui_new(), &error)) {
fprintf(stderr,
- _("Initialization of the libpurple core failed. Aborting!\n"
- "Please report this!\n"));
+ _("Initialization of the libpurple core failed. %s\n"
+ "Aborting!\nPlease report this!\n"),
+ (error != NULL) ? error->message : "unknown error");
+ g_clear_error(&error);
g_abort();
}