/soc/2015/mmcc/rand: 56f497899851: Replace purple_util_write_dat...
Michael McConville <[email protected]>
| Newsgroups | gmane.comp.gnome.gaim.cvs |
|---|---|
| Message-ID | <[email protected]> |
Changeset: 56f49789985198960e50faf4a0cbc99de36228e8 Author: Michael McConville <[email protected]> Date: 2015-08-12 12:26 -0400 Branch: default URL: https://hg.pidgin.im/soc/2015/mmcc/rand/rev/56f497899851 Description: Replace purple_util_write_data_to_file_absolute() with the glib function g_set_file_contents() diffstat: libpurple/image.c | 9 +- libpurple/plugins/ssl/ssl-gnutls.c | 9 +- libpurple/plugins/ssl/ssl-nss.c | 11 +- libpurple/protocols/gg/gg.c | 5 +- libpurple/protocols/msn/slplink.c | 5 +- libpurple/protocols/mxit/formcmds.c | 18 ++- libpurple/protocols/mxit/splashscreen.c | 8 +- libpurple/util.c | 159 +------------------------------ libpurple/util.h | 20 ---- libpurple/xmlnode.c | 4 +- 10 files changed, 46 insertions(+), 202 deletions(-) diffs (truncated from 445 to 300 lines): diff --git a/libpurple/image.c b/libpurple/image.c --- a/libpurple/image.c +++ b/libpurple/image.c @@ -197,13 +197,14 @@ 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; + GError *err = NULL; g_return_val_if_fail(priv != NULL, FALSE); g_return_val_if_fail(path != NULL, FALSE); @@ -215,11 +216,11 @@ 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); + if (err == NULL && priv->path == NULL) priv->path = g_strdup(path); - return succ; + return err == NULL; } 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,7 @@ x509_export_certificate(const gchar *fil int ret; gchar * out_buf; /* Data to output */ size_t out_size; /* Output size */ - gboolean success = FALSE; + GError *err = NULL; /* Paranoia paranoia paranoia! */ g_return_val_if_fail(filename, FALSE); @@ -925,11 +927,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); g_free(out_buf); - return success; + return err == NULL; } static PurpleCertificate * 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 @@ -762,7 +762,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) { @@ -770,7 +773,7 @@ x509_export_certificate(const gchar *fil SECItem *dercrt; gchar *b64crt; gchar *pemcrt; - gboolean ret = FALSE; + GError *err = NULL; g_return_val_if_fail(filename, FALSE); g_return_val_if_fail(crt, FALSE); @@ -798,11 +801,11 @@ 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); g_free(pemcrt); - return ret; + return err == NULL; } static PurpleCertificate * 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)); 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,13 +46,14 @@ 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_free(tmp); 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 @@ -397,13 +397,14 @@ static void command_imagestrip(struct MX /* image data */ tmp = g_hash_table_lookup(hash, "dat"); if (tmp) { - guchar* rawimg; - gsize rawimglen; - char* dir; - char* escfrom; - char* escname; - char* escvalidator; - char* filename; + guchar *rawimg; + gsize rawimglen; + char *dir; + char *escfrom; + char *escname; + char *escvalidator; + char *filename; + GError *err = NULL; /* base64 decode the image data */ rawimg = purple_base64_decode(tmp, &rawimglen); @@ -419,7 +420,8 @@ 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_free(dir); g_free(escfrom); 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 @@ -113,8 +113,9 @@ void splash_remove(struct MXitSession* s */ void splash_update(struct MXitSession* session, const char* splashId, const char* data, int datalen, gboolean clickable) { - char* dir; - char* filename; + char *dir; + char *filename; + GError *err = NULL; /* Remove the current splash-screen */ splash_remove(session); @@ -124,7 +125,8 @@ 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 ); diff --git a/libpurple/util.c b/libpurple/util.c --- a/libpurple/util.c +++ b/libpurple/util.c @@ -2943,13 +2943,15 @@ 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) { 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,161 +2971,10 @@ 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); 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", - filename_temp, g_strerror(errno)); - } - } - - /* Open file */ - file = g_fopen(filename_temp, "wb"); - if (file == NULL) - { - purple_debug_error("util", "Error opening file %s for " - "writing: %s\n", - filename_temp, g_strerror(errno)); - g_free(filename_temp); - return FALSE; - } - - /* Write to file */ - real_size = (size == -1) ? strlen(data) : (size_t) size; - byteswritten = fwrite(data, 1, real_size, file); - -#ifdef HAVE_FILENO -#ifndef _WIN32 - /* Set file permissions */ - if (fchmod(fileno(file), S_IRUSR | S_IWUSR) == -1) { - purple_debug_error("util", "Error setting permissions of " - "file %s: %s\n", filename_temp, g_strerror(errno)); - } -#endif - - /* Apparently XFS (and possibly other filesystems) do not - * guarantee that file data is flushed before file metadata, - * so this procedure is insufficient without some flushage. */ - if (fflush(file) < 0) { - purple_debug_error("util", "Error flushing %s: %s\n", - filename_temp, g_strerror(errno)); _______________________________________________ Commits mailing list [email protected] https://pidgin.im/cgi-bin/mailman/listinfo/commits