return mail_index_open(index, flags);
}
+const char *maildir_get_location(struct mail_index *index,
+ struct mail_index_record *rec)
+{
+ const char *fname;
+
+ fname = index->lookup_field(index, rec, DATA_FIELD_LOCATION);
+ if (fname == NULL) {
+ index_data_set_corrupted(index->data,
+ "Missing location field for record %u", rec->uid);
+ }
+ return fname;
+}
+
enum mail_flags maildir_filename_get_flags(const char *fname,
enum mail_flags default_flags)
{
return date;
/* stat() gives it */
- fname = index->lookup_field(index, rec, DATA_FIELD_LOCATION);
- if (fname == NULL) {
- index_data_set_corrupted(index->data,
- "Missing location field for record %u", rec->uid);
+ fname = maildir_get_location(index, rec);
+ if (fname == NULL)
return (time_t)-1;
- }
if (stat(fname, &st) < 0) {
index_file_set_syscall_error(index, fname, "stat()");
const char *old_path, *new_path;
/* we need to update the flags in the file name */
- old_fname = index->lookup_field(index, rec, DATA_FIELD_LOCATION);
- if (old_fname == NULL) {
- index_data_set_corrupted(index->data,
- "Missing location field for record %u", rec->uid);
+ old_fname = maildir_get_location(index, rec);
+ if (old_fname == NULL)
return FALSE;
- }
new_fname = maildir_filename_set_flags(old_fname, flags);
struct mail_index *maildir_index_alloc(const char *dir, const char *maildir);
+const char *maildir_get_location(struct mail_index *index,
+ struct mail_index_record *rec);
enum mail_flags maildir_filename_get_flags(const char *fname,
enum mail_flags default_flags);
const char *maildir_filename_set_flags(const char *fname,
if (index->inconsistent)
return NULL;
- fname = index->lookup_field(index, rec, DATA_FIELD_LOCATION);
- if (fname == NULL) {
- index_data_set_corrupted(index->data,
- "Missing location field for record %u", rec->uid);
+ fname = maildir_get_location(index, rec);
+ if (fname == NULL)
return NULL;
- }
path = t_strconcat(index->mailbox_path, "/cur/", fname, NULL);
fd = open(path, O_RDONLY);
rec = index->lookup(index, 1);
for (seq = 1; rec != NULL; rec = index->next(index, rec)) {
- fname = index->lookup_field(index, rec, DATA_FIELD_LOCATION);
- if (fname == NULL) {
- index_data_set_corrupted(index->data,
- "Missing location field for record %u",
- rec->uid);
+ fname = maildir_get_location(index, rec);
+ if (fname == NULL)
return FALSE;
- }
t_push();