X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=uip%2Fmhstore.c;h=fa30e035fa24c24ce84d4cf2b58dba1f16df2c40;hb=108ac3fa0df7dfd51988a15ff6355508172aa9bb;hp=7b44a96504494a1f799b861dac0f5d125ada2c51;hpb=5dd6771b28c257af405d7248639ed0e3bcdce38b;p=mmh diff --git a/uip/mhstore.c b/uip/mhstore.c index 7b44a96..fa30e03 100644 --- a/uip/mhstore.c +++ b/uip/mhstore.c @@ -20,10 +20,6 @@ #include #include -#ifdef HAVE_SYS_WAIT_H -# include -#endif - static struct swit switches[] = { #define AUTOSW 0 { "auto", 0 }, @@ -51,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 */ @@ -92,7 +93,6 @@ CT parse_mime (char *); /* mhmisc.c */ int part_ok (CT, int); int type_ok (CT, int); -void set_endian (void); void flush_errors (void); /* mhstoresbr.c */ @@ -106,7 +106,7 @@ void freects_done (int) NORETURN; /* * static prototypes */ -static RETSIGTYPE pipeser (int); +static void pipeser (int); int @@ -150,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++; @@ -218,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; @@ -236,8 +244,6 @@ do_cache: parts[npart] = NULL; types[ntype] = NULL; - set_endian (); - /* * Check if we've specified an additional profile */ @@ -296,7 +302,7 @@ do_cache: adios (NULL, "out of memory"); ctp = cts; - if ((ct = parse_mime (file))); + if ((ct = parse_mime (file))) *ctp++ = ct; } else { /* @@ -382,12 +388,12 @@ do_cache: context_save (); /* save the context file */ } - done (0); + done (files_not_clobbered); return 1; } -static RETSIGTYPE +static void pipeser (int i) { if (i == SIGQUIT) {