Annotations will always be done inplace from now on.
[mmh] / uip / forw.c
index 8dc26b7..44c32a0 100644 (file)
@@ -33,37 +33,29 @@ static struct swit switches[] = {
        { "format", 5 },
 #define NFRMTSW  7
        { "noformat", 7 },
-#define INPLSW  8
-       { "inplace", 0 },
-#define NINPLSW  9
-       { "noinplace", 0 },
-#define MIMESW  10
+#define MIMESW  8
        { "mime", 0 },
-#define NMIMESW  11
+#define NMIMESW  9
        { "nomime", 0 },
-#define DGSTSW  12
+#define DGSTSW  10
        { "digest list", 0 },
-#define ISSUESW  13
+#define ISSUESW  11
        { "issue number", 0 },
-#define VOLUMSW  14
+#define VOLUMSW  12
        { "volume number", 0 },
-#define WHATSW  15
+#define WHATSW  13
        { "whatnowproc program", 0 },
-#define NWHATSW  16
+#define NWHATSW  14
        { "nowhatnowproc", 0 },
-#define BITSTUFFSW  17
-       { "dashstuffing", 0 },  /* interface to mhl */
-#define NBITSTUFFSW  18
-       { "nodashstuffing", 0 },
-#define VERSIONSW  19
+#define VERSIONSW  15
        { "version", 0 },
-#define HELPSW  20
+#define HELPSW  16
        { "help", 0 },
-#define FILESW  21
+#define FILESW  17
        { "file file", 4 },  /* interface from msh */
 
 #ifdef MHE
-#define BILDSW  22
+#define BILDSW  18
        { "build", 5 },  /* interface from mhe */
 #endif /* MHE */
 
@@ -83,17 +75,17 @@ static struct msgs *mp = NULL;  /* used a lot */
 /*
 ** static prototypes
 */
-static void mhl_draft(int, char *, int, int, char *, char *, int);
-static void copy_draft(int, char *, char *, int, int, int);
-static void copy_mime_draft(int);
+static void mhl_draft(int, char *, int, int, char *, char *);
+static void copy_draft(int, char *, char *, int, int);
+static void add_forw_hdr(char *);
 static int build_form(char *, char *, int, int);
 
 
 int
 main(int argc, char **argv)
 {
-       int msgp = 0, anot = 0, inplace = 1, mime = 0;
-       int issue = 0, volume = 0, dashstuff = 0;
+       int msgp = 0, anot = 0, mime = 0;
+       int issue = 0, volume = 0;
        int nedit = 0, nwhat = 0, in;
        int out, msgnum;
        char *cp, *cwd, *maildir;
@@ -194,13 +186,6 @@ main(int argc, char **argv)
                                filter = NULL;
                                continue;
 
-                       case INPLSW:
-                               inplace++;
-                               continue;
-                       case NINPLSW:
-                               inplace = 0;
-                               continue;
-
                        case MIMESW:
                                mime++;
                                filter = NULL;
@@ -231,13 +216,6 @@ main(int argc, char **argv)
                                        adios(NULL, "bad argument %s %s",
                                                        argp[-2], cp);
                                continue;
-
-                       case BITSTUFFSW:
-                               dashstuff = 1;  /* trinary logic */
-                               continue;
-                       case NBITSTUFFSW:
-                               dashstuff = -1;  /* trinary logic */
-                               continue;
                        }
                }
                if (*cp == '+' || *cp == '@') {
@@ -341,15 +319,16 @@ main(int argc, char **argv)
                ** If filter file is defined, then format the
                ** messages into the draft using mhlproc.
                */
-               if (filter)
-                       mhl_draft(out, digest, volume, issue, drft, filter,
-                                       dashstuff);
-               else if (mime)
-                       copy_mime_draft(out);
-               else
-                       copy_draft(out, digest, drft, volume, issue,
-                                       dashstuff);
-               close(out);
+               if (filter) {
+                       mhl_draft(out, digest, volume, issue, drft, filter);
+                       close(out);
+               } else if (mime) {
+                       close(out);
+                       add_forw_hdr(drft);
+               } else {
+                       copy_draft(out, digest, drft, volume, issue);
+                       close(out);
+               }
 
                if (digest) {
                        snprintf(buf, sizeof(buf), IFORMAT, digest);
@@ -369,7 +348,7 @@ main(int argc, char **argv)
        if (nwhat)
                done(0);
        what_now(ed, nedit, NOUSE, drft, NULL, 0, mp,
-               anot ? "Forwarded" : NULL, inplace, cwd);
+               anot ? "Forwarded" : NULL, cwd);
        done(1);
        return 1;
 }
