#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>
#include <h/mhcachesbr.h>
#include <h/utils.h>
-static struct swit switches[] = {
-#define CHECKSW 0
- { "check", 0 },
-#define NCHECKSW 1
- { "nocheck", 0 },
-#define EBCDICSW 2
- { "ebcdicsafe", 0 },
-#define NEBCDICSW 3
- { "noebcdicsafe", 0 },
-#define HEADSW 4
- { "headers", 0 },
-#define NHEADSW 5
- { "noheaders", 0 },
-#define LISTSW 6
- { "list", 0 },
-#define NLISTSW 7
- { "nolist", 0 },
-#define SIZESW 8
- { "realsize", 0 },
-#define NSIZESW 9
- { "norealsize", 0 },
-#define RFC934SW 10
- { "rfc934mode", 0 },
-#define NRFC934SW 11
- { "norfc934mode", 0 },
-#define VERBSW 12
- { "verbose", 0 },
-#define NVERBSW 13
- { "noverbose", 0 },
-#define RCACHESW 14
- { "rcache policy", 0 },
-#define WCACHESW 15
- { "wcache policy", 0 },
-#define CONTENTIDSW 16
- { "contentid", 0 },
-#define NCONTENTIDSW 17
- { "nocontentid", 0 },
-#define VERSIONSW 18
- { "version", 0 },
-#define HELPSW 19
- { "help", 0 },
-#define DEBUGSW 20
- { "debug", -5 },
- { NULL, 0 }
-};
+#define MHBUILD_SWITCHES \
+ X("check", 0, CHECKSW) \
+ X("nocheck", 0, NCHECKSW) \
+ X("directives", 0, DIRECTIVES) \
+ X("nodirectives", 0, NDIRECTIVES) \
+ X("headers", 0, HEADSW) \
+ X("noheaders", 0, NHEADSW) \
+ X("list", 0, LISTSW) \
+ X("nolist", 0, NLISTSW) \
+ X("realsize", 0, SIZESW) \
+ X("norealsize", 0, NSIZESW) \
+ X("rfc934mode", 0, RFC934SW) \
+ X("norfc934mode", 0, NRFC934SW) \
+ X("verbose", 0, VERBSW) \
+ X("noverbose", 0, NVERBSW) \
+ X("rcache policy", 0, RCACHESW) \
+ X("wcache policy", 0, WCACHESW) \
+ X("contentid", 0, CONTENTIDSW) \
+ X("nocontentid", 0, NCONTENTIDSW) \
+ X("version", 0, VERSIONSW) \
+ X("help", 0, HELPSW) \
+ X("debug", -5, DEBUGSW) \
+
+#define X(sw, minchars, id) id,
+DEFINE_SWITCH_ENUM(MHBUILD);
+#undef X
+
+#define X(sw, minchars, id) { sw, minchars, id },
+DEFINE_SWITCH_ARRAY(MHBUILD, switches);
+#undef X
/* mhbuildsbr.c */
int debugsw = 0;
int verbosw = 0;
-int ebcdicsw = 0;
int listsw = 0;
int rfc934sw = 0;
int contentidsw = 1;
static void unlink_done (int) NORETURN;
/* mhbuildsbr.c */
-CT build_mime (char *);
+CT build_mime (char *, int);
int output_message (CT, char *);
int output_message_fp (CT, FILE *, char*);
/* mhlistsbr.c */
int list_all_messages (CT *, int, int, int, int);
-/* mhmisc.c */
-void set_endian (void);
-
-/* mhfree.c */
-void free_content (CT);
-
int
main (int argc, char **argv)
{
- int sizesw = 1, headsw = 1;
+ int sizesw = 1, headsw = 1, directives = 1;
int *icachesw;
char *cp, buf[BUFSIZ];
char buffer[BUFSIZ], *compfile = NULL;
case HELPSW:
snprintf (buf, sizeof(buf), "%s [switches] file", invo_name);
print_help (buf, switches, 1);
- done (1);
+ done (0);
case VERSIONSW:
print_version(invo_name);
- done (1);
+ done (0);
case RCACHESW:
icachesw = &rcachesw;
checksw = 0;
continue;
- case EBCDICSW:
- ebcdicsw++;
- continue;
- case NEBCDICSW:
- ebcdicsw = 0;
- continue;
-
case HEADSW:
headsw++;
continue;
headsw = 0;
continue;
+ case DIRECTIVES:
+ directives = 1;
+ continue;
+ case NDIRECTIVES:
+ directives = 0;
+ continue;
+
case LISTSW:
listsw++;
continue;
compfile = cp;
}
- set_endian ();
-
- if ((cp = getenv ("MM_NOASK")) && !strcmp (cp, "1"))
- listsw = 0;
-
/*
* Check if we've specified an additional profile
*/
unlink_infile = 1;
/* build the content structures for MIME message */
- ct = build_mime (infile);
+ ct = build_mime (infile, directives);
cts[0] = ct;
cts[1] = NULL;
*/
/* build the content structures for MIME message */
- ct = build_mime (compfile);
+ ct = build_mime (compfile, directives);
cts[0] = ct;
cts[1] = NULL;