X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/0a032eea07f6d77ac6ea4d5a39c9491c34358058..ec173fd2c:/uip/anno.c?ds=sidebyside diff --git a/uip/anno.c b/uip/anno.c index d47a31de..5e3b0a23 100644 --- a/uip/anno.c +++ b/uip/anno.c @@ -1,5 +1,4 @@ -/* - * anno.c -- annotate messages +/* anno.c -- annotate messages * * This code is Copyright (c) 2002, by the authors of nmh. See the * COPYRIGHT file in the root directory of the nmh distribution for @@ -42,8 +41,30 @@ * value of 1 is assumed if this argument is absent. */ -#include -#include +#include "h/mh.h" +#include "annosbr.h" +#include "sbr/m_name.h" +#include "sbr/getarguments.h" +#include "sbr/seq_setcur.h" +#include "sbr/seq_save.h" +#include "sbr/smatch.h" +#include "sbr/trimcpy.h" +#include "sbr/m_draft.h" +#include "sbr/m_convert.h" +#include "sbr/getfolder.h" +#include "sbr/folder_read.h" +#include "sbr/folder_free.h" +#include "sbr/context_save.h" +#include "sbr/context_replace.h" +#include "sbr/context_find.h" +#include "sbr/ambigsw.h" +#include "sbr/path.h" +#include "sbr/print_version.h" +#include "sbr/print_help.h" +#include "sbr/error.h" +#include "h/utils.h" +#include "h/done.h" +#include "sbr/m_maildir.h" #define ANNO_SWITCHES \ X("component field", 0, COMPSW) \ @@ -79,25 +100,27 @@ static void make_comp (char **); int main (int argc, char **argv) { - int inplace = 1, datesw = 1; + bool inplace, datesw; int msgnum; char *cp, *maildir; 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 */ + bool append; /* append annotations instead of default prepend */ int delete = -2; /* delete header element if set */ char *draft = NULL; /* draft file name */ int isdf = 0; /* return needed for m_draft() */ - int list = 0; /* list header elements if set */ + bool list; /* list header elements if set */ int number = 0; /* delete specific number of like elements if set */ - if (nmh_init(argv[0], 1)) { return 1; } + if (nmh_init(argv[0], true, true)) { return 1; } arguments = getarguments (invo_name, argc, argv, 1); argp = arguments; + append = list = false; + inplace = datesw = true; while ((cp = *argp++)) { if (*cp == '-') { switch (smatch (++cp, switches)) { @@ -105,7 +128,7 @@ main (int argc, char **argv) ambigsw (cp, switches); done (1); case UNKWNSW: - adios (NULL, "-%s unknown", cp); + die("-%s unknown", cp); case HELPSW: snprintf (buf, sizeof(buf), "%s [+folder] [msgs] [switches]", @@ -118,30 +141,30 @@ main (int argc, char **argv) case COMPSW: if (comp) - adios (NULL, "only one component at a time!"); + die("only one component at a time!"); if (!(comp = *argp++) || *comp == '-') - adios (NULL, "missing argument to %s", argp[-2]); + die("missing argument to %s", argp[-2]); continue; case DATESW: - datesw++; + datesw = true; continue; case NDATESW: - datesw = 0; + datesw = false; continue; case INPLSW: - inplace++; + inplace = true; continue; case NINPLSW: - inplace = 0; + inplace = false; continue; case TEXTSW: if (text) - adios (NULL, "only one body at a time!"); + die("only one body at a time!"); if (!(text = *argp++) || *text == '-') - adios (NULL, "missing argument to %s", argp[-2]); + die("missing argument to %s", argp[-2]); continue; case DELETESW: /* delete annotations */ @@ -153,12 +176,12 @@ main (int argc, char **argv) continue; case LISTSW: /* produce a listing */ - list = 1; + list = true; continue; case NUMBERSW: /* number listing or delete by number */ if (number != 0) - adios (NULL, "only one number at a time!"); + die("only one number at a time!"); if (argp - arguments == argc - 1 || **argp == '-') number = 1; @@ -168,7 +191,7 @@ main (int argc, char **argv) number = -1; else if (!(number = atoi(*argp))) - adios (NULL, "missing argument to %s", argp[-1]); + die("missing argument to %s", argp[-1]); argp++; } @@ -177,7 +200,7 @@ main (int argc, char **argv) continue; case APPENDSW: /* append annotations instead of default prepend */ - append = 1; + append = true; continue; case PRESERVESW: /* preserve access and modification times on annotated message */ @@ -191,9 +214,8 @@ main (int argc, char **argv) } if (*cp == '+' || *cp == '@') { if (folder) - adios (NULL, "only one folder at a time!"); - else - folder = pluspath (cp); + die("only one folder at a time!"); + folder = pluspath (cp); } else app_msgarg(&msgs, cp); } @@ -206,9 +228,9 @@ main (int argc, char **argv) if (draft != NULL) { if (msgs.size != 0) - adios(NULL, "can only have message numbers or -draft."); + die("can only have message numbers or -draft."); - draft = getcpy(m_draft(folder, NULL, 1, &isdf)); + draft = mh_xstrdup(m_draft(folder, NULL, 1, &isdf)); make_comp(&comp); @@ -234,11 +256,11 @@ main (int argc, char **argv) /* read folder and create message structure */ if (!(mp = folder_read (folder, 1))) - adios (NULL, "unable to read folder %s", folder); + die("unable to read folder %s", folder); /* check for empty folder */ if (mp->nummsg == 0) - adios (NULL, "no messages in %s", folder); + die("no messages in %s", folder); /* parse all the message ranges/sequences and set SELECTED */ for (msgnum = 0; msgnum < msgs.size; msgnum++) @@ -272,7 +294,7 @@ make_comp (char **ap) char *cp, buffer[BUFSIZ]; if (*ap == NULL) { - printf ("Enter component name: "); + fputs("Enter component name: ", stdout); fflush (stdout); if (fgets (buffer, sizeof buffer, stdin) == NULL) @@ -283,13 +305,13 @@ make_comp (char **ap) if ((cp = *ap + strlen (*ap) - 1) > *ap && *cp == ':') *cp = 0; if (!**ap) - adios (NULL, "null component name"); + die("null component name"); if (**ap == '-') - adios (NULL, "invalid component name %s", *ap); + die("invalid component name %s", *ap); if (strlen (*ap) >= NAMESZ) - adios (NULL, "too large component name %s", *ap); + die("too large component name %s", *ap); for (cp = *ap; *cp; cp++) if (!isalnum ((unsigned char) *cp) && *cp != '-') - adios (NULL, "invalid component name %s", *ap); + die("invalid component name %s", *ap); }