]> diplodocus.org Git - nmh/blobdiff - uip/mhstore.c
Remove trailing spaces from lines in man pages.
[nmh] / uip / mhstore.c
index 67792c525955e902cc1764e6c0e5e99248708e6c..98e6239675592185cba448e156b67f68fa0bb014 100644 (file)
@@ -29,6 +29,7 @@
     X("outfile outfile", 0, OUTFILESW) \
     X("part number", 0, PARTSW) \
     X("type content", 0, TYPESW) \
+    X("prefer content", 0, PREFERSW) \
     X("rcache policy", 0, RCACHESW) \
     X("wcache policy", 0, WCACHESW) \
     X("version", 0, VERSIONSW) \
@@ -51,12 +52,6 @@ extern int wcachesw;
 extern char *cache_public;
 extern char *cache_private;
 
-/* mhstoresbr.c */
-typedef struct mhstoreinfo *mhstoreinfo_t;
-mhstoreinfo_t mhstoreinfo_create(CT *, char *, const char *, int, int);
-int mhstoreinfo_files_not_clobbered(const mhstoreinfo_t);
-void mhstoreinfo_free(mhstoreinfo_t);
-
 /* mhmisc.c */
 extern int npart;
 extern int ntype;
@@ -64,6 +59,11 @@ extern char *parts[NPARTS + 1];
 extern char *types[NTYPES + 1];
 extern int userrs;
 
+/* mhparse.c */
+extern char *preferred_types[];
+extern  char *preferred_subtypes[];
+extern int npreferred;
+
 #define        quitser pipeser
 
 /* mhparse.c */
@@ -71,13 +71,10 @@ int debugsw = 0;
 CT parse_mime (char *);
 
 /* mhmisc.c */
-int part_ok (CT, int);
+int part_ok (CT);
 int type_ok (CT, int);
 void flush_errors (void);
 
-/* mhstoresbr.c */
-void store_all_messages (mhstoreinfo_t);
-
 /* mhfree.c */
 extern CT *cts;
 void freects_done (int) NORETURN;
@@ -184,6 +181,18 @@ do_cache:
                types[ntype++] = cp;
                continue;
 
+           case PREFERSW:
+               if (!(cp = *argp++) || *cp == '-')
+                   adios (NULL, "missing argument to %s", argp[-2]);
+               if (npreferred >= NPREFS)
+                   adios (NULL, "too many preferred types (starting with %s), %d max",
+                          cp, NPREFS);
+               preferred_types[npreferred] = cp;
+               cp = strchr(cp, '/');
+               if (cp) *cp++ = '\0';
+               preferred_subtypes[npreferred++] = cp;
+               continue;
+
            case FILESW:
                if (!(cp = *argp++) || (*cp == '-' && cp[1]))
                    adios (NULL, "missing argument to %s", argp[-2]);
@@ -269,14 +278,13 @@ do_cache:
      * check if message is coming from file
      */
     if (file) {
-       if (!(cts = (CT *) mh_xcalloc ((size_t) 2, sizeof(*cts))))
-           adios (NULL, "out of memory");
+       cts = mh_xcalloc(2, sizeof *cts);
        ctp = cts;
 
        if ((ct = parse_mime (file))) {
            *ctp++ = ct;
            if (outfile) {
-               ct->c_storage = add (outfile, NULL);
+               ct->c_storage = mh_xstrdup(outfile);
            }
         }
     } else {
@@ -306,8 +314,7 @@ do_cache:
                done (1);
        seq_setprev (mp);       /* set the previous-sequence */
 
-       if (!(cts = (CT *) mh_xcalloc ((size_t) (mp->numsel + 1), sizeof(*cts))))
-           adios (NULL, "out of memory");
+       cts = mh_xcalloc(mp->numsel + 1, sizeof *cts);
        ctp = cts;
 
        for (msgnum = mp->lowsel; msgnum <= mp->hghsel; msgnum++) {
@@ -318,7 +325,7 @@ do_cache:
                if ((ct = parse_mime (msgnam))) {
                    *ctp++ = ct;
                    if (outfile) {
-                       ct->c_storage = add (outfile, NULL);
+                       ct->c_storage = mh_xstrdup(outfile);
                    }
                 }
            }