2006-10-01 [colin] 2.5.2cvs33
authorColin Leroy <colin@colino.net>
Sun, 1 Oct 2006 12:08:47 +0000 (12:08 +0000)
committerColin Leroy <colin@colino.net>
Sun, 1 Oct 2006 12:08:47 +0000 (12:08 +0000)
* src/folder.c
* src/mh.c
* src/mh.h
* src/msgcache.c
Add helper mh_set_mtime(), and set mtime to stat()'s result
Add fsync but disable it, it's slow as hell

ChangeLog
PATCHSETS
configure.ac
src/folder.c
src/mh.c
src/mh.h
src/msgcache.c

index 845554e..607bf38 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2006-10-01 [colin]     2.5.2cvs33
+
+       * src/folder.c
+       * src/mh.c
+       * src/mh.h
+       * src/msgcache.c
+               Add helper mh_set_mtime(), and set mtime to stat()'s result
+               Add fsync but disable it, it's slow as hell
+
 2006-10-01 [colin]     2.5.2cvs32
 
        * src/mh.c
index 8768ef1..99355e6 100644 (file)
--- a/PATCHSETS
+++ b/PATCHSETS
 ( cvs diff -u -r 1.115.2.107 -r 1.115.2.108 src/main.c;  ) > 2.5.2cvs30.patchset
 ( cvs diff -u -r 1.16.2.41 -r 1.16.2.42 src/msgcache.c;  ) > 2.5.2cvs31.patchset
 ( cvs diff -u -r 1.79.2.44 -r 1.79.2.45 src/mh.c;  cvs diff -u -r 1.16.2.42 -r 1.16.2.43 src/msgcache.c;  ) > 2.5.2cvs32.patchset
+( cvs diff -u -r 1.213.2.118 -r 1.213.2.119 src/folder.c;  cvs diff -u -r 1.79.2.45 -r 1.79.2.46 src/mh.c;  cvs diff -u -r 1.9.2.3 -r 1.9.2.4 src/mh.h;  cvs diff -u -r 1.16.2.43 -r 1.16.2.44 src/msgcache.c;  ) > 2.5.2cvs33.patchset
index e3bf1fe..c87ac86 100644 (file)
@@ -11,7 +11,7 @@ MINOR_VERSION=5
 MICRO_VERSION=2
 INTERFACE_AGE=0
 BINARY_AGE=0
-EXTRA_VERSION=32
+EXTRA_VERSION=33
 EXTRA_RELEASE=
 EXTRA_GTK2_VERSION=
 
index ae856f9..31fac16 100644 (file)
@@ -2304,8 +2304,7 @@ void folder_item_write_cache(FolderItem *item)
 
        if (!need_scan && FOLDER_TYPE(item->folder) == F_MH) {
                if (item->mtime == last_mtime) {
-                       item->mtime = time(NULL);
-                       debug_print("MH: forced mtime of %s to %ld\n", item->name, item->mtime);
+                       mh_set_mtime(item);
                }
        }
 
index 30d63c1..0854d59 100644 (file)
--- a/src/mh.c
+++ b/src/mh.c
@@ -310,8 +310,7 @@ gint mh_get_num_list(Folder *folder, FolderItem *item, GSList **list, gboolean *
        }
        closedir(dp);
 
-       item->mtime = time(NULL);
-       debug_print("MH: forced mtime of %s to %ld\n", item->name, item->mtime);
+       mh_set_mtime(item);
        return nummsgs;
 }
 
@@ -577,8 +576,7 @@ static gint mh_copy_msgs(Folder *folder, FolderItem *dest, MsgInfoList *msglist,
        mh_write_sequences(dest, TRUE);
 
        if (dest->mtime == last_mtime && !dest_need_scan) {
-               dest->mtime = time(NULL);
-               debug_print("MH: forced mtime of %s to %ld\n", dest->name, dest->mtime);
+               mh_set_mtime(dest);
        }
        if (total > 100) {
                statusbar_progress_all(0,0,0);
@@ -617,8 +615,7 @@ static gint mh_remove_msg(Folder *folder, FolderItem *item, gint num)
        }
 
        if (item->mtime == last_mtime && !need_scan) {
-               item->mtime = time(NULL);
-               debug_print("MH: forced mtime of %s to %ld\n", item->name, item->mtime);
+               mh_set_mtime(item);
        }
        g_free(file);
        return 0;
@@ -677,8 +674,7 @@ static gint mh_remove_msgs(Folder *folder, FolderItem *item,
                statusbar_pop_all();
        }
        if (item->mtime == last_mtime && !need_scan) {
-               item->mtime = time(NULL);
-               debug_print("MH: forced mtime of %s to %ld\n", item->name, item->mtime);
+               mh_set_mtime(item);
        }
 
        g_free(path);
@@ -1127,8 +1123,7 @@ static void mh_scan_tree_recursive(FolderItem *item)
        closedir(dp);
 #endif
 
-       item->mtime = time(NULL);
-       debug_print("MH: forced mtime of %s to %ld\n", item->name, item->mtime);
+       mh_set_mtime(item);
 }
 
 static gboolean mh_rename_folder_func(GNode *node, gpointer data)
@@ -1393,6 +1388,9 @@ static void mh_write_sequences(FolderItem *item, gboolean remove_unseen)
                }
                
                fflush(mh_sequences_new_fp);
+#if 0
+               fsync(fileno(mh_sequences_new_fp));
+#endif
                fclose(mh_sequences_new_fp);
 
                g_rename(mh_sequences_new, mh_sequences_old);
@@ -1418,9 +1416,26 @@ static int mh_item_close(Folder *folder, FolderItem *item)
        mh_write_sequences(item, FALSE);
 
        if (item->mtime == last_mtime && !need_scan) {
-               item->mtime = time(NULL);
-               debug_print("MH: forced mtime of %s to %ld\n", item->name, item->mtime);
+               mh_set_mtime(item);
        }
 
        return 0;
 }
+
+void mh_set_mtime(FolderItem *item)
+{
+       struct stat s;
+       gchar *path = folder_item_get_path(item);
+
+       g_return_if_fail(path != NULL);
+
+       if (stat(path, &s) < 0) {
+               FILE_OP_ERROR(path, "stat");
+               g_free(path);
+               return;
+       }
+
+       item->mtime = s.st_mtime;
+       debug_print("MH: forced mtime of %s to %ld\n", item->name, item->mtime);
+       g_free(path);
+}
index c0ee73e..90424f1 100644 (file)
--- a/src/mh.h
+++ b/src/mh.h
@@ -35,5 +35,6 @@ struct _MHFolder
 };
 
 FolderClass *mh_get_class      (void);
+void mh_set_mtime(FolderItem *item);
 
 #endif /* __MH_H__ */
index dbbe5c6..fa29998 100644 (file)
@@ -1028,6 +1028,11 @@ gint msgcache_write(const gchar *cache_file, const gchar *mark_file, MsgCache *c
        fflush(write_fps.cache_fp);
        fflush(write_fps.mark_fp);
 
+#if 0
+       fsync(fileno(write_fps.cache_fp));
+       fsync(fileno(write_fps.mark_fp));
+#endif
+
        fclose(write_fps.cache_fp);
        fclose(write_fps.mark_fp);