Added -clobber switch to mhstore(1) [Bug #11160].
[mmh] / uip / mhstore.c
index 7814dd2..fa30e03 100644 (file)
@@ -47,16 +47,21 @@ static struct swit switches[] = {
     { "version", 0 },
 #define        HELPSW                 12
     { "help", 0 },
+#define        CLOBBERSW              13
+    { "clobber always|auto|suffix|ask|never", 0 },
 
 /*
  * switches for debugging
  */
-#define        DEBUGSW                13
+#define        DEBUGSW                14
     { "debug", -5 },
     { NULL, 0 }
 };
 
 
+int save_clobber_policy (const char *);
+extern int files_not_clobbered;
+
 /* mhparse.c */
 extern char *tmp;      /* directory to place temp files */
 
@@ -145,10 +150,10 @@ main (int argc, char **argv)
                snprintf (buf, sizeof(buf), "%s [+folder] [msgs] [switches]",
                        invo_name);
                print_help (buf, switches, 1);
-               done (1);
+               done (0);
            case VERSIONSW:
                print_version(invo_name);
-               done (1);
+               done (0);
 
            case AUTOSW:
                autosw++;
@@ -213,6 +218,14 @@ do_cache:
            case NVERBSW: 
                verbosw = 0;
                continue;
+            case CLOBBERSW:
+               if (!(cp = *argp++) || *cp == '-')
+                   adios (NULL, "missing argument to %s", argp[-2]);
+                if (save_clobber_policy (cp)) {
+                  adios (NULL, "invalid argument, %s, to %s", argp[-1],
+                         argp[-2]);
+                }
+               continue;
            case DEBUGSW:
                debugsw = 1;
                continue;
@@ -231,8 +244,6 @@ do_cache:
     parts[npart] = NULL;
     types[ntype] = NULL;
 
-    set_endian ();
-
     /*
      * Check if we've specified an additional profile
      */
@@ -377,7 +388,7 @@ do_cache:
        context_save ();                  /* save the context file  */
     }
 
-    done (0);
+    done (files_not_clobbered);
     return 1;
 }