/*
- * 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
- * complete copyright information.
- *
- * Four new options have been added: delete, list, number, and draft.
- * Message header fields are used by the new MIME attachment code in
- * the send command. Adding features to generalize the anno command
- * seemed to be a better approach than the creation of a new command
- * whose features would overlap with those of the anno command.
- *
- * The -draft option causes anno to operate on the current draft file
- * instead of on a message sequence.
- *
- * The -delete option deletes header elements that match the -component
- * field name. If -delete is used without the -text option, the first
- * header field whose field name matches the component name is deleted.
- * If the -delete is used with the -text option, and the -text argument
- * begins with a /, the first header field whose field name matches the
- * component name and whose field body matches the text is deleted. If
- * the -text argument does not begin with a /, then the text is assumed
- * to be the last component of a path name, and the first header field
- * whose field name matches the component name and a field body whose
- * last path name component matches the text is deleted. If the -delete
- * option is used with the new -number option described below, the nth
- * header field whose field name matches the component name is deleted.
- * No header fields are deleted if none of the above conditions are met.
- *
- * The -list option outputs the field bodies from each header field whose
- * field name matches the component name, one per line. If no -text
- * 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
- * below, each line is numbered starting with 1. A tab separates the
- * number from the field body.
- *
- * The -number option works with both the -delete and -list options as
- * described above. The -number option takes an optional argument. A
- * value of 1 is assumed if this argument is absent.
- */
+** 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
+** complete copyright information.
+**
+** Three new options have been added: delete, list, and number.
+** Message header fields are used by the new MIME attachment code in
+** the send command. Adding features to generalize the anno command
+** seemed to be a better approach than the creation of a new command
+** whose features would overlap with those of the anno command.
+**
+** The -delete option deletes header elements that match the -component
+** field name. If -delete is used without the -text option, the first
+** header field whose field name matches the component name is deleted.
+** If the -delete is used with the -text option, and the -text argument
+** begins with a /, the first header field whose field name matches the
+** component name and whose field body matches the text is deleted. If
+** the -text argument does not begin with a /, then the text is assumed
+** to be the last component of a path name, and the first header field
+** whose field name matches the component name and a field body whose
+** last path name component matches the text is deleted. If the -delete
+** option is used with the new -number option described below, the nth
+** header field whose field name matches the component name is deleted.
+** No header fields are deleted if none of the above conditions are met.
+**
+** The -list option outputs the field bodies from each header field whose
+** field name matches the component name, one per line. If no -text
+** 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
+** below, each line is numbered starting with 1. A tab separates the
+** number from the field body.
+**
+** The -number option works with both the -delete and -list options as
+** described above. The -number option takes an optional argument. A
+** value of 1 is assumed if this argument is absent.
+*/
#include <h/mh.h>
#include <h/utils.h>
{ "version", 0 },
#define HELPSW 7
{ "help", 0 },
-#define DRFTSW 8
- { "draft", 2 },
-#define LISTSW 9
+#define LISTSW 8
{ "list", 1 },
-#define DELETESW 10
+#define DELETESW 9
{ "delete", 2 },
-#define NUMBERSW 11
+#define NUMBERSW 10
{ "number", 2 },
-#define APPENDSW 12
+#define APPENDSW 11
{ "append", 1 },
-#define PRESERVESW 13
+#define PRESERVESW 12
{ "preserve", 1 },
-#define NOPRESERVESW 14
+#define NOPRESERVESW 13
{ "nopreserve", 3 },
{ NULL, 0 }
};
/*
- * static prototypes
- */
+** static prototypes
+*/
static void make_comp (unsigned char **);
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 */
- 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 */
delete = 0;
continue;
- case DRFTSW: /* draft message specified */
- draft = "";
- continue;
-
case LISTSW: /* produce a listing */
list = 1;
continue;
else
folder = pluspath (cp);
} else
- app_msgarg(&msgs, cp);
- }
-
- /*
- * We're dealing with the draft message instead of message numbers.
- * Get the name of the draft and deal with it just as we do with
- * message numbers below.
- */
-
- if (draft != (char *)0) {
- if (msgs.size != 0)
- adios(NULL, "can only have message numbers or -draft.");
-
- draft = getcpy(m_draft(folder, (char *)0, 1, &isdf));
-
- make_comp(&comp);
-
- if (list)
- annolist(draft, comp, text, number);
- else
- annotate (draft, comp, text, inplace, datesw, delete, append);
-
- done(0);
- return 1;
+ app_msgarg(&msgs, cp);
}
#ifdef UCI