maildir-uidlist.c revision 4b932a83bf4eb1c685647dc3b2d89de5341bb8e3
#include "lib.h"
#include "array.h"
#include "hash.h"
#include "istream.h"
#include "ostream.h"
#include "str.h"
#include "file-dotlock.h"
#include "close-keep-errno.h"
#include "nfs-workarounds.h"
#include "maildir-storage.h"
#include "maildir-sync.h"
#include "maildir-filename.h"
#include "maildir-uidlist.h"
#include <stdio.h>
#include <stdlib.h>
struct maildir_uidlist_rec {
char *filename;
struct maildir_uidlist {
char *path;
int fd;
unsigned int lock_count;
unsigned int change_counter;
unsigned int version;
unsigned int read_records_count;
struct maildir_uidlist_sync_ctx {
unsigned int new_files_count;
struct maildir_uidlist_iter_ctx {
unsigned int change_counter;
bool nonblock)
int i, ret;
if (ret > 0)
if (ret == 0) {
struct maildir_uidlist *
const char *control_dir;
return uidlist;
return uidlist;
unsigned int count;
const char **line_p,
t_push();
t_pop();
line++;
return FALSE;
return TRUE;
const char *line)
uid = 0;
line++;
char key;
t_push();
switch (key) {
t_pop();
const char *line;
unsigned int orig_next_uid;
last_read_offset = 0;
if (ret > 0) {
ret = 0;
if (ret == 0) {
} else if (ret > 0) {
if (ret <= 0) {
return ret;
bool *recreated_r)
nfs_flush) {
int ret;
if (!nfs_flush)
&recreated);
if (ret <= 0)
return ret;
if (recreated)
if (!retry)
if (ret >= 0)
return ret;
static struct maildir_uidlist_rec *
unsigned int *idx_r)
return NULL;
return NULL;
return NULL;
unsigned int idx;
return NULL;
return NULL;
return NULL;
unsigned int idx;
const char *p, *value;
return NULL;
if (*p == (char)key)
return NULL;
const char *value)
unsigned int idx;
unsigned int len;
t_push();
if (*p != (char)key)
p += len;
t_pop();
int ret;
if (ret < 0) {
if (ret == 0) {
if (ret < 0) {
return ret;
int ret;
return ret;
bool nonsynced)
unsigned int i, count;
if (nonsynced) {
for (i = 0; i < count; i++)
for (i = 0; i < count; i++)
int ret;
return ret;
const char *filename,
flags);
const char *filename)
const char *filename,
MAILDIR_UIDLIST_REC_FLAG_MOVED)) == 0) {
const char *filename)
const char *filename)
return FALSE;
return TRUE;
const char *filename)
unsigned int count;
t_push();
t_pop();
return ret;
const char *filename,
struct maildir_uidlist_iter_ctx *
unsigned int count;
return ctx;
idx++;
idx--;
return FALSE;
return TRUE;
const char **filename_r)
return FALSE;
return TRUE;