diff options
Diffstat (limited to 'sqmail-4.3.07/src/maildir.c')
-rw-r--r-- | sqmail-4.3.07/src/maildir.c | 97 |
1 files changed, 0 insertions, 97 deletions
diff --git a/sqmail-4.3.07/src/maildir.c b/sqmail-4.3.07/src/maildir.c deleted file mode 100644 index 8832d75..0000000 --- a/sqmail-4.3.07/src/maildir.c +++ /dev/null @@ -1,97 +0,0 @@ -#include <unistd.h> -#include <sys/types.h> -#include <sys/stat.h> -#include "prioq.h" -#include "env.h" -#include "stralloc.h" -#include "direntry.h" -#include "datetime.h" -#include "now.h" -#include "str.h" -#include "maildir.h" -#include "logmsg.h" - -#define WHO "maildir" - -int maildir_chdir() -{ - char *maildir; - maildir = env_get("MAILDIR"); - if (!maildir) - logmsg(WHO,111,ERROR,"MAILDIR not set"); - if (chdir(maildir) == -1) - logmsg(WHO,110,FATAL,B("unable to chdir to: ",maildir)); - return 0; -} - -void maildir_clean(stralloc *tmpname) -{ - DIR *dir; - direntry *d; - datetime_sec time; - struct stat st; - - time = now(); - - dir = opendir("tmp"); - if (!dir) return; - - while ((d = readdir(dir))) { - if (d->d_name[0] == '.') continue; - if (!stralloc_copys(tmpname,"tmp/")) break; - if (!stralloc_cats(tmpname,d->d_name)) break; - if (!stralloc_0(tmpname)) break; - if (stat(tmpname->s,&st) == 0) - if (time > st.st_atime + 129600) - unlink(tmpname->s); - } - closedir(dir); -} - -static int append(prioq *pq, stralloc *filenames, char *subdir, datetime_sec time) -{ - DIR *dir; - direntry *d; - struct prioq_elt pe; - unsigned int pos; - struct stat st; - - dir = opendir(subdir); - if (!dir) - logmsg(WHO,112,FATAL,B("unable to scan $MAILDIR/:",subdir)); - - while ((d = readdir(dir))) { - if (d->d_name[0] == '.') continue; - pos = filenames->len; - if (!stralloc_cats(filenames,subdir)) break; - if (!stralloc_cats(filenames,"/")) break; - if (!stralloc_cats(filenames,d->d_name)) break; - if (!stralloc_0(filenames)) break; - if (stat(filenames->s + pos,&st) == 0) - if (st.st_mtime < time) { /* don't want to mix up the order */ - pe.dt = st.st_mtime; - pe.id = pos; - if (!prioq_insert(pq,&pe)) break; - } - } - - closedir(dir); - if (d) logmsg(WHO,112,FATAL,B("unable to read $MAILDIR/:",subdir)); - return 0; -} - -int maildir_scan(prioq *pq, stralloc *filenames, int flagnew, int flagcur) -{ - struct prioq_elt pe; - datetime_sec time; - - if (!stralloc_copys(filenames,"")) return 0; - while (prioq_min(pq,&pe)) - prioq_delmin(pq); - - time = now(); - - if (flagnew) if (append(pq,filenames,"new",time) == -1) return -1; - if (flagcur) if (append(pq,filenames,"cur",time) == -1) return -1; - return 0; -} |