]> diplodocus.org Git - nmh/blobdiff - uip/mhstoresbr.c
Remove trailing spaces from lines in man pages.
[nmh] / uip / mhstoresbr.c
index 7e91563fd406078fa439528c2247263dc344cb51..c9725ffdee4c239f83a1f40316b429152b3af62a 100644 (file)
@@ -40,6 +40,8 @@ struct mhstoreinfo {
     enum clobber_policy_t clobber_policy;  /* -clobber selection */
 };
 
+static bool use_param_as_filename(const char *p);
+
 mhstoreinfo_t
 mhstoreinfo_create (CT *ct, char *pwd, const char *csw, int asw, int vsw) {
     mhstoreinfo_t info;
@@ -292,7 +294,7 @@ store_multi (CT ct, mhstoreinfo_t info)
                /* Support mhstore -outfile.  The MIME parser doesn't
                   load c_storage, so we know that p->c_storage is
                   NULL here. */
-               p->c_storage = add (ct->c_storage, NULL);
+               p->c_storage = mh_xstrdup(ct->c_storage);
            }
            result = store_switch (p, info);
 
@@ -395,7 +397,7 @@ missing_part:
     ct = *ctq++;
     if (store_content (ct, NULL, info) == NOTOK) {
 losing:
-       free ((char *) base);
+       free(base);
        return NOTOK;
     }
 
@@ -405,7 +407,7 @@ losing:
            goto losing;
     }
 
-    free ((char *) base);
+    free(base);
     return OK;
 }
 
@@ -431,16 +433,11 @@ store_external (CT ct, mhstoreinfo_t info)
     if (info->autosw) {
        char *cp;
 
-       if ((cp = e->eb_name)
-           && *cp != '/'
-           && *cp != '.'
-           && *cp != '|'
-           && *cp != '!'
-           && !strchr (cp, '%')) {
+       if ((cp = e->eb_name) && use_param_as_filename(cp)) {
            if (!ct->c_storeproc)
-               ct->c_storeproc = add (cp, NULL);
+               ct->c_storeproc = mh_xstrdup(cp);
            if (!p->c_storeproc)
-               p->c_storeproc = add (cp, NULL);
+               p->c_storeproc = mh_xstrdup(cp);
        }
     }
 
@@ -456,7 +453,7 @@ store_external (CT ct, mhstoreinfo_t info)
     if (ct->c_storage) {
        /* Support mhstore -outfile.  The MIME parser doesn't load
           c_storage, so we know that p->c_storage is NULL here. */
-       p->c_storage = add (ct->c_storage, NULL);
+       p->c_storage = mh_xstrdup(ct->c_storage);
     }
     result = store_switch (p, info);
 
@@ -537,7 +534,7 @@ store_content (CT ct, CT p, mhstoreinfo_t info)
 
                /* record the folder name */
                if (p->c_folder) {
-                   ct->c_folder = add (p->c_folder, NULL);
+                   ct->c_folder = mh_xstrdup(p->c_folder);
                }
            }
            goto got_filename;
@@ -575,7 +572,7 @@ store_content (CT ct, CT p, mhstoreinfo_t info)
                adios(NULL, "unable to create temporary file in %s",
                      get_temp_dir());
            }
-           ct->c_storage = add (tmpfilenam, NULL);
+           ct->c_storage = mh_xstrdup(tmpfilenam);
 
            /* Get the folder name */
            if (cp[1])
@@ -609,7 +606,7 @@ store_content (CT ct, CT p, mhstoreinfo_t info)
            return show_content_aux (ct, 0, buffer + 1, info->dir, NULL);
 
         /* record the filename */
