]> diplodocus.org Git - nmh/blobdiff - uip/mhcachesbr.c
Document changes to mhbuild.
[nmh] / uip / mhcachesbr.c
index 2c188653a3a8d104aed9c15c15cce034dceb9b20..136b567807e6c9b84506b8dda4ba3982d57aa238 100644 (file)
@@ -11,8 +11,6 @@
 #include <fcntl.h>
 #include <h/signals.h>
 #include <h/md5.h>
-#include <errno.h>
-#include <signal.h>
 #include <h/mts.h>
 #include <h/tws.h>
 #include <h/mime.h>
@@ -96,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);
@@ -108,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) {
@@ -153,11 +143,11 @@ cache_content (CT ct)
 
            if (ferror (gp)) {
                admonish (ce->ce_file, "error reading");
-               unlink (cachefile);
+               (void) m_unlink (cachefile);
            } else {
                if (ferror (fp)) {
                    admonish (cachefile, "error writing");
-                   unlink (cachefile);
+                   (void) m_unlink (cachefile);
                }
            }
            fclose (fp);
@@ -283,7 +273,7 @@ got_it:
     if (status == OK && writing) {
        if (*writing && strchr(buffer, '/'))
            make_intermediates (buffer);
-       unlink (buffer);
+       (void) m_unlink (buffer);
     }
 
     free (id);
@@ -352,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 == '/')
@@ -384,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);
                    }
                }
@@ -415,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;
 }