[evolution] Remove .goutputstream-XXXXXX files during migration.
- From: Matthew Barnes <mbarnes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution] Remove .goutputstream-XXXXXX files during migration.
- Date: Wed, 28 Jul 2010 17:19:10 +0000 (UTC)
commit 7ca5681a186857349762f2c06e08dedaee1287a3
Author: Matthew Barnes <mbarnes redhat com>
Date: Wed Jul 28 13:18:08 2010 -0400
Remove .goutputstream-XXXXXX files during migration.
GIO had a bug for awhile where it would leave behind an empty
temp file with the pattern .goutputstream-XXXXXX if an output
stream operation was cancelled. We've had several reports of
these files in config directories, so remove any we find.
shell/e-shell-migrate.c | 31 +++++++++++++++++++++++++++++++
1 files changed, 31 insertions(+), 0 deletions(-)
---
diff --git a/shell/e-shell-migrate.c b/shell/e-shell-migrate.c
index 674c8c3..faf8435 100644
--- a/shell/e-shell-migrate.c
+++ b/shell/e-shell-migrate.c
@@ -196,11 +196,13 @@ shell_xdg_migrate_config_dir_common (EShell *shell,
const gchar *old_base_dir,
const gchar *backend_name)
{
+ GDir *dir;
const gchar *user_config_dir;
gchar *old_config_dir;
gchar *new_config_dir;
gchar *old_filename;
gchar *new_filename;
+ gchar *dirname;
user_config_dir = e_get_user_config_dir ();
@@ -228,6 +230,35 @@ shell_xdg_migrate_config_dir_common (EShell *shell,
g_free (old_filename);
g_free (new_filename);
+ /* GIO had a bug for awhile where it would leave behind an empty
+ * temp file with the pattern .goutputstream-XXXXXX if an output
+ * stream operation was cancelled. We've had several reports of
+ * these files in config directories, so remove any we find. */
+ dirname = g_build_filename (old_config_dir, "config", NULL);
+ dir = g_dir_open (dirname, 0, NULL);
+ if (dir != NULL) {
+ const gchar *basename;
+
+ while ((basename = g_dir_read_name (dir)) != NULL) {
+ gchar *filename;
+ struct stat st;
+
+ if (!g_str_has_prefix (basename, ".goutputstream"))
+ continue;
+
+ filename = g_build_filename (dirname, basename, NULL);
+
+ /* Verify the file is indeed empty. */
+ if (g_stat (filename, &st) == 0 && st.st_size == 0)
+ g_unlink (filename);
+
+ g_free (filename);
+ }
+
+ g_dir_close (dir);
+ }
+ g_free (dirname);
+
g_free (old_config_dir);
g_free (new_config_dir);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]