/soc/2015/mmcc/main: ab74d22a705b: Replace homestyle purple_util...

Michael McConville <[email protected]>
Newsgroups gmane.comp.gnome.gaim.cvs
Message-ID <[email protected]>
Changeset: ab74d22a705bc2f7d2d92090e99c90a71b8a51ec
Author:	 Michael McConville <[email protected]>
Date:	 2015-08-13 12:43 -0400
Branch:	 default
URL: https://hg.pidgin.im/soc/2015/mmcc/main/rev/ab74d22a705b

Description:

Replace homestyle purple_util_write_data_to_file_absolute() with glib's g_file_set_contents()

diffstat:

 finch/gntplugin.c                       |    5 +-
 libpurple/image.c                       |   13 +-
 libpurple/plugins/ssl/ssl-gnutls.c      |   10 +-
 libpurple/plugins/ssl/ssl-nss.c         |   10 +-
 libpurple/protocols/gg/gg.c             |    6 +-
 libpurple/protocols/msn/slplink.c       |    6 +-
 libpurple/protocols/mxit/formcmds.c     |    5 +-
 libpurple/protocols/mxit/splashscreen.c |    5 +-
 libpurple/util.c                        |  160 +------------------------------
 libpurple/util.h                        |   20 ----
 libpurple/xmlnode.c                     |    6 +-
 pidgin/gtkconv.c                        |    5 +-
 pidgin/gtkutils.c                       |    6 +-
 13 files changed, 63 insertions(+), 194 deletions(-)

diffs (truncated from 529 to 300 lines):