-       if ((ct->c_storage = clobber_check (add (buffer, NULL), info)) ==
+       if ((ct->c_storage = clobber_check (mh_xstrdup(buffer), info)) ==
            NULL) {
            return NOTOK;
        }
@@ -650,7 +647,7 @@ got_filename:
             if (first_partial)
                 fprintf (stderr, "reassembling partials ");
             if (last_partial)
-                fprintf (stderr, "%s", ct->c_file);
+                fputs(ct->c_file, stderr);
             else
                 fprintf (stderr, "%s,", ct->c_file);
         } else {
@@ -674,7 +671,7 @@ got_filename:
                 int cwdlen = strlen (info->cwd);
 
                 fprintf (stderr, " as file %s\n",
-                         strncmp (ct->c_storage, info->cwd, cwdlen)
+                         !has_prefix(ct->c_storage, info->cwd)
                          || ct->c_storage[cwdlen] != '/'
                          ? ct->c_storage : ct->c_storage + cwdlen + 1);
             }
@@ -835,7 +832,7 @@ losing:
        }
     }
 
-    while (fgets (buffer, sizeof(buffer) - 1, ct->c_fp)) {
+    while (fgets (buffer, sizeof buffer, ct->c_fp)) {
        if ((pos += strlen (buffer)) > last) {
            int diff;
 
@@ -1068,18 +1065,13 @@ get_storeproc (CT ct)
      * use that (RFC-2183).
      */
     if (ct->c_dispo) {
-       if ((cp = get_param(ct->c_dispo_first, "filename", '_', 0))
-               && *cp != '/'
-               && *cp != '.'
-               && *cp != '|'
-               && *cp != '!'
-               && !strchr (cp, '%')) {
-               ct->c_storeproc = add (cp, NULL);
+       if ((cp = get_param(ct->c_dispo_first, "filename", '_', 0)) &&
+            use_param_as_filename(cp)) {
+               ct->c_storeproc = mh_xstrdup(cp);
                free(cp);
                return;
        }
-       if (cp)
-           free(cp);
+        mh_xfree(cp);
     }
 
     /*
@@ -1088,17 +1080,12 @@ get_storeproc (CT ct)
      * the storeproc.
      */
     ci = &ct->c_ctinfo;
-    if ((cp = get_param(ci->ci_first_pm, "name", '_', 0))
-         && *cp != '/'
-         && *cp != '.'
-         && *cp != '|'
-         && *cp != '!'
-         && !strchr (cp, '%')) {
-           ct->c_storeproc = add (cp, NULL);
+    if ((cp = get_param(ci->ci_first_pm, "name", '_', 0)) &&
+        use_param_as_filename(cp)) {
+           ct->c_storeproc = mh_xstrdup(cp);
 
     }
-    if (cp)
-       free(cp);
+    mh_xfree(cp);
 }
 
 
@@ -1241,7 +1228,7 @@ clobber_check (char *original_file, mhstoreinfo_t info) {
     /* Save cwd for possible use in loop below. */
     char *slash;
 
-    cwd = add (original_file, NULL);
+    cwd = mh_xstrdup(original_file);
     slash = strrchr (cwd, '/');
 
     if (slash) {
@@ -1311,17 +1298,17 @@ clobber_check (char *original_file, mhstoreinfo_t info) {
                 file = NULL;
                 ++info->files_not_clobbered;
               } else {
-                TrimSuffixC(buf, '\n');
+                trim_suffix_c(buf, '\n');
               }
 
               free (file);
 
               if (buf[0] == '/') {
                 /* Full path, use it. */
-                file = add (buf, NULL);
+                file = mh_xstrdup(buf);
               } else {
                 /* Relative path. */
-                file = cwd  ?  concat (cwd, "/", buf, NULL)  :  add (buf, NULL);
+                file = cwd  ?  concat (cwd, "/", buf, NULL)  :  mh_xstrdup(buf);
               }
 
               check_again = 1;
@@ -1351,5 +1338,12 @@ clobber_check (char *original_file, mhstoreinfo_t info) {
   return file;
 }
 
+static bool use_param_as_filename(const char *p)
+{
+    /* Preserve result of original test that considered an empty string
+     * OK. */
+    return !*p || (!strchr("/.|!", *p) && !strchr(p, '%'));
+}
+
 /* -clobber support */
 /******************************************************************************/