DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T m

⟦e373d5661⟧ TextFile

    Length: 1737 (0x6c9)
    Types: TextFile
    Names: »m_maildir.c«

Derivation

└─⟦9ae75bfbd⟧ Bits:30007242 EUUGD3: Starter Kit
    └─⟦3658e588a⟧ »EurOpenD3/mail/mh/mh-6.7.tar.Z« 
        └─⟦c75e36ecb⟧ 
            └─⟦this⟧ »mh-6.7/sbr/m_maildir.c« 

TextFile

/* m_maildir.c - get the path for the mail directory */

#include "../h/mh.h"
#include <stdio.h>

#define	CWD	"./"
#define	NCWD	(sizeof CWD - 1)
#define	DOT	"."
#define	DOTDOT	".."
#define	PWD	"../"
#define	NPWD	(sizeof PWD - 1)


static char mailfold[BUFSIZ];

static char   *exmaildir ();


char   *m_maildir (folder)
register char   *folder;
{
    register char  *cp,
                   *ep;

    if ((cp = exmaildir (folder))
	    && (ep = cp + strlen (cp) - 1) > cp
	    && *ep == '/')
	*ep = NULL;

    return cp;
}

/* \f

 */

char   *m_mailpath (folder)
register char   *folder;
{
    register char  *cp;
    char    maildir[BUFSIZ];

    if (*folder == '/'
	    || strncmp (folder, CWD, NCWD) == 0
	    || strcmp (folder, DOT) == 0
	    || strcmp (folder, DOTDOT) == 0
	    || strncmp (folder, PWD, NPWD) == 0)
	cp = path (folder, TFOLDER);
    else {
	(void) strcpy (maildir, mailfold);/* preserve... */
	cp = getcpy (m_maildir (folder));
	(void) strcpy (mailfold, maildir);
    }

    return cp;
}

/* \f

 */

static char *exmaildir (folder)
register char   *folder;
{
    register char  *cp,
                   *pp;

    if (folder == NULL)
	folder = m_getfolder ();
    if (*folder == '/'
	    || strncmp (folder, CWD, NCWD) == 0
	    || strcmp (folder, DOT) == 0
	    || strcmp (folder, DOTDOT) == 0
	    || strncmp (folder, PWD, NPWD) == 0) {
	(void) strcpy (mailfold, folder);
	return mailfold;
    }

    cp = mailfold;
    if ((pp = m_find ("path")) != NULL && *pp) {
	if (*pp != '/') {
	    (void) sprintf (cp, "%s/", mypath);
	    cp += strlen (cp);
	}
	cp = copy (pp, cp);
    }
    else
	cp = copy (path ("./", TFOLDER), cp);
    if (cp[-1] != '/')
	*cp++ = '/';
    (void) strcpy (cp, folder);

    return mailfold;
}