[dovecot-cvs] dovecot/src/lib-index/mbox mbox-sync-full.c,1.18,1.19
mbox-sync.c,1.36,1.37
cras at procontrol.fi
cras at procontrol.fi
Wed Oct 29 17:45:43 EET 2003
Update of /home/cvs/dovecot/src/lib-index/mbox
In directory danu:/tmp/cvs-serv4949/lib-index/mbox
Modified Files:
mbox-sync-full.c mbox-sync.c
Log Message:
fixes
Index: mbox-sync-full.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mbox/mbox-sync-full.c,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- mbox-sync-full.c 29 Oct 2003 15:12:46 -0000 1.18
+++ mbox-sync-full.c 29 Oct 2003 15:45:41 -0000 1.19
@@ -84,7 +84,7 @@
uoff_t hdr_size, body_size;
unsigned char current_digest[16];
unsigned int first_seq, last_seq;
- int hdr_size_fixed;
+ int ret, hdr_size_fixed;
*next_rec = NULL;
@@ -94,10 +94,10 @@
first_rec = last_rec = NULL;
first_seq = last_seq = 0;
- hdr_size = 0; body_offset = 0; hdr_size_fixed = FALSE;
+ ret = 0; hdr_size = 0; body_offset = 0; hdr_size_fixed = FALSE;
do {
if (!mbox_mail_get_location(index, rec, &offset, &body_size))
- return FALSE;
+ return -1;
i_stream_seek(input, header_offset);
@@ -123,7 +123,7 @@
if (!mbox_check_uidvalidity(index,
ctx.uid_validity)) {
/* uidvalidity changed, abort */
- return FALSE;
+ return -1;
}
if (ctx.uid_last >= index->header->next_uid) {
@@ -149,7 +149,7 @@
if (!index->update_flags(index, rec, *seq,
MODIFY_REPLACE,
ctx.flags, TRUE))
- return FALSE;
+ return -1;
} else if (rec->msg_flags == ctx.flags) {
/* flags are same, it's not dirty anymore */
index_flags &= ~MAIL_INDEX_FLAG_DIRTY;
@@ -163,8 +163,9 @@
if (offset != header_offset) {
if (!mail_cache_update_location_offset(
index->cache, rec, header_offset))
- return FALSE;
+ return -1;
}
+ ret = 1;
break;
}
@@ -185,13 +186,13 @@
} else {
if (!index->expunge(index, first_rec, last_rec,
first_seq, last_seq, TRUE))
- return FALSE;
+ return -1;
*seq = first_seq + 1;
*next_rec = index->lookup(index, *seq);
}
- return TRUE;
+ return ret;
}
static int mbox_sync_from_stream(struct mail_index *index,
@@ -202,7 +203,7 @@
const unsigned char *data;
size_t size;
unsigned int seq;
- int dirty;
+ int dirty, ret;
if (mail_cache_lock(index->cache, FALSE) <= 0)
return FALSE;
@@ -250,10 +251,11 @@
if (input->v_offset == input->v_size)
break;
- if (!match_next_record(index, rec, &seq, input, &rec, &dirty))
+ ret = match_next_record(index, rec, &seq, input, &rec, &dirty);
+ if (ret < 0)
return FALSE;
- if (rec == NULL) {
+ if (ret == 0) {
/* Get back to line before From */
i_stream_seek(input, from_offset);
}
Index: mbox-sync.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mbox/mbox-sync.c,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -d -r1.36 -r1.37
--- mbox-sync.c 20 Oct 2003 03:25:10 -0000 1.36
+++ mbox-sync.c 29 Oct 2003 15:45:41 -0000 1.37
@@ -38,7 +38,6 @@
enum mail_lock_type data_lock_type, int *changes)
{
struct stat st;
- uoff_t filesize;
int count, fd;
if (index->mailbox_readonly && data_lock_type == MAIL_LOCK_EXCLUSIVE) {
@@ -72,7 +71,6 @@
else if (errno != EEXIST)
return mbox_set_syscall_error(index, "open()");
}
- filesize = st.st_size;
if (index->mbox_fd != -1 &&
(index->mbox_ino != st.st_ino ||
@@ -86,7 +84,8 @@
mbox_file_close_fd(index);
}
- if (index->sync_stamp != st.st_mtime || index->sync_size != filesize) {
+ if (index->sync_stamp != st.st_mtime ||
+ index->sync_size != (uoff_t)st.st_size) {
mbox_file_close_stream(index);
if (changes != NULL)
@@ -101,8 +100,11 @@
return FALSE;
}
+ if (fstat(index->mbox_fd, &st) < 0)
+ return mbox_set_syscall_error(index, "fstat()");
+
index->sync_stamp = st.st_mtime;
- index->sync_size = filesize;
+ index->sync_size = st.st_size;
}
/* we need some index lock to be able to lock mbox */
More information about the dovecot-cvs
mailing list