# HG changeset patch # User Stu Tomlinson # Date 1103477759 0 # Node ID aab0c950831837072399e777603133b902873738 # Parent de59c0e7f87ebbb88f6705e1d02ca88c665c59c2 [gaim-migrate @ 11630] Don't erase prefs/accounts/blist/pounces if we failed to write the new file to disk - this fixes the "Gaim lost all my settings when my disk/quota filled up" bugs. committer: Tailor Script diff -r de59c0e7f87e -r aab0c9508318 src/account.c --- a/src/account.c Sun Dec 19 12:57:29 2004 +0000 +++ b/src/account.c Sun Dec 19 17:35:59 2004 +0000 @@ -1481,6 +1481,7 @@ gaim_accounts_sync(void) { FILE *fp; + struct stat st; const char *user_dir = gaim_user_dir(); char *filename; char *filename_real; @@ -1527,6 +1528,13 @@ return; } + if (stat(filename, &st) || (st.st_size == 0)) { + gaim_debug_error("accounts", "Failed to save accounts\n"); + unlink(filename); + g_free(filename); + return; + } + filename_real = g_build_filename(user_dir, "accounts.xml", NULL); if (rename(filename, filename_real) < 0) { diff -r de59c0e7f87e -r aab0c9508318 src/blist.c --- a/src/blist.c Sun Dec 19 12:57:29 2004 +0000 +++ b/src/blist.c Sun Dec 19 17:35:59 2004 +0000 @@ -2384,6 +2384,7 @@ void gaim_blist_sync() { FILE *file; + struct stat st; const char *user_dir = gaim_user_dir(); char *filename; char *filename_real; @@ -2416,13 +2417,19 @@ return; } + if (stat(filename, &st) || (st.st_size == 0)) { + gaim_debug_error("blist", "Failed to save blist\n"); + unlink(filename); + g_free(filename); + return; + } + filename_real = g_build_filename(user_dir, "blist.xml", NULL); if (rename(filename, filename_real) < 0) gaim_debug(GAIM_DEBUG_ERROR, "blist save", "Error renaming %s to %s\n", filename, filename_real); - g_free(filename); g_free(filename_real); } diff -r de59c0e7f87e -r aab0c9508318 src/pounce.c --- a/src/pounce.c Sun Dec 19 12:57:29 2004 +0000 +++ b/src/pounce.c Sun Dec 19 17:35:59 2004 +0000 @@ -846,6 +846,7 @@ gaim_pounces_sync(void) { FILE *fp; + struct stat st; const char *user_dir = gaim_user_dir(); char *filename; char *filename_real; @@ -892,6 +893,13 @@ return; } + if (stat(filename, &st) || (st.st_size == 0)) { + gaim_debug_error("pounces", "Failed to save pounces\n"); + unlink(filename); + g_free(filename); + return; + } + filename_real = g_build_filename(user_dir, "pounces.xml", NULL); if (rename(filename, filename_real) < 0) { diff -r de59c0e7f87e -r aab0c9508318 src/prefs.c --- a/src/prefs.c Sun Dec 19 12:57:29 2004 +0000 +++ b/src/prefs.c Sun Dec 19 17:35:59 2004 +0000 @@ -796,6 +796,7 @@ void gaim_prefs_sync() { FILE *file; + struct stat st; const char *user_dir = gaim_user_dir(); char *filename; char *filename_real; @@ -830,6 +831,13 @@ return; } + if (stat(filename, &st) || (st.st_size == 0)) { + gaim_debug_error("prefs", "Failed to save prefs\n"); + unlink(filename); + g_free(filename); + return; + } + filename_real = g_build_filename(user_dir, "prefs.xml", NULL); if(rename(filename, filename_real) < 0) gaim_debug(GAIM_DEBUG_ERROR, "prefs", "Error renaming %s to %s\n",