@@ -380,10 +359,9 @@ main(int argc, char **argv)
 ** draft calling the mhlproc, and reading its output
 ** from a pipe.
 */
-
 static void
 mhl_draft(int out, char *digest, int volume, int issue,
-       char *file, char *filter, int dashstuff)
+       char *file, char *filter)
 {
        pid_t child_id;
        int i, msgnum, pd[2];
@@ -423,16 +401,6 @@ mhl_draft(int out, char *digest, int volume, int issue,
                        vec[i++] = buf2;
                }
 
-               /*
-               ** Are we dashstuffing (quoting) the lines that begin
-               ** with `-'.  We use the mhl default (don't add any
-               ** flag) unless the user has specified a specific flag.
-               */
-               if (dashstuff > 0)
-                       vec[i++] = "-dashstuffing";
-               else if (dashstuff < 0)
-                       vec[i++] = "-nodashstuffing";
-
                if (mp->numsel >= MAXARGS - i)
                        adios(NULL, "more than %d messages for %s exec",
                                        MAXARGS - i, vec[0]);
@@ -466,13 +434,10 @@ mhl_draft(int out, char *digest, int volume, int issue,
 
 /*
 ** Copy the messages into the draft.  The messages are
-** not filtered through the mhlproc.  Do dashstuffing if
-** necessary.
+** not filtered through the mhlproc.  Do dashstuffing.
 */
-
 static void
-copy_draft(int out, char *digest, char *file, int volume, int issue,
-               int dashstuff)
+copy_draft(int out, char *digest, char *file, int volume, int issue)
 {
        int fd,i, msgcnt, msgnum;
        int len, buflen;
@@ -516,12 +481,8 @@ copy_draft(int out, char *digest, char *file, int volume, int issue,
 
                        /*
                        ** Copy the message.  Add RFC934 quoting (dashstuffing)
-                       ** unless given the -nodashstuffing flag.
                        */
-                       if (dashstuff >= 0)
-                               cpydgst(fd, out, msgnam, file);
-                       else
-                               cpydata(fd, out, msgnam, file);
+                       cpydgst(fd, out, msgnam, file);
 
                        close(fd);
                        msgcnt++;
@@ -552,25 +513,25 @@ copy_draft(int out, char *digest, char *file, int volume, int issue,
 
 
 /*
-** Create a mhbuild composition file for forwarding message.
+** Create an attachment header for the to be forward messages.
 */
-
 static void
-copy_mime_draft(int out)
+add_forw_hdr(char *draft)
 {
        int msgnum;
        char buffer[BUFSIZ];
 
-       snprintf(buffer, sizeof(buffer), "#forw [forwarded message%s] +%s",
-                       mp->numsel == 1 ? "" : "s", mp->foldpath);
-       write(out, buffer, strlen(buffer));
-       for (msgnum = mp->lowsel; msgnum <= mp->hghsel; msgnum++)
-               if (is_selected(mp, msgnum)) {
-                       snprintf(buffer, sizeof(buffer), " %s",
-                                       m_name(msgnum));
-                       write(out, buffer, strlen(buffer));
+       snprintf(buffer, sizeof(buffer), "+%s", mp->foldpath);
+       for (msgnum = mp->lowsel; msgnum <= mp->hghsel; msgnum++) {
+               if (!is_selected(mp, msgnum)) {
+                       continue;
                }
-       write(out, "\n", 1);
+               /* TODO: improve the code */
+               strncat(buffer, " ", sizeof(buffer)-strlen(buffer)-1);
+               strncat(buffer, m_name(msgnum),
+                               sizeof(buffer)-strlen(buffer)-1);
+       }
+       annotate(draft, attach_hdr, buffer, 0, -2, 1);
 }