return index->index_delete_requested || index->index_deleted;
}
+int mail_index_get_modification_time(struct mail_index *index, time_t *mtime_r)
+{
+ struct stat st;
+
+ if (mail_transaction_log_get_mtime(index->log, mtime_r) < 0)
+ return -1;
+
+ if (*mtime_r == 0) {
+ if (stat(index->filepath, &st) < 0) {
+ mail_index_set_syscall_error(index, "stat()");
+ return -1;
+ }
+ *mtime_r = st.st_mtime;
+ }
+ return 0;
+}
+
void mail_index_fchown(struct mail_index *index, int fd, const char *path)
{
mode_t mode;
/* Returns TRUE if index has been set deleted. This gets set only after
index has been opened/refreshed and the transaction has been seen. */
bool mail_index_is_deleted(struct mail_index *index);
+/* Returns the last time mailbox was modified. */
+int mail_index_get_modification_time(struct mail_index *index, time_t *mtime_r);
/* Lookup a keyword, returns TRUE if found, FALSE if not. */
bool mail_index_keyword_lookup(struct mail_index *index,
return log->head->hdr.prev_file_seq == file_seq &&
log->head->hdr.prev_file_offset == file_offset;
}
+
+int mail_transaction_log_get_mtime(struct mail_transaction_log *log,
+ time_t *mtime_r)
+{
+ struct stat st;
+
+ *mtime_r = 0;
+ if (stat(log->filepath, &st) < 0) {
+ if (errno == ENOENT)
+ return 0;
+
+ mail_index_file_set_syscall_error(log->index, log->filepath,
+ "stat()");
+ return -1;
+ }
+ *mtime_r = st.st_mtime;
+ return 0;
+}
/* Move currently opened log head file to memory (called by
mail_index_move_to_memory()) */
void mail_transaction_log_move_to_memory(struct mail_transaction_log *log);
+/* Returns mtime of the transaction log head file.
+ If it doesn't exist, mtime_r is set to 0. */
+int mail_transaction_log_get_mtime(struct mail_transaction_log *log,
+ time_t *mtime_r);
#endif