X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/7879ea4084333b448c5a3a49c1cb52023e3808d1..167e542b:/uip/mhcachesbr.c?ds=sidebyside diff --git a/uip/mhcachesbr.c b/uip/mhcachesbr.c index 4f1f9d7a..0bf725c6 100644 --- a/uip/mhcachesbr.c +++ b/uip/mhcachesbr.c @@ -2,39 +2,27 @@ /* * mhcachesbr.c -- routines to manipulate the MIME content cache * - * $Id$ + * This code is Copyright (c) 2002, by the authors of nmh. See the + * COPYRIGHT file in the root directory of the nmh distribution for + * complete copyright information. */ #include #include #include #include -#include -#include -#include -#include +#include #include #include #include #include +#include -#ifdef TIME_WITH_SYS_TIME +#ifdef HAVE_SYS_TIME_H # include -# include -#else -# ifdef TM_IN_SYS_TIME -# include -# else -# include -# endif #endif +#include -#ifdef HAVE_SYS_WAIT_H -# include -#endif - - -extern int errno; extern int debugsw; extern pid_t xpid; /* mhshowsbr.c or mhbuildsbr.c */ @@ -51,13 +39,9 @@ char *cache_public; char *cache_private; -/* mhparse.c (OR) mhbuildsbr.c */ -int pidcheck (int); - /* mhmisc.c */ int part_ok (CT, int); int type_ok (CT, int); -int make_intermediates (char *); void content_error (char *, CT, char *, ...); void flush_errors (void); @@ -110,7 +94,7 @@ cache_content (CT ct) { int cachetype; char *file, cachefile[BUFSIZ]; - CE ce = ct->c_cefile; + CE ce = &ct->c_cefile; if (!ct->c_id) { advise (NULL, "no %s: field in %s", ID_FIELD, ct->c_file); @@ -122,14 +106,6 @@ cache_content (CT ct) return; } -/* THIS NEEDS TO BE FIXED */ -#if 0 - if (ct->c_ceopenfnx == openMail) { - advise (NULL, "a radish may no know Greek, but I do..."); - return; - } -#endif - if (find_cache (NULL, wcachesw != CACHE_NEVER ? wcachesw : CACHE_ASK, &cachetype, ct->c_id, cachefile, sizeof(cachefile)) == NOTOK) { @@ -315,11 +291,7 @@ find_cache_aux (int writing, char *directory, char *id, static int partno, pid; static time_t clock = 0; -#ifdef BSD42 - usemap = strchr (id, '/') ? 1 : 0; -#else usemap = 1; -#endif if (debugsw) fprintf (stderr, "find_cache_aux %s usemap=%d\n", directory, usemap); @@ -370,19 +342,19 @@ use_raw: make_intermediates (mapfile); mask = umask (writing == 2 ? 0077 : 0); - if (!(fp = lkfopen (mapfile, "a")) && errno == ENOENT) { + if (!(fp = lkfopendata (mapfile, "a")) && errno == ENOENT) { int fd; if ((fd = creat (mapfile, 0666)) != NOTOK) { close (fd); - fp = lkfopen (mapfile, "a"); + fp = lkfopendata (mapfile, "a"); } } umask (mask); if (!fp) return NOTOK; fprintf (fp, "%s: %s\n", mapname, id); - lkfclose (fp, mapfile); + lkfclosedata (fp, mapfile); done_map: if (*mapname == '/') @@ -402,25 +374,27 @@ find_cache_aux2 (char *mapfile, char *id, char *mapname, int namelen) int state; char buf[BUFSIZ], name[NAMESZ]; FILE *fp; + m_getfld_state_t gstate = 0; - if (!(fp = lkfopen (mapfile, "r"))) + if (!(fp = lkfopendata (mapfile, "r"))) return NOTOK; - for (state = FLD;;) { + for (;;) { int result; char *cp, *dp; + int bufsz = sizeof buf; - switch (state = m_getfld (state, name, buf, sizeof(buf), fp)) { + switch (state = m_getfld (&gstate, name, buf, &bufsz, fp)) { case FLD: case FLDPLUS: - case FLDEOF: strncpy (mapname, name, namelen); if (state != FLDPLUS) cp = buf; else { cp = add (buf, NULL); while (state == FLDPLUS) { - state = m_getfld (state, name, buf, sizeof(buf), fp); + bufsz = sizeof buf; + state = m_getfld (&gstate, name, buf, &bufsz, fp); cp = add (buf, cp); } } @@ -433,22 +407,20 @@ find_cache_aux2 (char *mapfile, char *id, char *mapname, int namelen) result = strcmp (id, dp); free (dp); if (result == 0) { - lkfclose (fp, mapfile); + lkfclosedata (fp, mapfile); return OK; } - if (state != FLDEOF) - continue; - /* else fall... */ + continue; case BODY: - case BODYEOF: case FILEEOF: default: break; } break; } + m_getfld_state_destroy (&gstate); - lkfclose (fp, mapfile); + lkfclosedata (fp, mapfile); return NOTOK; }