X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/03fe41ba1d68108808c966c6d7ff74bd8c1d648c..ef1ba39e8dae81091b6c3e73e72825ef6edea3c6:/uip/anno.c diff --git a/uip/anno.c b/uip/anno.c index ab15a4a0..53769304 100644 --- a/uip/anno.c +++ b/uip/anno.c @@ -34,7 +34,7 @@ * option is specified, only the last path name component of each field * body is output. The entire field body is output if the -text option * is used; the contents of the -text argument are ignored. If the -list - * option is used in conjuction with the new -number option described + * option is used in conjunction with the new -number option described * below, each line is numbered starting with 1. A tab separates the * number from the field body. * @@ -46,44 +46,35 @@ #include #include -static struct swit switches[] = { -#define COMPSW 0 - { "component field", 0 }, -#define INPLSW 1 - { "inplace", 0 }, -#define NINPLSW 2 - { "noinplace", 0 }, -#define DATESW 3 - { "date", 0 }, -#define NDATESW 4 - { "nodate", 0 }, -#define TEXTSW 5 - { "text body", 0 }, -#define VERSIONSW 6 - { "version", 0 }, -#define HELPSW 7 - { "help", 0 }, -#define DRFTSW 8 - { "draft", 2 }, -#define LISTSW 9 - { "list", 1 }, -#define DELETESW 10 - { "delete", 2 }, -#define NUMBERSW 11 - { "number", 2 }, -#define APPENDSW 12 - { "append", 1 }, -#define PRESERVESW 13 - { "preserve", 1 }, -#define NOPRESERVESW 14 - { "nopreserve", 3 }, - { NULL, 0 } -}; +#define ANNO_SWITCHES \ + X("component field", 0, COMPSW) \ + X("inplace", 0, INPLSW) \ + X("noinplace", 0, NINPLSW) \ + X("date", 0, DATESW) \ + X("nodate", 0, NDATESW) \ + X("text body", 0, TEXTSW) \ + X("version", 0, VERSIONSW) \ + X("help", 0, HELPSW) \ + X("draft", 2, DRFTSW) \ + X("list", 1, LISTSW) \ + X("delete", 2, DELETESW) \ + X("number", 2, NUMBERSW) \ + X("append", 1, APPENDSW) \ + X("preserve", 1, PRESERVESW) \ + X("nopreserve", 3, NOPRESERVESW) \ + +#define X(sw, minchars, id) id, +DEFINE_SWITCH_ENUM(ANNO); +#undef X + +#define X(sw, minchars, id) { sw, minchars, id }, +DEFINE_SWITCH_ARRAY(ANNO, switches); +#undef X /* * static prototypes */ -static void make_comp (unsigned char **); +static void make_comp (char **); int @@ -92,25 +83,18 @@ main (int argc, char **argv) int inplace = 1, datesw = 1; int msgnum; char *cp, *maildir; - unsigned char *comp = NULL; - char *text = NULL, *folder = NULL, buf[BUFSIZ]; + char *comp = NULL, *text = NULL, *folder = NULL, buf[BUFSIZ]; char **argp, **arguments; struct msgs_array msgs = { 0, 0, NULL }; struct msgs *mp; int append = 0; /* append annotations instead of default prepend */ int delete = -2; /* delete header element if set */ - char *draft = (char *)0; /* draft file name */ + char *draft = NULL; /* draft file name */ int isdf = 0; /* return needed for m_draft() */ int list = 0; /* list header elements if set */ int number = 0; /* delete specific number of like elements if set */ -#ifdef LOCALE - setlocale(LC_ALL, ""); -#endif - invo_name = r1bindex (argv[0], '/'); - - /* read user profile/context */ - context_read(); + if (nmh_init(argv[0], 1)) { return 1; } arguments = getarguments (invo_name, argc, argv, 1); argp = arguments; @@ -128,10 +112,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 COMPSW: if (comp) @@ -221,11 +205,11 @@ main (int argc, char **argv) * message numbers below. */ - if (draft != (char *)0) { + if (draft != NULL) { if (msgs.size != 0) adios(NULL, "can only have message numbers or -draft."); - draft = getcpy(m_draft(folder, (char *)0, 1, &isdf)); + draft = getcpy(m_draft(folder, NULL, 1, &isdf)); make_comp(&comp); @@ -250,7 +234,7 @@ main (int argc, char **argv) adios (maildir, "unable to change directory to"); /* read folder and create message structure */ - if (!(mp = folder_read (folder))) + if (!(mp = folder_read (folder, 1))) adios (NULL, "unable to read folder %s", folder); /* check for empty folder */ @@ -284,10 +268,9 @@ main (int argc, char **argv) } static void -make_comp (unsigned char **ap) +make_comp (char **ap) { - register unsigned char *cp; - char buffer[BUFSIZ]; + char *cp, buffer[BUFSIZ]; if (*ap == NULL) { printf ("Enter component name: "); @@ -300,7 +283,7 @@ make_comp (unsigned char **ap) if ((cp = *ap + strlen (*ap) - 1) > *ap && *cp == ':') *cp = 0; - if (strlen (*ap) == 0) + if (!**ap) adios (NULL, "null component name"); if (**ap == '-') adios (NULL, "invalid component name %s", *ap); @@ -308,6 +291,6 @@ make_comp (unsigned char **ap) adios (NULL, "too large component name %s", *ap); for (cp = *ap; *cp; cp++) - if (!isalnum (*cp) && *cp != '-') + if (!isalnum ((unsigned char) *cp) && *cp != '-') adios (NULL, "invalid component name %s", *ap); }