Annotation of 43BSDReno/contrib/mh/sbr/m_maildir.c, revision 1.1.1.1

1.1       root        1: /* m_maildir.c - get the path for the mail directory */
                      2: 
                      3: #include "../h/mh.h"
                      4: #include <stdio.h>
                      5: 
                      6: #define        CWD     "./"
                      7: #define        NCWD    (sizeof CWD - 1)
                      8: #define        DOT     "."
                      9: #define        DOTDOT  ".."
                     10: #define        PWD     "../"
                     11: #define        NPWD    (sizeof PWD - 1)
                     12: 
                     13: 
                     14: static char mailfold[BUFSIZ];
                     15: 
                     16: static char *exmaildir();
                     17: 
                     18: char *
                     19: m_maildir(folder)
                     20:        register char *folder;
                     21: {
                     22:     register char  *cp,
                     23:                    *ep;
                     24: 
                     25:     if ((cp = exmaildir (folder))
                     26:            && (ep = cp + strlen (cp) - 1) > cp
                     27:            && *ep == '/')
                     28:        *ep = NULL;
                     29: 
                     30:     return cp;
                     31: }
                     32: 
                     33: /*  */
                     34: 
                     35: char *
                     36: m_mailpath(folder)
                     37:        register char *folder;
                     38: {
                     39:     register char  *cp;
                     40:     char    maildir[BUFSIZ];
                     41: 
                     42:     if (*folder == '/'
                     43:            || strncmp (folder, CWD, NCWD) == 0
                     44:            || strcmp (folder, DOT) == 0
                     45:            || strcmp (folder, DOTDOT) == 0
                     46:            || strncmp (folder, PWD, NPWD) == 0)
                     47:        cp = path (folder, TFOLDER);
                     48:     else {
                     49:        (void) strcpy (maildir, mailfold);/* preserve... */
                     50:        cp = getcpy (m_maildir (folder));
                     51:        (void) strcpy (mailfold, maildir);
                     52:     }
                     53: 
                     54:     return cp;
                     55: }
                     56: 
                     57: /*  */
                     58: 
                     59: static char *
                     60: exmaildir(folder)
                     61:        register char *folder;
                     62: {
                     63:     register char  *cp,
                     64:                    *pp;
                     65: 
                     66:     if (folder == NULL)
                     67:        folder = m_getfolder ();
                     68:     if (*folder == '/'
                     69:            || strncmp (folder, CWD, NCWD) == 0
                     70:            || strcmp (folder, DOT) == 0
                     71:            || strcmp (folder, DOTDOT) == 0
                     72:            || strncmp (folder, PWD, NPWD) == 0) {
                     73:        (void) strcpy (mailfold, folder);
                     74:        return mailfold;
                     75:     }
                     76: 
                     77:     cp = mailfold;
                     78:     if ((pp = m_find ("path")) != NULL && *pp) {
                     79:        if (*pp != '/') {
                     80:            (void) sprintf (cp, "%s/", mypath);
                     81:            cp += strlen (cp);
                     82:        }
                     83:        cp = copy (pp, cp);
                     84:     }
                     85:     else
                     86:        cp = copy (path ("./", TFOLDER), cp);
                     87:     if (cp[-1] != '/')
                     88:        *cp++ = '/';
                     89:     (void) strcpy (cp, folder);
                     90: 
                     91:     return mailfold;
                     92: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.