aboutsummaryrefslogtreecommitdiffstats
path: root/camel/camel-block-file.c
diff options
context:
space:
mode:
authorNot Zed <NotZed@Ximian.com>2002-04-03 04:03:42 +0800
committerMichael Zucci <zucchi@src.gnome.org>2002-04-03 04:03:42 +0800
commit0b20695032bc1b074f7f8287df527a01fb3bf6a2 (patch)
treeaa5cb263180ba46de1e116c8a656691d87d480d3 /camel/camel-block-file.c
parent8842c7c34759922cac90751c5eb8532bd6b94ec0 (diff)
downloadgsoc2013-evolution-0b20695032bc1b074f7f8287df527a01fb3bf6a2.tar.gz
gsoc2013-evolution-0b20695032bc1b074f7f8287df527a01fb3bf6a2.tar.zst
gsoc2013-evolution-0b20695032bc1b074f7f8287df527a01fb3bf6a2.zip
Sync the key tables explcitly.
2002-04-03 Not Zed <NotZed@Ximian.com> * camel-text-index.c (text_index_sync): Sync the key tables explcitly. * camel-partition-table.c (camel_key_table_finalise): Sync root block when done. (camel_key_table_sync): New function, sync key table (root) explicitly. 2002-04-02 Not Zed <NotZed@Ximian.com> * camel-block-file.c (camel_block_file_free_block): Mark root block dirty when we change it (this function isn't used yet anyway). * camel-text-index.c (text_index_add_name_to_word): Touch the root block when we modify the counts. Also, abort processing on any errors. (text_index_sync): Fix typo in comments. Sync the block file inside the lock. (text_index_compress_nosync): Lock the old index while we're compressing. (text_index_compress_nosync): Remove the bogus while() at the end of the while() loops! Also plug a memleak - records weren't freed. (text_index_rename): Lock around rename op. (text_index_add_name): More typos. (text_index_sync): Touch root when changing it. (text_index_add_name): " (text_index_delete_name): " (camel_text_index_new): Touch root if we change it. (text_index_cursor_reset): Make sure we NULL pointers after we free them (nothing uses this yet). * camel-partition-table.c (hash_key): Remove some debug accidentally left in. (camel_partition_table_add): When linking in the next block list, set the right previous pointer. (camel_key_table_add): Simplify the 'left' calculation (it was already ok though). (camel_key_table_next): Initialise returns before processing. Broaden the lock slightly, and simplify validity calculations. svn path=/trunk/; revision=16323
Diffstat (limited to 'camel/camel-block-file.c')
-rw-r--r--camel/camel-block-file.c22
1 files changed, 17 insertions, 5 deletions
diff --git a/camel/camel-block-file.c b/camel/camel-block-file.c
index 0340f9ecdf..e73b266026 100644
--- a/camel/camel-block-file.c
+++ b/camel/camel-block-file.c
@@ -98,11 +98,22 @@ block_file_validate_root(CamelBlockFile *bs)
fstat(bs->fd, &st);
- d(printf("Validate root:\n"));
- d(printf("version: %.8s (%.8s)\n", bs->root->version, bs->version));
- d(printf("block size: %d (%d)\n", br->block_size, bs->block_size));
- d(printf("free: %d (%d add size < %d)\n", br->free, br->free / bs->block_size * bs->block_size, (int)st.st_size));
- d(printf("last: %d (%d and size: %d)\n", br->free, br->free / bs->block_size * bs->block_size, (int)st.st_size));
+ (printf("Validate root:\n"));
+ (printf("version: %.8s (%.8s)\n", bs->root->version, bs->version));
+ (printf("block size: %d (%d)%s\n", br->block_size, bs->block_size,
+ br->block_size != bs->block_size ? " BAD":" OK"));
+ (printf("free: %ld (%d add size < %ld)%s\n", (long)br->free, br->free / bs->block_size * bs->block_size, (long)st.st_size,
+ (br->free > st.st_size) || (br->free % bs->block_size) != 0 ? " BAD":" OK"));
+ (printf("last: %ld (%d and size: %ld)%s\n", (long)br->last, br->last / bs->block_size * bs->block_size, (long)st.st_size,
+ (br->last != st.st_size) || ((br->last % bs->block_size) != 0) ? " BAD": " OK"));
+ (printf("flags: %s\n", (br->flags & CAMEL_BLOCK_FILE_SYNC)?"SYNC":"unSYNC"));
+
+ printf("last = %ld, size = %ld\n", (unsigned long)br->last, (unsigned long)st.st_size);
+
+ if (br->last != st.st_size)
+ printf("last != size!\n");
+ else
+ printf("last == size?\n");
if (br->last == 0
|| memcmp(bs->root->version, bs->version, 8) != 0
@@ -476,6 +487,7 @@ int camel_block_file_free_block(CamelBlockFile *bs, camel_block_t id)
((camel_block_t *)bl->data)[0] = bs->root->free;
bs->root->free = bl->id;
+ bs->root_block->flags |= CAMEL_BLOCK_DIRTY;
bl->flags |= CAMEL_BLOCK_DIRTY;
camel_block_file_unref_block(bs, bl);