diff options
Diffstat (limited to 'mail/courier/files/extra-patch-libs__sqwebmail__maildir.c')
| -rw-r--r-- | mail/courier/files/extra-patch-libs__sqwebmail__maildir.c | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/mail/courier/files/extra-patch-libs__sqwebmail__maildir.c b/mail/courier/files/extra-patch-libs__sqwebmail__maildir.c new file mode 100644 index 000000000000..a6b96b375296 --- /dev/null +++ b/mail/courier/files/extra-patch-libs__sqwebmail__maildir.c @@ -0,0 +1,75 @@ +--- libs/sqwebmail/maildir.c.orig 2008-07-20 05:15:08.000000000 +0200 ++++ libs/sqwebmail/maildir.c 2009-06-03 22:41:49.000000000 +0200 +@@ -1091,6 +1091,42 @@ + return (rc); + } + ++void maildir_msgmarkfile(const char *folder, const char *file, size_t pos) ++{ ++char *filename=maildir_find(folder, file); ++char *new_filename; ++ ++ if (filename) ++ { ++ if ((new_filename=maildir_addflagfilename(filename, 'F')) != 0) ++ { ++ rename(filename, new_filename); ++ update_foldermsgs(folder, new_filename, pos); ++ free(new_filename); ++ } ++ ++ free(filename); ++ } ++} ++ ++void maildir_msgunmarkfile(const char *folder, const char *file, size_t pos) ++{ ++char *filename=maildir_find(folder, file); ++char *new_filename; ++ ++ if (filename) ++ { ++ if ((new_filename = strdup(filename)) != 0) ++ { ++ maildir_remflagname(new_filename, 'F'); ++ rename(filename, new_filename); ++ update_foldermsgs(folder, new_filename, pos); ++ free(new_filename); ++ } ++ free(filename); ++ } ++} ++ + static char *foldercountfilename(const char *folder) + { + char *f=malloc(sizeof(MAILDIRCURCACHE "/cnt.") + strlen(folder)); +@@ -1604,6 +1640,29 @@ + return (MSGTYPE_NEW); + } + ++/* ++** maildirfile_flag(directory, filename) - boolean: ++** ++*/ ++ ++int maildirfile_flag(const char *p) ++{ ++const char *q=strrchr(p, '/'); ++int seen_flag=0; ++ ++ if (q) p=q; ++ ++ if ( !(p=strchr(p, ':')) || *++p != '2' || *++p != ',') ++ return (0); /* No :2,info */ ++ ++ ++p; ++ while (p && isalpha((int)(unsigned char)*p)) ++ if (*p++ == 'F') ++ seen_flag=1; ++ ++ return (seen_flag); ++} ++ + static int docount(const char *fn, unsigned *new_cnt, unsigned *other_cnt) + { + const char *filename=strrchr(fn, '/'); |
