On Thu, Jul 04, 2002 at 11:05:25AM -0700, Will Yardley wrote: > Marc Boucher wrote: > > On Thu, Jul 04, 2002 at 10:50:59AM -0700, Will Yardley wrote: > > > Marc Boucher wrote: > > > > > The patch below is a quick & dirty hack to make mutt handle Maildir++ > > > > (see http://www.inter7.com/courierimap/README.maildirquota.html). > > > > folders and emulated sub-folders (with '.' as hierarchy separator). > > > > It was generated against the latest mutt-1.5.x development (unstable) > > > > CVS tree. > > > > > > what exactly didn't work about using mutt with Maildir++ before? i've > > > never had a problem with it.... > > > > Try > > mutt -f +Folder > > or > > mutt -f +Folder/Subfolder > > > > to access > > > > ~/Maildir/.Folder > > or > > ~/Maildir/.Folder.Subfolder > > > > respectively. > > yeah but you can do mutt -f .Folder > or > mutt -f .Folder.Subfolder...
yes, but it's not practical. > i agree that a patch to enter folder names in the conventional way would > be nice.... just wasn't sure what your patch did. > > does it also make the folders show up "normally" in the folder index? not yet, however the updated version below does reverse translation in mutt_pretty_mailbox().. Marc --- muttlib.c 2002/07/04 12:30:59 1.1 +++ muttlib.c 2002/07/04 18:07:54 @@ -477,6 +477,18 @@ imap_expand_path (s, slen); #endif + if (mx_is_maildir (s) && Maildir) { + strcpy(tmp, strchr(s, ':') + 1); + if(t = strchr(tmp, ':')) { + *t = '/'; + t++; + while(t = strchr(t, '/')) { + *t = '.'; + } + } + strfcpy(s, tmp, strlen(tmp) + 1); + } + return (s); } @@ -737,6 +749,24 @@ } *q = 0; + if(Maildir && url_check_scheme(Maildir) == U_MAILDIR) { + char *mp, *mpe; + + mp = strchr(Maildir, ':') + 1; + mpe = strchr(mp, ':'); + if(mpe) { + len = mpe - mp; + if(!mutt_strncmp(s, mp, len) && s[len] == '/' && s[len+1] == '.') { + *s++ = '='; + memmove (s, s + len + 1, mutt_strlen (s + len + 1) + 1); + mp = s; + while(mp = strchr(mp, '.')) { + *mp = '/'; + } + } + } + } + if (mutt_strncmp (s, Maildir, (len = mutt_strlen (Maildir))) == 0 && s[len] == '/') { --- mx.c 2002/07/04 10:57:51 1.1 +++ mx.c 2002/07/04 12:08:14 @@ -354,6 +354,14 @@ } #endif +int mx_is_maildir (const char *p) +{ + if (!p) + return 0; + + return (url_check_scheme (p) == U_MAILDIR); +} + int mx_get_magic (const char *path) { struct stat st; --- url.c 2002/07/04 11:04:46 1.1 +++ url.c 2002/07/04 11:04:50 @@ -36,6 +36,7 @@ { "pop", U_POP }, { "pops", U_POPS }, { "mailto", U_MAILTO }, + { "maildir", U_MAILDIR }, { NULL, U_UNKNOWN} }; --- url.h 2002/07/04 11:04:59 1.1 +++ url.h 2002/07/04 11:05:07 @@ -9,6 +9,7 @@ U_IMAP, U_IMAPS, U_MAILTO, + U_MAILDIR, U_UNKNOWN } url_scheme_t; --- browser.c 2002/07/04 11:42:43 1.1 +++ browser.c 2002/07/04 12:06:31 @@ -608,6 +614,8 @@ imap_browse (LastDir, &state); } #endif + if (!buffy && mx_is_maildir (LastDir)) + mutt_expand_path (LastDir, sizeof (LastDir)); } *f = 0; --- mailbox.h 2002/07/04 12:07:27 1.1 +++ mailbox.h 2002/07/04 12:07:37 @@ -73,6 +73,7 @@ #ifdef USE_POP int mx_is_pop (const char *); #endif +int mx_is_maildir (const char *); int mx_access (const char*, int); int mx_check_empty (const char *);