diff --git a/finch/gntplugin.c b/finch/gntplugin.c
--- a/finch/gntplugin.c
+++ b/finch/gntplugin.c
@@ -458,6 +458,7 @@ install_selected_file_cb(gpointer handle
 	 */
 	char *path;
 	PurplePlugin *plugin;
+	GError *err = NULL;
 
 	g_return_if_fail(plugins.window);
 
@@ -484,7 +485,8 @@ install_selected_file_cb(gpointer handle
 			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)) {
+			g_file_set_contents(path, content, length, &err);
+			if (err != NULL) {
 				purple_plugin_destroy(plugin);
 				plugin = purple_plugin_probe(path);
 				if (!plugin) {
@@ -496,6 +498,7 @@ install_selected_file_cb(gpointer handle
 			} else {
 			}
 		}
+		g_error_free(err);
 		g_free(content);
 	}
 	g_free(path);
diff --git a/libpurple/image.c b/libpurple/image.c
--- a/libpurple/image.c
+++ b/libpurple/image.c
@@ -197,13 +197,15 @@ purple_image_new_from_data(gpointer data
 	return img;
 }
 
+/* TODO: Should this now return a GError* instead? */
 gboolean
 purple_image_save(PurpleImage *image, const gchar *path)
 {
 	PurpleImagePrivate *priv = PURPLE_IMAGE_GET_PRIVATE(image);
 	gconstpointer data;
 	gsize len;
-	gboolean succ;
+	gboolean success;
+	GError *err = NULL;
 
 	g_return_val_if_fail(priv != NULL, FALSE);
 	g_return_val_if_fail(path != NULL, FALSE);
@@ -215,11 +217,14 @@ purple_image_save(PurpleImage *image, co
 	g_return_val_if_fail(data != NULL, FALSE);
 	g_return_val_if_fail(len > 0, FALSE);
 
-	succ = purple_util_write_data_to_file_absolute(path, data, len);
-	if (succ && priv->path == NULL)
+	g_file_set_contents(path, data, len, &err);
+	success = (err == NULL);
+	if (success && priv->path == NULL) {
 		priv->path = g_strdup(path);
+	}
+	g_error_free(err);
 
-	return succ;
+	return success;
 }
 
 const gchar *
diff --git a/libpurple/plugins/ssl/ssl-gnutls.c b/libpurple/plugins/ssl/ssl-gnutls.c
--- a/libpurple/plugins/ssl/ssl-gnutls.c
+++ b/libpurple/plugins/ssl/ssl-gnutls.c
@@ -884,6 +884,8 @@ x509_importcerts_from_file(const gchar *
  * @param crt      Certificate to export
  *
  * @return TRUE if success, otherwise FALSE
+ *
+ * TODO: should this now return a GError* instead?
  */
 static gboolean
 x509_export_certificate(const gchar *filename, PurpleCertificate *crt)
@@ -892,7 +894,8 @@ x509_export_certificate(const gchar *fil
 	int ret;
 	gchar * out_buf; /* Data to output */
 	size_t out_size; /* Output size */
-	gboolean success = FALSE;
+	gboolean success;
+	GError *err = NULL;
 
 	/* Paranoia paranoia paranoia! */
 	g_return_val_if_fail(filename, FALSE);
@@ -925,9 +928,10 @@ x509_export_certificate(const gchar *fil
 	}
 
 	/* Write it out to an actual file */
-	success = purple_util_write_data_to_file_absolute(filename,
-							  out_buf, out_size);
+	g_file_set_contents(filename, out_buf, out_size, &err);
+	success = (err == NULL);
 
+	g_error_free(err);
 	g_free(out_buf);
 	return success;
 }
diff --git a/libpurple/plugins/ssl/ssl-nss.c b/libpurple/plugins/ssl/ssl-nss.c
--- a/libpurple/plugins/ssl/ssl-nss.c
+++ b/libpurple/plugins/ssl/ssl-nss.c
@@ -749,7 +749,10 @@ x509_importcerts_from_file(const gchar *
  * @return TRUE if success, otherwise FALSE
  */
 /* This function should not be so complicated, but NSS doesn't seem to have a
-   "convert yon certificate to PEM format" function. */
+   "convert yon certificate to PEM format" function.
+
+   TODO: Should this now return GError* instead?
+ */
 static gboolean
 x509_export_certificate(const gchar *filename, PurpleCertificate *crt)
 {
@@ -758,6 +761,7 @@ x509_export_certificate(const gchar *fil
 	gchar *b64crt;
 	gchar *pemcrt;
 	gboolean ret = FALSE;
+	GError *err = NULL;
 
 	g_return_val_if_fail(filename, FALSE);
 	g_return_val_if_fail(crt, FALSE);
@@ -785,8 +789,10 @@ x509_export_certificate(const gchar *fil
 			      function; hence, we'll let NSPR free it. */
 
 	/* Finally, dump the silly thing to a file. */
-	ret =  purple_util_write_data_to_file_absolute(filename, pemcrt, -1);
+	g_file_set_contents(filename, pemcrt, -1, &err);
+	ret = (err == NULL);
 
+	g_error_free(err);
 	g_free(pemcrt);
 
 	return ret;
diff --git a/libpurple/protocols/gg/gg.c b/libpurple/protocols/gg/gg.c
--- a/libpurple/protocols/gg/gg.c
+++ b/libpurple/protocols/gg/gg.c
@@ -114,8 +114,8 @@ uin_t ggp_own_uin(PurpleConnection *gc)
 static void ggp_callback_buddylist_save_ok(PurpleConnection *gc, const char *filename)
 {
 	PurpleAccount *account = purple_connection_get_account(gc);
-
 	char *buddylist = ggp_buddylist_dump(account);
+	GError *err = NULL;
 
 	purple_debug_info("gg", "Saving...\n");
 	purple_debug_info("gg", "file = %s\n", filename);
@@ -127,7 +127,8 @@ static void ggp_callback_buddylist_save_
 		return;
 	}
 
-	if (purple_util_write_data_to_file_absolute(filename, buddylist, -1)) {
+	g_file_set_contents(filename, buddylist, -1, &err);
+	if (err == NULL) {
 		purple_notify_info(account, _("Save Buddylist..."),
 			_("Buddylist saved successfully!"), NULL,
 			purple_request_cpar_from_connection(gc));
@@ -140,6 +141,7 @@ static void ggp_callback_buddylist_save_
 		g_free(primary);
 	}
 
+	g_error_free(err);
 	g_free(buddylist);
 }
 
diff --git a/libpurple/protocols/msn/slplink.c b/libpurple/protocols/msn/slplink.c
--- a/libpurple/protocols/msn/slplink.c
+++ b/libpurple/protocols/msn/slplink.c
@@ -46,15 +46,17 @@ debug_part_to_file(MsnSlpMessage *msg, g
 	char *data;
 	int c;
 	gsize data_size;
+	GError *err = NULL;
 
 	dir = send ? "send" : "recv";
 	c = send ? m_sc++ : m_rc++;
 	tmp = g_strdup_printf("%s/msntest/%s/%03d", purple_user_dir(), dir, c);
 	data = msn_slpmsg_serialize(msg, &data_size);
-	if (!purple_util_write_data_to_file_absolute(tmp, data, data_size))
-	{
+	g_file_set_contents(tmp, data, data_size, &err);
+	if (err != NULL) {
 		purple_debug_error("msn", "could not save debug file\n");
 	}
+	g_error_free(err);
 	g_free(tmp);
 }
 #endif
diff --git a/libpurple/protocols/mxit/formcmds.c b/libpurple/protocols/mxit/formcmds.c
--- a/libpurple/protocols/mxit/formcmds.c
+++ b/libpurple/protocols/mxit/formcmds.c
@@ -404,6 +404,7 @@ static void command_imagestrip(struct MX
 		char*		escname;
 		char*		escvalidator;
 		char*		filename;
+		GError*		err = NULL;
 
 		/* base64 decode the image data */
 		rawimg = purple_base64_decode(tmp, &rawimglen);
@@ -419,8 +420,10 @@ static void command_imagestrip(struct MX
 		escvalidator = g_strdup(purple_escape_filename(validator));
 		filename = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s-%s-%s.png", dir, escfrom, escname, escvalidator);
 
-		purple_util_write_data_to_file_absolute(filename, (char*) rawimg, rawimglen);
+		/* XXX: we never check whether this write succeeds */
+		g_file_set_contents(filename, (char*) rawimg, rawimglen, &err);
 
+		g_error_free(err);
 		g_free(dir);
 		g_free(escfrom);
 		g_free(escname);
diff --git a/libpurple/protocols/mxit/splashscreen.c b/libpurple/protocols/mxit/splashscreen.c
--- a/libpurple/protocols/mxit/splashscreen.c
+++ b/libpurple/protocols/mxit/splashscreen.c
@@ -115,6 +115,7 @@ void splash_update(struct MXitSession* s
 {
 	char* dir;
 	char* filename;
+	GError* err = NULL;
 
 	/* Remove the current splash-screen */
 	splash_remove(session);
@@ -124,12 +125,14 @@ void splash_update(struct MXitSession* s
 	purple_build_dir(dir, S_IRUSR | S_IWUSR | S_IXUSR);		/* ensure directory exists */
 
 	filename = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s.png", dir, purple_escape_filename(splashId));
-	if (purple_util_write_data_to_file_absolute(filename, data, datalen)) {
+	g_file_set_contents(filename, data, datalen, &err);
+	if (err == NULL) {
 		/* Store new splash-screen ID to settings */
 		purple_account_set_string(session->acc, MXIT_CONFIG_SPLASHID, splashId);
 		purple_account_set_bool(session->acc, MXIT_CONFIG_SPLASHCLICK, clickable );
 	}
 
+	g_error_free(err);
 	g_free(dir);
 	g_free(filename);
 }
diff --git a/libpurple/util.c b/libpurple/util.c
--- a/libpurple/util.c
+++ b/libpurple/util.c
@@ -2943,6 +2943,8 @@ int purple_build_dir (const char *path, 
  * This function is long and beautiful, like my--um, yeah.  Anyway,
  * it includes lots of error checking so as we don't overwrite
  * people's settings if there is a problem writing the new values.
+ *
+ * TODO: We should probably find a glib function to replace this with.
  */
 gboolean
 purple_util_write_data_to_file(const char *filename, const char *data, gssize size)
@@ -2950,6 +2952,7 @@ purple_util_write_data_to_file(const cha
 	const char *user_dir = purple_user_dir();
 	gchar *filename_full;
 	gboolean ret = FALSE;
+	GError *err = NULL;
 
 	g_return_val_if_fail(user_dir != NULL, FALSE);
 
@@ -2969,163 +2972,14 @@ purple_util_write_data_to_file(const cha
 
 	filename_full = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s", user_dir, filename);
 
-	ret = purple_util_write_data_to_file_absolute(filename_full, data, size);
-
+	g_file_set_contents(filename_full, data, size, &err);
+	ret = (err == NULL);
+
+	g_error_free(err);
 	g_free(filename_full);
 	return ret;
 }
 
-gboolean
-purple_util_write_data_to_file_absolute(const char *filename_full, const char *data, gssize size)
-{
-	gchar *filename_temp;
-	FILE *file;
-	gsize real_size, byteswritten;
-	GStatBuf st;
-#ifndef HAVE_FILENO
-	int fd;
-#endif
-
-	purple_debug_misc("util", "Writing file %s",
-					filename_full);
-
-	g_return_val_if_fail((size >= -1), FALSE);
-
-	filename_temp = g_strdup_printf("%s.save", filename_full);
-
-	/* Remove an old temporary file, if one exists */
-	if (g_file_test(filename_temp, G_FILE_TEST_EXISTS))
-	{
-		if (g_unlink(filename_temp) == -1)
-		{
-			purple_debug_error("util", "Error removing old file "
-					   "%s: %s\n",

_______________________________________________
Commits mailing list
[email protected]
https://pidgin.im/cgi-bin/mailman/listinfo/commits
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.