|
|
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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.