Annotation of 43BSD/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: char   *exmaildir ();
                     17: 
                     18: 
                     19: char   *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   *m_mailpath (folder)
                     36: register char   *folder;
                     37: {
                     38:     register char  *cp;
                     39:     char    maildir[BUFSIZ];
                     40: 
                     41:     if (*folder == '/'
                     42:            || strncmp (folder, CWD, NCWD) == 0
                     43:            || strcmp (folder, DOT) == 0
                     44:            || strcmp (folder, DOTDOT) == 0
                     45:            || strncmp (folder, PWD, NPWD) == 0)
                     46:        cp = path (folder, TFOLDER);
                     47:     else {
                     48:        (void) strcpy (maildir, mailfold);/* preserve... */
                     49:        cp = getcpy (m_maildir (folder));
                     50:        (void) strcpy (mailfold, maildir);
                     51:     }
                     52: 
                     53:     return cp;
                     54: }
                     55: 
                     56: /*  */
                     57: 
                     58: static char *exmaildir (folder)
                     59: register char   *folder;
                     60: {
                     61:     register char  *cp,
                     62:                    *pp;
                     63: 
                     64:     if (folder == NULL)
                     65:        folder = m_getfolder ();
                     66:     if (*folder == '/'
                     67:            || strncmp (folder, CWD, NCWD) == 0
                     68:            || strcmp (folder, DOT) == 0
                     69:            || strcmp (folder, DOTDOT) == 0
                     70:            || strncmp (folder, PWD, NPWD) == 0) {
                     71:        (void) strcpy (mailfold, folder);
                     72:        return mailfold;
                     73:     }
                     74: 
                     75:     cp = mailfold;
                     76:     if ((pp = m_find ("path")) != NULL && *pp) {
                     77:        if (*pp != '/') {
                     78:            (void) sprintf (cp, "%s/", mypath);
                     79:            cp += strlen (cp);
                     80:        }
                     81:        cp = copy (pp, cp);
                     82:     }
                     83:     else
                     84:        cp = copy (path ("./", TFOLDER), cp);
                     85:     if (cp[-1] != '/')
                     86:        *cp++ = '/';
                     87:     (void) strcpy (cp, folder);
                     88: 
                     89:     return mailfold;
                     90: }

unix.superglobalmegacorp.com

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