Removed the draft message in favor for a consistent draft folder facility
authormarkus schnalke <meillo@marmaro.de>
Sun, 30 Oct 2011 10:35:54 +0000 (11:35 +0100)
committermarkus schnalke <meillo@marmaro.de>
Sun, 30 Oct 2011 10:35:54 +0000 (11:35 +0100)
- reworked sbr/m_draft.c (of course)
- removed the -draftfolder/-draftmessage/-nodraftfolder switches
- removed the -draft switch from anno and refile
- no more need to question on existing draft message - yay!
Everything is more consistent now. Cornercases went away. :-)

(Also fixed the switch numbering, as already done for other files earlier.)

29 files changed:
config/config.c
docs/COMPLETION-BASH
docs/COMPLETION-ZSH
h/mh.h
h/prototypes.h
man/anno.man
man/comp.man
man/dist.man
man/forw.man
man/mh-chart.man
man/mh-draft.man
man/refile.man
man/repl.man
man/send.man
man/show.man
man/whatnow.man
sbr/m_draft.c
sbr/readconfig.c
uip/anno.c
uip/comp.c
uip/dist.c
uip/forw.c
uip/mhparam.c
uip/refile.c
uip/repl.c
uip/rmm.c
uip/send.c
uip/show.c
uip/whatnowsbr.c

index 97a24ff..5d11ef3 100644 (file)
@@ -121,7 +121,7 @@ char *mhlformat = "mhl.format";            /* show         */
 char *mhlreply = "mhl.reply";              /* repl -filter */
 char *mhlforward = "mhl.forward";          /* forw -filter */
 
 char *mhlreply = "mhl.reply";              /* repl -filter */
 char *mhlforward = "mhl.forward";          /* forw -filter */
 
-char *draft = "draft";
+char *draftfolder = "drafts";
 
 char *inbox = "Inbox";
 char *defaultfolder = "inbox";
 
 char *inbox = "Inbox";
 char *defaultfolder = "inbox";
index 1e84c1e..806c934 100644 (file)
@@ -41,8 +41,8 @@ _nmh()
                     -noverbose -version -help)
             ;;
         comp )
                     -noverbose -version -help)
             ;;
         comp )
-            options=(-form -use -nouse -file -draftfolder -draftmessage
-                    -nodraftfolder -editor -noedit -whatnowproc -nowhatnowproc
+            options=(-form -use -nouse -file
+                    -editor -noedit -whatnowproc -nowhatnowproc
                     -version -help )
            ;;
         flist* )
                     -version -help )
            ;;
         flist* )
@@ -58,8 +58,8 @@ _nmh()
             ;;
         forw )
             options=(-annotate -noannotate -form -format -noformat
             ;;
         forw )
             options=(-annotate -noannotate -form -format -noformat
-                    -filter -inplace -noinplace -mime -nomime -draftfolder
-                    -draftmessage -nodraftfolder -editor -noedit -whatnowproc
+                    -filter -inplace -noinplace -mime -nomime
+                    -editor -noedit -whatnowproc
                     -nowhatnowproc -dashstuffing -nodashstuffing -build -file
                     -version -help)
             ;;
                     -nowhatnowproc -dashstuffing -nodashstuffing -build -file
                     -version -help)
             ;;
@@ -96,8 +96,8 @@ _nmh()
         repl )
             options=(-annotate -noannotate -group -nogroup -cc
                     -nocc -query -noquery -form -format -noformat -filter
         repl )
             options=(-annotate -noannotate -group -nogroup -cc
                     -nocc -query -noquery -form -format -noformat -filter
-                    -inplace -noinplace -mime -nomime -fcc -width -draftfolder
-                    -draftmessage -nodraftfolder -editor -noedit -whatnowproc
+                    -inplace -noinplace -mime -nomime -fcc -width
+                    -editor -noedit -whatnowproc
                     -nowhatnowproc -build -file -version -help)
             ;;
         rmf )
                     -nowhatnowproc -build -file -version -help)
             ;;
         rmf )
index fe8e422..666f7e1 100644 (file)
@@ -43,8 +43,7 @@ function mhcomp {
 #
 # Extract nmh message names and numbers for completion.  Use of the
 # correct folder, if it is not the current one, requires that it
 #
 # Extract nmh message names and numbers for completion.  Use of the
 # correct folder, if it is not the current one, requires that it
-# should be the previous command line argument.  If the previous
-# argument is `-draftmessage', a hard wired draft folder name is used.
+# should be the previous command line argument.
 #
 mhfseq() {
   local folder foldpath words pos nums
 #
 mhfseq() {
   local folder foldpath words pos nums
@@ -55,11 +54,6 @@ mhfseq() {
   # First try the previous word.
   if [[ $words[$pos-1] = [@+]* ]]; then
     folder=$words[$pos-1]
   # First try the previous word.
   if [[ $words[$pos-1] = [@+]* ]]; then
     folder=$words[$pos-1]
-  # Next look and see if we're looking for a draftmessage
-  elif [[ $words[$pos-1] = -draftmessage ]]; then
-    # EDIT ME:  shortcut -- hard-wire draftfolder here
-    # Should really look for a +draftfolder argument.
-    folder=+drafts
   fi
   # Else use the current folder ($folder empty)
 
   fi
   # Else use the current folder ($folder empty)
 
@@ -125,17 +119,17 @@ compctl -K mhfseq -x 's[+][@]' -K mhcomp -S / -q - \
   's[-]' -k "(sequence all noall recurse norecurse showzero noshowzero \
   alpha noalpha fast nofast help)" -- flist flists
 
   's[-]' -k "(sequence all noall recurse norecurse showzero noshowzero \
   alpha noalpha fast nofast help)" -- flist flists
 
-compctl -K mhfseq -x 's[+][@],c[-1,-draftfolder] s[+][@]' \
-  -K mhcomp -S / -q - 'c[-1,-draftmessage]' -K mhfseq - \
+compctl -K mhfseq -x 's[+][@],c[-1] s[+][@]' \
+  -K mhcomp -S / -q - 'c[-1]' -K mhfseq - \
   'C[-1,-(editor|whatnowproc)]' -c - \
   'C[-1,-(editor|whatnowproc)]' -c - \
-  's[-]' -k "(draftfolder draftmessage nodraftfolder editor noedit \
+  's[-]' -k "(editor noedit \
   file form use nouse whatnowproc nowhatnowproc help)" - \
   'c[-1,-form]' -K mhfile -- comp
 
 compctl -K mhfseq -x 's[+][@]' \
   file form use nouse whatnowproc nowhatnowproc help)" - \
   'c[-1,-form]' -K mhfile -- comp
 
 compctl -K mhfseq -x 's[+][@]' \
-  -K mhcomp -S / -q - 'c[-1,-draftmessage]'  -K mhfseq -\
-  's[-]' -k "(annotate noannotate cc nocc draftfolder nodraftfolder \
-  draftmessage editor noedit fcc filter form group nogroup inplace noinplace
+  -K mhcomp -S / -q - 'c[-1]'  -K mhfseq -\
+  's[-]' -k "(annotate noannotate cc nocc \
+  editor noedit fcc filter form group nogroup inplace noinplace
   query noquery width whatnowproc nowhatnowproc help)" - 'c[-1,(cc|nocc)]' \
   -k "(all to cc me)" - 'C[-1,-(filter|form)]' -K mhfile - \
   'C[-1,-(editor|whatnowproc)]' -c -- repl
   query noquery width whatnowproc nowhatnowproc help)" - 'c[-1,(cc|nocc)]' \
   -k "(all to cc me)" - 'C[-1,-(filter|form)]' -K mhfile - \
   'C[-1,-(editor|whatnowproc)]' -c -- repl
diff --git a/h/mh.h b/h/mh.h
index 58d1e1d..35c8b41 100644 (file)
--- a/h/mh.h
+++ b/h/mh.h
@@ -306,7 +306,7 @@ extern char *defaulteditor;
 extern char *defaultfolder;
 extern char *digestcomps;
 extern char *distcomps;
 extern char *defaultfolder;
 extern char *digestcomps;
 extern char *distcomps;
-extern char *draft;
+extern char *draftfolder;
 extern char *faceproc;
 extern char *fileproc;
 extern char *foldprot;
 extern char *faceproc;
 extern char *fileproc;
 extern char *foldprot;
index 4907410..c54172b 100644 (file)
@@ -67,7 +67,7 @@ int lkopen(char *, int, mode_t);
 int m_atoi (char *);
 char *m_backup (char *);
 int m_convert (struct msgs *, char *);
 int m_atoi (char *);
 char *m_backup (char *);
 int m_convert (struct msgs *, char *);
-char *m_draft (char *, char *, int, int *);
+char *m_draft (char *);
 int m_getfld (int, unsigned char *, unsigned char *, int, FILE *);
 int m_gmprot (void);
 char *m_maildir (char *);
 int m_getfld (int, unsigned char *, unsigned char *, int, FILE *);
 int m_gmprot (void);
 char *m_maildir (char *);
index f97efa5..1436f73 100644 (file)
@@ -14,7 +14,6 @@ anno \- annotate messages
 .IR field ]
 .RB [ \-inplace " | " \-noinplace ]
 .RB [ \-date " | " \-nodate ]
 .IR field ]
 .RB [ \-inplace " | " \-noinplace ]
 .RB [ \-date " | " \-nodate ]
-.RB [ \-draft ]
 .RB [ \-append ]
 .RB [ \-list ]
 .RB [ \-delete ]
 .RB [ \-append ]
 .RB [ \-list ]
 .RB [ \-delete ]
@@ -39,11 +38,9 @@ option specifies the field name, and the
 .B -text
 option specifies the field body.
 .PP
 .B -text
 option specifies the field body.
 .PP
-The messages are either the
+The messages are the
 .I msgs
 .I msgs
-in the named folder, or the draft if invoked with the
-.B -draft
-option.
+in the named folder.
 .PP
 Usually, annotation is performed by the commands
 .BR dist ,
 .PP
 Usually, annotation is performed by the commands
 .BR dist ,
index b9c4bc6..1e0c9f8 100644 (file)
@@ -15,11 +15,6 @@ comp \- compose a message
 .RB [ \-use " | " \-nouse ]
 .RB [ \-file
 .IR file ]
 .RB [ \-use " | " \-nouse ]
 .RB [ \-file
 .IR file ]
-.RB [ \-draftfolder
-.IR +folder ]
-.RB [ \-draftmessage
-.IR msg ]
-.RB [ \-nodraftfolder ]
 .RB [ \-editor
 .IR editor ]
 .RB [ \-noedit ]
 .RB [ \-editor
 .IR editor ]
 .RB [ \-noedit ]
@@ -120,16 +115,7 @@ argument to
 .B refile
 is required.)
 .PP
 .B refile
 is required.)
 .PP
-The
-.B \-draftfolder
-.I +folder
-and
-.B \-draftmessage
-.I msg
-switches invoke the
-.B nmh
-draft folder facility.  This is an advanced (and highly
-useful) feature.  Consult the
+Consult the
 .BR mh-draft (5)
 man page for more information.
 .PP
 .BR mh-draft (5)
 man page for more information.
 .PP
@@ -161,7 +147,7 @@ will prevent any edit from occurring.)
 ^%etcdir%/components~^The standard message skeleton
 ^or <mh\-dir>/components~^Rather than the standard skeleton
 ^$HOME/\&.mh\(ruprofile~^The user profile
 ^%etcdir%/components~^The standard message skeleton
 ^or <mh\-dir>/components~^Rather than the standard skeleton
 ^$HOME/\&.mh\(ruprofile~^The user profile
-^<mh\-dir>/draft~^The draft file
+^<mh\dir>/drafts~^The draft folder
 .fi
 
 .SH "PROFILE COMPONENTS"
 .fi
 
 .SH "PROFILE COMPONENTS"
@@ -170,7 +156,7 @@ will prevent any edit from occurring.)
 .ta 2.4i
 .ta \w'ExtraBigProfileName  'u
 ^Path:~^To determine the user's nmh directory
 .ta 2.4i
 .ta \w'ExtraBigProfileName  'u
 ^Path:~^To determine the user's nmh directory
-^Draft\-Folder:~^To find the default draft\-folder
+^Draft\-Folder:~^To set the default draft\-folder
 ^Editor:~^To override the default editor
 ^Msg\-Protect:~^To set mode when creating a new message (draft)
 ^fileproc:~^Program to refile the message
 ^Editor:~^To override the default editor
 ^Msg\-Protect:~^To set mode when creating a new message (draft)
 ^fileproc:~^Program to refile the message
@@ -184,7 +170,6 @@ dist(1), forw(1), repl(1), send(1), whatnow(1), mh-profile(5)
 .nf
 .RB ` +folder "' defaults to the current folder"
 .RB ` msg "' defaults to the current message"
 .nf
 .RB ` +folder "' defaults to the current folder"
 .RB ` msg "' defaults to the current message"
-.RB ` \-nodraftfolder '
 .RB ` \-nouse '
 .fi
 
 .RB ` \-nouse '
 .fi
 
index 7598e46..4f0ff85 100644 (file)
@@ -14,11 +14,6 @@ dist \- redistribute a message to additional addresses
 .IR formfile ]
 .RB [ \-annotate " | " \-noannotate ]
 .RB [ \-inplace " | " \-noinplace ]
 .IR formfile ]
 .RB [ \-annotate " | " \-noannotate ]
 .RB [ \-inplace " | " \-noinplace ]
-.RB [ \-draftfolder
-.IR +folder ]
-.RB [ \-draftmessage
-.IR msg ]
-.RB [ \-nodraftfolder ]
 .RB [ \-editor
 .IR editor ]
 .RB [ \-noedit ]
 .RB [ \-editor
 .IR editor ]
 .RB [ \-noedit ]
@@ -53,18 +48,6 @@ forms file with the switch
 .IR formfile .
 The form used will be prepended to the message being resent.
 .PP
 .IR formfile .
 The form used will be prepended to the message being resent.
 .PP
-If the draft already exists,
-.B dist
-will ask you as to the disposition of the draft.  A reply of
-.B quit
-will abort
-.BR dist ,
-leaving the draft intact;
-.B replace
-will replace the existing draft with a blank skeleton; and
-.B list
-will display the draft.
-.PP
 Only those addresses in
 .RI \*(lq Resent\-To: \*(rq,
 .RI \*(lq Resent\-cc: \*(rq,
 Only those addresses in
 .RI \*(lq Resent\-To: \*(rq,
 .RI \*(lq Resent\-cc: \*(rq,
@@ -120,16 +103,7 @@ and the pathname of
 the folder containing the message is stored in the environment variable
 .BR $mhfolder .
 .PP
 the folder containing the message is stored in the environment variable
 .BR $mhfolder .
 .PP
-The
-.B \-draftfolder
-.I +folder
-and
-.B \-draftmessage
-.I msg
-switches invoke the
-.B nmh
-draft folder facility.  This is an advanced (and highly
-useful) feature.  Consult the
+Consult the
 .BR mh-draft (5)
 man page for more information.
 .PP
 .BR mh-draft (5)
 man page for more information.
 .PP
@@ -155,7 +129,7 @@ will prevent any edit from occurring.)
 ^%etcdir%/distcomps~^The standard message skeleton
 ^or <mh\-dir>/distcomps~^Rather than the standard skeleton
 ^$HOME/\&.mh\(ruprofile~^The user profile
 ^%etcdir%/distcomps~^The standard message skeleton
 ^or <mh\-dir>/distcomps~^Rather than the standard skeleton
 ^$HOME/\&.mh\(ruprofile~^The user profile
-^<mh\-dir>/draft~^The draft file
+^<mh\-dir>/drafts~^The draft folder
 .fi
 
 .SH "PROFILE COMPONENTS"
 .fi
 
 .SH "PROFILE COMPONENTS"
@@ -165,7 +139,7 @@ will prevent any edit from occurring.)
 .ta \w'ExtraBigProfileName  'u
 ^Path:~^To determine the user's nmh directory
 ^Current\-Folder:~^To find the default current folder
 .ta \w'ExtraBigProfileName  'u
 ^Path:~^To determine the user's nmh directory
 ^Current\-Folder:~^To find the default current folder
-^Draft\-Folder:~^To find the default draft\-folder
+^Draft\-Folder:~^To set the default draft\-folder
 ^Editor:~^To override the default editor
 ^fileproc:~^Program to refile the message
 ^whatnowproc:~^Program to ask the \*(lqWhat now?\*(rq questions
 ^Editor:~^To override the default editor
 ^fileproc:~^Program to refile the message
 ^whatnowproc:~^Program to ask the \*(lqWhat now?\*(rq questions
@@ -179,7 +153,6 @@ comp(1), forw(1), repl(1), send(1), whatnow(1)
 .RB ` +folder "' defaults to the current folder"
 .RB ` msg "' defaults to cur"
 .RB ` \-noannotate '
 .RB ` +folder "' defaults to the current folder"
 .RB ` msg "' defaults to cur"
 .RB ` \-noannotate '
-.RB ` \-nodraftfolder '
 .RB ` \-inplace '
 .fi
 
 .RB ` \-inplace '
 .fi
 
index 3ff187f..e5c25c9 100644 (file)
@@ -18,11 +18,6 @@ forw \- forward messages
 .IR filterfile ]
 .RB [ \-inplace " | " \-noinplace ]
 .RB [ \-mime " | " \-nomime ]
 .IR filterfile ]
 .RB [ \-inplace " | " \-noinplace ]
 .RB [ \-mime " | " \-nomime ]
-.RB [ \-draftfolder
-.IR +folder ]
-.RB [ \-draftmessage
-.IR msg ]
-.RB [ \-nodraftfolder ]
 .RB [ \-editor
 .IR editor ]
 .RB [ \-noedit ]
 .RB [ \-editor
 .IR editor ]
 .RB [ \-noedit ]
@@ -78,19 +73,6 @@ alternate forms file with the switch
 .B \-form
 .IR formfile .
 .PP
 .B \-form
 .IR formfile .
 .PP
-If the draft already exists,
-.B forw
-will ask you as to the disposition
-of the draft.  A reply of
-.B quit
-will abort
-.BR forw ,
-leaving the draft intact;
-.B replace
-will replace the existing draft with a blank skeleton; and
-.B list
-will display the draft.
-.PP
 If the
 .B \-annotate
 switch is given, each message being forwarded will
 If the
 .B \-annotate
 switch is given, each message being forwarded will
@@ -228,16 +210,7 @@ What now? mime
 .PP
 prior to sending the draft.
 .PP
 .PP
 prior to sending the draft.
 .PP
-The
-.B \-draftfolder
-.I +folder
-and
-.B \-draftmessage
-.I msg
-switches invoke the
-.B nmh
-draft folder facility.  This is an advanced (and highly
-useful) feature.  Consult the
+Consult the
 .BR mh-draft (5)
 man page for more information.
 .PP
 .BR mh-draft (5)
 man page for more information.
 .PP
@@ -343,7 +316,7 @@ User's Manual for more information on making digests.
 ^%etcdir%/mhl.forward~^The standard message filter
 ^or <mh\-dir>/mhl.forward~^Rather than the standard filter
 ^$HOME/\&.mh\(ruprofile~^The user profile
 ^%etcdir%/mhl.forward~^The standard message filter
 ^or <mh\-dir>/mhl.forward~^Rather than the standard filter
 ^$HOME/\&.mh\(ruprofile~^The user profile
-^<mh\-dir>/draft~^The draft file
+^<mh\-dir>/drafts~^The draft folder
 .fi
 
 .SH "PROFILE COMPONENTS"
 .fi
 
 .SH "PROFILE COMPONENTS"
@@ -353,7 +326,7 @@ User's Manual for more information on making digests.
 .ta \w'ExtraBigProfileName  'u
 ^Path:~^To determine the user's nmh directory
 ^Current\-Folder:~^To find the default current folder
 .ta \w'ExtraBigProfileName  'u
 ^Path:~^To determine the user's nmh directory
 ^Current\-Folder:~^To find the default current folder
-^Draft\-Folder:~^To find the default draft\-folder
+^Draft\-Folder:~^To set the default draft\-folder
 ^Editor:~^To override the default editor
 ^Msg\-Protect:~^To set mode when creating a new message (draft)
 ^fileproc:~^Program to refile the message
 ^Editor:~^To override the default editor
 ^Msg\-Protect:~^To set mode when creating a new message (draft)
 ^fileproc:~^Program to refile the message
@@ -371,7 +344,6 @@ mhbuild(1), comp(1), repl(1), send(1), whatnow(1), mh\-format(5),
 .RB ` +folder "' defaults to the current folder"
 .RB ` msgs "' defaults to cur"
 .RB ` \-noannotate '
 .RB ` +folder "' defaults to the current folder"
 .RB ` msgs "' defaults to cur"
 .RB ` \-noannotate '
-.RB ` \-nodraftfolder '
 .RB ` \-noformat '
 .RB ` \-inplace '
 .RB ` \-dashstuffing '
 .RB ` \-noformat '
 .RB ` \-inplace '
 .RB ` \-dashstuffing '
index c498b74..a630b76 100644 (file)
@@ -63,11 +63,6 @@ mh-chart \- Chart of nmh Commands
 .RB [ \-use " | " \-nouse ]
 .RB [ \-file
 .IR file ]
 .RB [ \-use " | " \-nouse ]
 .RB [ \-file
 .IR file ]
-.RB [ \-draftfolder
-.IR +folder ]
-.RB [ \-draftmessage
-.IR msg ]
-.RB [ \-nodraftfolder ]
 .RB [ \-editor
 .IR editor ]
 .RB [ \-noedit ]
 .RB [ \-editor
 .IR editor ]
 .RB [ \-noedit ]
@@ -96,11 +91,6 @@ mh-chart \- Chart of nmh Commands
 .IR formfile ]
 .RB [ \-annotate " | " \-noannotate ]
 .RB [ \-inplace " | " \-noinplace ]
 .IR formfile ]
 .RB [ \-annotate " | " \-noannotate ]
 .RB [ \-inplace " | " \-noinplace ]
-.RB [ \-draftfolder
-.IR +folder ]
-.RB [ \-draftmessage
-.IR msg ]
-.RB [ \-nodraftfolder ]
 .RB [ \-editor
 .IR editor ]
 .RB [ \-noedit ]
 .RB [ \-editor
 .IR editor ]
 .RB [ \-noedit ]
@@ -192,11 +182,6 @@ is equivalent to
 .IR filterfile ]
 .RB [ \-inplace " | " \-noinplace ]
 .RB [ \-mime " | " \-nomime ]
 .IR filterfile ]
 .RB [ \-inplace " | " \-noinplace ]
 .RB [ \-mime " | " \-nomime ]
-.RB [ \-draftfolder
-.IR +folder ]
-.RB [ \-draftmessage
-.IR msg ]
-.RB [ \-nodraftfolder ]
 .RB [ \-editor
 .IR editor ]
 .RB [ \-noedit ]
 .RB [ \-editor
 .IR editor ]
 .RB [ \-noedit ]
@@ -579,11 +564,6 @@ all/to/cc/me]
 .IR +folder ]
 .RB [ \-width
 .IR columns ]
 .IR +folder ]
 .RB [ \-width
 .IR columns ]
-.RB [ \-draftfolder
-.IR +folder ]
-.RB [ \-draftmessage
-.IR msg ]
-.RB [ \-nodraftfolder ]
 .RB [ \-editor
 .IR editor ]
 .RB [ \-noedit ]
 .RB [ \-editor
 .IR editor ]
 .RB [ \-noedit ]
@@ -633,12 +613,6 @@ all/to/cc/me]
 .B send
 .RB [ \-alias
 .IR aliasfile ]
 .B send
 .RB [ \-alias
 .IR aliasfile ]
-.RB [ \-draft ]
-.RB [ \-draftfolder
-.IR +folder ]
-.RB [ \-draftmessage
-.IR msg ]
-.RB [ \-nodraftfolder ]
 .RB [ \-filter
 .IR filterfile ]
 .RB [ \-nofilter ]
 .RB [ \-filter
 .IR filterfile ]
 .RB [ \-nofilter ]
@@ -716,11 +690,6 @@ or
 
 .HP 5
 .B whatnow
 
 .HP 5
 .B whatnow
-.RB [ \-draftfolder
-.IR +folder ]
-.RB [ \-draftmessage
-.IR msg ]
-.RB [ \-nodraftfolder ]
 .RB [ \-editor
 .IR editor ]
 .RB [ \-noedit ]
 .RB [ \-editor
 .IR editor ]
 .RB [ \-noedit ]
index 63b7b0d..bd84166 100644 (file)
@@ -19,109 +19,33 @@ The
 .BR forw ,
 and
 .B repl
 .BR forw ,
 and
 .B repl
-commands have two additional switches,
-.B \-draftfolder
-.I +folder
-and
-.B \-draftmessage
-.I msg
-which allow you to manipulate the various draft messages you are composing.
+commands allow you to manipulate various draft messages simultanely
 .PP
 .PP
-If
-.B \-draftfolder
-.I +folder
-is used, these commands are
-directed to construct a draft message in the indicated folder.
+Draft messages are created in the draft folder.
 (The
 .RI \*(lq Draft\-Folder \*(rq
 (The
 .RI \*(lq Draft\-Folder \*(rq
-profile entry may be used to declare a default draft folder for use with
-.BR comp ,
-.BR dist ,
-.BR forw ,
-and
-.BR repl ).
+profile entry may be used to change the default draft folder.
 .PP
 .PP
-If the swith
-.B \-draftmessage
-.I msg
-is given, the specified draft is used to compose the message.  If
-.B \-draftmessage
-.I msg
-is not used, then the
-draft defaults to `new' (create a new draft) unless the user invokes
+New drafts are created unless the user invokes
 .B comp
 with
 .BR \-use ,
 .B comp
 with
 .BR \-use ,
-in which case the default is `cur'.
+in which case the current draft is used.
 .PP
 .PP
-Hence, the user may have several message compositions in progress
-simultaneously.  Now, all of the
-.B nmh
-tools are available on each of the user's message drafts (e.g.
-.BR show ,
-.BR scan ,
-.BR pick ,
-and so on).  If the folder does not exist, the user is asked if it should be
-created (just like with
-.BR refile ).
-Also, the last draft message
+The last draft message
 the user was composing is known as `cur' in the draft folder.
 .PP
 the user was composing is known as `cur' in the draft folder.
 .PP
-Furthermore, the
-.B send
-command has these switches as well.  Hence,
-from the shell, the user can send off whatever drafts desired using the
+The user can send off whatever drafts desired from the shell using the
 standard
 .B nmh
 standard
 .B nmh
-`msgs' convention with
-.B \-draftmessage
-.IR msgs .
-If no `msgs' are given, it defaults to `cur'.
-.PP
-In addition, all five programs have a
-.B \-nodraftfolder
-switch, which undoes the last occurrence of
-.B \-draftfolder
-.I folder
-(useful if the latter occurs in the user's
-.B nmh
-profile).
-.PP
-If the user does not give the
-.B \-draftfolder
-.I +folder
-switch, then all these commands act \*(lqnormally\*(rq.  Note that the
-.B \-draft
-switch to
+`msgs' convention to the
 .B send
 .B send
-and
-.B show
-still refers to the file called `draft' in the user's
-.B nmh
-directory.  In the interests of economy of expression, when using
-.B comp
-or
-.BR send ,
-the user needn't prefix the draft `msg' or `msgs' with
-.BR \-draftmessage .
-Both of these
-commands accept a `file' or `files' argument, and they will, if given
-.B \-draftfolder
-.I +folder
-treat these arguments as `msg' or `msgs'. (This may appear to be
-inconsistent, at first, but it saves a lot of typing) Hence,
-.PP
-.RS
-.nf
-send -draftfolder +drafts first
-.fi
-.RE
-.PP
-is the same as
+command..
+If no `msgs' are given, it defaults to `cur'.
 .PP
 .RS
 .nf
 .PP
 .RS
 .nf
-send -draftfolder +drafts -draftmessage first
+send first
 .fi
 .RE
 .PP
 .fi
 .RE
 .PP
@@ -133,17 +57,10 @@ profile:
 .RS 5
 .nf
 Draft\-Folder: +drafts
 .RS 5
 .nf
 Draft\-Folder: +drafts
-sendf: \-draftfolder +drafts
 .fi
 .RE
 .PP
 .fi
 .RE
 .PP
-Furthermore, let's assume that the program
-.B sendf
-is a (symbolic) link in the user's
-.I $HOME/bin/
-directory to
-.BR send .
-Then, any of the commands
+Any of the commands
 .PP
 .RS 5
 .nf
 .PP
 .RS 5
 .nf
@@ -154,7 +71,7 @@ repl
 .fi
 .RE
 .PP
 .fi
 .RE
 .PP
-constructs the message draft in the `draft' folder using the `new'
+constructs the message draft in the draft folder using the `new'
 message number.  Furthermore, they each define `cur' in this folder to
 be that message draft.  If the user were to use the
 .B quit
 message number.  Furthermore, they each define `cur' in this folder to
 be that message draft.  If the user were to use the
 .B quit
@@ -163,7 +80,7 @@ was done, the draft could be sent with simply
 .PP
 .RS 5
 .nf
 .PP
 .RS 5
 .nf
-sendf
+send
 .fi
 .RE
 .PP
 .fi
 .RE
 .PP
@@ -195,7 +112,7 @@ or
 .PP
 .RS 5
 .nf
 .PP
 .RS 5
 .nf
-sendf `pick +drafts -to nmh-workers`
+send `pick +drafts -to nmh-workers`
 .fi
 .RE
 .PP
 .fi
 .RE
 .PP
@@ -212,123 +129,15 @@ example, as many message drafts as desired can appear, since
 .B send
 doesn't mind sending more than one draft at a time.
 .PP
 .B send
 doesn't mind sending more than one draft at a time.
 .PP
-Note that the argument
-.B \-draftfolder
-.I +folder
-is not included in the profile entry for
-.BR send ,
-since when
-.BR comp ,
-et. al., invoke
-.B send
-directly, they supply
-.B send
-with the UNIX pathname of the message draft, and
-.B not
-a
-.B \-draftmessage
-.I msg
-argument. As far as
-.B send
-is concerned, a draft folder is not being used.
-.PP
 It is important to realize that
 .B nmh
 treats the draft folder like a standard
 .B nmh
 It is important to realize that
 .B nmh
 treats the draft folder like a standard
 .B nmh
-folder in nearly all respects.  There are two exceptions:
-.PP
-First, under no circumstancs will the
-.B \-draftfolder
-.I folder
-switch cause the named folder to become the current folder.
-.PP
-Obviously, if the folder appeared in the context of a standard
-.I +folder
-argument to an
-.B nmh
-program, as in
-.PP
-.RS 5
-.nf
-scan +drafts
-.fi
-.RE
-.PP
-it might become the current folder, depending on the context changes of the
-.B nmh
-program in question.
-.PP
-Second, although conceptually
+folder in nearly all respects.  There is one exception:
+Although conceptually
 .B send
 deletes the `msgs' named in the draft folder, it does not call
 .I delete\-prog
 to perform the deletion.
 .B send
 deletes the `msgs' named in the draft folder, it does not call
 .I delete\-prog
 to perform the deletion.
-
-.SS "What Happens if the Draft Exists"
-When the
-.BR comp ,
-.BR dist ,
-.BR forw ,
-and
-.B repl
-commands
-are invoked and the draft you indicated already exists, these programs
-will prompt the user for a reponse directing the program's action.
-The prompt is
-.PP
-.RS 5
-.nf
-Draft ``/home/foobar/nmhbox/draft'' exists (xx bytes).
-Disposition?
-.fi
-.RE
-.PP
-The appropriate responses and their meanings are:
-.PP
-.RS 5
-.fc ^ ~
-.nf
-.ta \w'replace 'u
-.BR ^replace~^ "- deletes the draft and starts afresh"
-.BR ^list~^ "- lists the draft"
-.BR ^refile~^ "- files the draft into a folder and starts afresh"
-.BR ^quit~^ "- leaves the draft intact and exits"
-.fi
-.RE
-.PP
-In addition, if you specified
-.B \-draftfolder
-.I folder
-to the command, then one other response will be accepted:
-.PP
-.RS 5
-.fc ^ ~
-.nf
-.ta \w'replace 'u
-.BR ^new~^ "- finds a new draft"
-.fi
-.RE
-.PP
-just as if
-.B \-draftmessage
-.I new
-had been given.
-Finally, the
-.B comp
-command will accept one more response:
-.PP
-.RS 5
-.fc ^ ~
-.nf
-.ta \w'replace 'u
-.BR ^use~^ "- re-uses the draft"
-.fi
-.RE
-.PP
-just as if
-.B \-use
-had been given.
-
 .SH CONTEXT
 None
 .SH CONTEXT
 None
index f9b805a..cfbf616 100644 (file)
@@ -9,7 +9,6 @@ refile \- file message in other folders
 .na
 .B refile
 .RI [ msgs ]
 .na
 .B refile
 .RI [ msgs ]
-.RB [ \-draft ]
 .RB [ \-link " | " \-nolink ]
 .RB [ \-preserve " | " \-nopreserve ]
 .RB [ \-unlink " | " \-nounlink ]
 .RB [ \-link " | " \-nolink ]
 .RB [ \-preserve " | " \-nopreserve ]
 .RB [ \-unlink " | " \-nounlink ]
@@ -160,12 +159,6 @@ override this profile specification.  The
 option forces
 the message files to be deleted by renaming or unlinking them as
 described above.
 option forces
 the message files to be deleted by renaming or unlinking them as
 described above.
-.PP
-The
-.B \-draft
-switch tells
-.B refile
-to file the <mh\-dir>/draft.
 
 .SH FILES
 .fc ^ ~
 
 .SH FILES
 .fc ^ ~
index bb4a7e5..80096eb 100644 (file)
@@ -28,11 +28,6 @@ all/to/cc/me]
 .IR +folder ]
 .RB [ \-width
 .IR columns ]
 .IR +folder ]
 .RB [ \-width
 .IR columns ]
-.RB [ \-draftfolder
-.IR +folder ]
-.RB [ \-draftmessage
-.IR msg ]
-.RB [ \-nodraftfolder ]
 .RB [ \-editor
 .IR editor ]
 .RB [ \-noedit ]
 .RB [ \-editor
 .IR editor ]
 .RB [ \-noedit ]
@@ -190,21 +185,6 @@ switch will guide
 .BR repl 's
 formatting of these fields.
 .PP
 .BR repl 's
 formatting of these fields.
 .PP
-If the draft already exists,
-.B repl
-will ask you as to the disposition
-of the draft.  A reply of
-.B quit
-will abort
-.BR repl ,
-leaving the
-draft intact;
-.B replace
-will replace the existing draft with a blank
-skeleton; and
-.B list
-will display the draft.
-.PP
 See
 .BR comp (1)
 for a description of the
 See
 .BR comp (1)
 for a description of the
@@ -390,17 +370,7 @@ the
 .I subject
 component.
 .PP
 .I subject
 component.
 .PP
-The
-.B \-draftfolder
-.I +folder
-and
-.B \-draftmessage
-.I msg
-switches invoke
-the
-.B nmh
-draft folder facility.  This is an advanced (and highly
-useful) feature.  Consult the
+Consult the
 .BR mh-draft (5)
 man page for more
 information.
 .BR mh-draft (5)
 man page for more
 information.
@@ -466,7 +436,7 @@ switch.
 ^%etcdir%/mhl.reply~^The standard message filter
 ^or <mh\-dir>/mhl.reply~^Rather than the standard filter
 ^$HOME/\&.mh\(ruprofile~^The user profile
 ^%etcdir%/mhl.reply~^The standard message filter
 ^or <mh\-dir>/mhl.reply~^Rather than the standard filter
 ^$HOME/\&.mh\(ruprofile~^The user profile
-^<mh\-dir>/draft~^The draft file
+^<mh\-dir>/drafts~^The draft folder
 .fi
 
 .SH "PROFILE COMPONENTS"
 .fi
 
 .SH "PROFILE COMPONENTS"
@@ -477,7 +447,7 @@ switch.
 ^Path:~^To determine the user's nmh directory
 ^Alternate\-Mailboxes:~^To determine the user's mailboxes
 ^Current\-Folder:~^To find the default current folder
 ^Path:~^To determine the user's nmh directory
 ^Alternate\-Mailboxes:~^To determine the user's mailboxes
 ^Current\-Folder:~^To find the default current folder
-^Draft\-Folder:~^To find the default draft\-folder
+^Draft\-Folder:~^To set the default draft\-folder
 ^Editor:~^To override the default editor
 ^Msg\-Protect:~^To set mode when creating a new message (draft)
 ^fileproc:~^Program to refile the message
 ^Editor:~^To override the default editor
 ^Msg\-Protect:~^To set mode when creating a new message (draft)
 ^fileproc:~^Program to refile the message
@@ -495,7 +465,6 @@ mhbuild(1), comp(1), forw(1), send(1), whatnow(1), mh\-format(5)
 .RB ` \-nogroup '
 .RB ` "\-nocc\ all" "' with `\-nogroup', `\-cc\ all' with `\-group'"
 .RB ` \-noannotate '
 .RB ` \-nogroup '
 .RB ` "\-nocc\ all" "' with `\-nogroup', `\-cc\ all' with `\-group'"
 .RB ` \-noannotate '
-.RB ` \-nodraftfolder '
 .RB ` \-noformat '
 .RB ` \-inplace '
 .RB ` \-nomime '
 .RB ` \-noformat '
 .RB ` \-inplace '
 .RB ` \-nomime '
index 7d0a4a2..2edb7da 100644 (file)
@@ -10,12 +10,6 @@ send \- send a message
 .B send
 .RB [ \-alias
 .IR aliasfile ]
 .B send
 .RB [ \-alias
 .IR aliasfile ]
-.RB [ \-draft ]
-.RB [ \-draftfolder
-.IR +folder ]
-.RB [ \-draftmessage
-.IR msg ]
-.RB [ \-nodraftfolder ]
 .RB [ \-filter
 .IR filterfile ]
 .RB [ \-nofilter ]
 .RB [ \-filter
 .IR filterfile ]
 .RB [ \-nofilter ]
@@ -32,7 +26,7 @@ send \- send a message
 .IR port-name/number ]
 .RB [ \-width
 .IR columns ]
 .IR port-name/number ]
 .RB [ \-width
 .IR columns ]
-.RB [ file
+.RB [ msg
 \&...]
 .RB [ \-version ]
 .RB [ \-help ]
 \&...]
 .RB [ \-version ]
 .RB [ \-help ]
@@ -43,7 +37,7 @@ send \- send a message
 .ad
 .SH DESCRIPTION
 .B Send
 .ad
 .SH DESCRIPTION
 .B Send
-will cause each of the specified files to be delivered
+will cause each of the specified messages to be delivered
 to each of the destinations in the \*(lqTo:\*(rq, \*(lqcc:\*(rq,
 \*(lqBcc:\*(rq, \*(lqDcc:\*(rq, and \*(lqFcc:\*(rq fields of the message.  If
 .B send
 to each of the destinations in the \*(lqTo:\*(rq, \*(lqcc:\*(rq,
 \*(lqBcc:\*(rq, \*(lqDcc:\*(rq, and \*(lqFcc:\*(rq fields of the message.  If
 .B send
@@ -172,30 +166,21 @@ and network mail.  Hence, by specifying both switches, a large detail
 of information can be gathered about each step of the message's entry
 into the transport system.
 .PP
 of information can be gathered about each step of the message's entry
 into the transport system.
 .PP
-The
-.B \-draftfolder
-.I +folder
-and
-.B \-draftmessage
+.B Send
+with no
 .I msg
 .I msg
-switches invoke
-the
-.B nmh
-draft folder facility.  This is an advanced (and highly
-useful) feature.  Consult the
+argument will send the current message in the draft folder.
+.B Send
+always takes messages from the draft folder.
+(But, a
+.I +folder
+argument might be added in the future.)
+Consult the
 .BR mh-draft (5)
 .BR mh-draft (5)
-man page for more
-information.
+man page for more information.
 .PP
 .PP
-.B Send
-with no
-.I file
-argument will query whether the draft
-is the intended file, whereas
-.B \-draft
-will suppress this question.
 Once the transport system has successfully accepted custody of the
 Once the transport system has successfully accepted custody of the
-message, the file will be renamed with a leading comma, which allows
+message, the message will be renamed with a leading comma, which allows
 it to be retrieved until the next draft message is sent.  If there are
 errors in the formatting of the message,
 .B send
 it to be retrieved until the next draft message is sent.  If there are
 errors in the formatting of the message,
 .B send
@@ -313,6 +298,7 @@ for more information.
 .nf
 .ta \w'%etcdir%/ExtraBigFileName  'u
 ^$HOME/\&.mh\(ruprofile~^The user profile
 .nf
 .ta \w'%etcdir%/ExtraBigFileName  'u
 ^$HOME/\&.mh\(ruprofile~^The user profile
+^<mh\-dir>/drafts~^The draft folder
 .fi
 
 .SH "PROFILE COMPONENTS"
 .fi
 
 .SH "PROFILE COMPONENTS"
@@ -321,7 +307,7 @@ for more information.
 .ta 2.4i
 .ta \w'ExtraBigProfileName  'u
 ^Path:~^To determine the user's nmh directory
 .ta 2.4i
 .ta \w'ExtraBigProfileName  'u
 ^Path:~^To determine the user's nmh directory
-^Draft\-Folder:~^To find the default draft\-folder
+^Draft\-Folder:~^To set the default draft\-folder
 ^Aliasfile:~^For a default alias file
 ^Signature:~^To determine the user's mail signature
 ^mailproc:~^Program to post failure notices
 ^Aliasfile:~^For a default alias file
 ^Signature:~^To determine the user's mail signature
 ^mailproc:~^Program to post failure notices
@@ -333,9 +319,8 @@ comp(1), dist(1), forw(1), repl(1), mh\-alias(5), post(8)
 
 .SH DEFAULTS
 .nf
 
 .SH DEFAULTS
 .nf
-.RB ` file "' defaults to <mh\-dir>/draft"
+.RB ` msg "' defaults to the current message in the draft folder"
 .RB ` \-alias "' defaults to %etcdir%/MailAliases"
 .RB ` \-alias "' defaults to %etcdir%/MailAliases"
-.RB ` \-nodraftfolder '
 .RB ` \-nofilter '
 .RB ` \-format '
 .RB ` \-forward '
 .RB ` \-nofilter '
 .RB ` \-format '
 .RB ` \-forward '
index bdca14f..b2b9dc9 100644 (file)
@@ -10,7 +10,6 @@ show \- show (display) messages
 .B show
 .RI [ +folder ]
 .RI [ msgs ]
 .B show
 .RI [ +folder ]
 .RI [ msgs ]
-.RB [ \-draft ]
 .RB [\-showproc
 .IR program ]
 .RB [ \-showmimeproc
 .RB [\-showproc
 .IR program ]
 .RB [ \-showmimeproc
@@ -161,10 +160,6 @@ If the standard output is not a terminal, no queries are made, and
 each file is listed with a one\-line header and two lines of
 separation.
 .PP
 each file is listed with a one\-line header and two lines of
 separation.
 .PP
-.RB \*(lq "show \-draft" \*(rq
-will list the file <mh\-dir>/draft if it
-exists.
-.PP
 If the profile entry \*(lqUnseen\-Sequence\*(rq is present and
 non\-empty, then
 .B show
 If the profile entry \*(lqUnseen\-Sequence\*(rq is present and
 non\-empty, then
 .B show
index 087511f..3f2c6f8 100644 (file)
@@ -8,11 +8,6 @@ whatnow \- prompting front-end for sending messages
 .HP 5
 .na
 .B whatnow
 .HP 5
 .na
 .B whatnow
-.RB [ \-draftfolder
-.IR +folder ]
-.RB [ \-draftmessage
-.IR msg ]
-.RB [ \-nodraftfolder ]
 .RB [ \-editor
 .IR editor ]
 .RB [ \-noedit ]
 .RB [ \-editor
 .IR editor ]
 .RB [ \-noedit ]
@@ -168,17 +163,7 @@ The
 switch sets the prompting string for
 .BR whatnow .
 .PP
 switch sets the prompting string for
 .BR whatnow .
 .PP
-The
-.B \-draftfolder
-.I +folder
-and
-.B \-draftmessage
-.I msg
-switches invoke
-the
-.B nmh
-draft folder facility.  This is an advanced (and highly
-useful) feature.  Consult the
+Consult the
 .BR mh-draft (5)
 man page for more
 information.
 .BR mh-draft (5)
 man page for more
 information.
@@ -188,7 +173,7 @@ information.
 .nf
 .ta \w'%etcdir%/ExtraBigFileName  'u
 ^$HOME/\&.mh\(ruprofile~^The user profile
 .nf
 .ta \w'%etcdir%/ExtraBigFileName  'u
 ^$HOME/\&.mh\(ruprofile~^The user profile
-^<mh\-dir>/draft~^The draft file
+^<mh\-dir>/drafts~^The draft folder
 .fi
 
 .SH "PROFILE COMPONENTS"
 .fi
 
 .SH "PROFILE COMPONENTS"
@@ -197,7 +182,7 @@ information.
 .ta 2.4i
 .ta \w'ExtraBigProfileName  'u
 ^Path:~^To determine the user's nmh directory
 .ta 2.4i
 .ta \w'ExtraBigProfileName  'u
 ^Path:~^To determine the user's nmh directory
-^Draft\-Folder:~^To find the default draft\-folder
+^Draft\-Folder:~^To set the default draft\-folder
 ^Editor:~^To override the default editor
 ^<lasteditor>\-next:~^To name an editor to be used after exit
 ^~^from <lasteditor>
 ^Editor:~^To override the default editor
 ^<lasteditor>\-next:~^To name an editor to be used after exit
 ^~^from <lasteditor>
index ceee73a..4a64804 100644 (file)
 #include <errno.h>
 
 
 #include <errno.h>
 
 
+/*
+**  `which' should either be "cur" to use the current draft
+**  or "new" to start with a new draft.
+*/
 char *
 char *
-m_draft (char *folder, char *msg, int use, int *isdf)
+m_draft(char *which)
 {
        register char *cp;
        register struct msgs *mp;
        static char buffer[BUFSIZ];
 {
        register char *cp;
        register struct msgs *mp;
        static char buffer[BUFSIZ];
+       char *folder;
 
 
-       if (*isdf == -1 || folder == NULL || *folder == '\0') {
-               if (*isdf == -1 || (cp = context_find ("Draft-Folder")) == NULL) {
-                       *isdf = 0;
-                       return m_maildir (msg && *msg ? msg : draft);
-               } else {
-                       folder = path (*cp == '+' || *cp == '@' ? cp + 1 : cp,
-                                       *cp != '@' ? TFOLDER : TSUBCWF);
-               }
-       }
-       *isdf = 1;
+       cp = draftfolder;
+       folder = path (*cp == '+' || *cp == '@' ? cp + 1 : cp,
+                       *cp != '@' ? TFOLDER : TSUBCWF);
 
        chdir (m_maildir (""));
        strncpy (buffer, m_maildir (folder), sizeof(buffer));
 
        chdir (m_maildir (""));
        strncpy (buffer, m_maildir (folder), sizeof(buffer));
@@ -57,23 +55,19 @@ m_draft (char *folder, char *msg, int use, int *isdf)
        mp->msgflags |= ALLOW_NEW;  /* allow the "new" sequence */
 
        /*
        mp->msgflags |= ALLOW_NEW;  /* allow the "new" sequence */
 
        /*
-        * If we have been give a valid message name, then use that.
-        * Else, if we are given the "use" option, then use the
-        * current message.  Else, use special sequence "new".
+        * The draft message name to return is defined by `which'.
+        * Usually it is "cur" (for the current draft) or "new"
+        * (to start a new draft).
         */
         */
-       if (!m_convert (mp, msg && *msg ? msg : use ? "cur" : "new"))
+       if (!m_convert (mp, which))
                done (1);
        seq_setprev (mp);
 
                done (1);
        seq_setprev (mp);
 
-       if (mp->numsel > 1)
-               adios (NULL, "only one message draft at a time!");
-
-       snprintf (buffer, sizeof(buffer), "%s/%s", mp->foldpath, m_name (mp->lowsel));
-       cp = buffer;
-
-       seq_setcur (mp, mp->lowsel);/* set current message for folder */
-       seq_save (mp);  /* synchronize message sequences  */
-       folder_free (mp);  /* free folder/message structure  */
+       snprintf (buffer, sizeof(buffer), "%s/%s", mp->foldpath,
+                       m_name (mp->lowsel));
+       seq_setcur (mp, mp->lowsel);
+       seq_save (mp);
+       folder_free (mp);
 
 
-       return cp;
+       return buffer;
 }
 }
index 1dfd99d..5db7920 100644 (file)
@@ -19,6 +19,7 @@ static struct procstr procs[] = {
        { "context",       &context },
        { "mh-sequences",  &mh_seq },
        { "backup-prefix", &backup_prefix },
        { "context",       &context },
        { "mh-sequences",  &mh_seq },
        { "backup-prefix", &backup_prefix },
+       { "draft-folder",  &draftfolder },
        { "altmsg-link",   &altmsglink },
        { "buildmimeproc", &buildmimeproc },
        { "faceproc",      &faceproc },
        { "altmsg-link",   &altmsglink },
        { "buildmimeproc", &buildmimeproc },
        { "faceproc",      &faceproc },
index db1b96c..7fd22c1 100644 (file)
@@ -5,15 +5,12 @@
  * COPYRIGHT file in the root directory of the nmh distribution for
  * complete copyright information.
  *
  * 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.
+ * 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.
  *
  * 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.
  * 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.
@@ -62,19 +59,17 @@ static struct swit switches[] = {
        { "version", 0 },
 #define HELPSW 7
        { "help", 0 },
        { "version", 0 },
 #define HELPSW 7
        { "help", 0 },
-#define DRFTSW 8
-       { "draft", 2 },
-#define LISTSW 9
+#define LISTSW 8
        { "list", 1 },
        { "list", 1 },
-#define DELETESW 10
+#define DELETESW 9
        { "delete", 2 },
        { "delete", 2 },
-#define NUMBERSW 11
+#define NUMBERSW 10
        { "number", 2 },
        { "number", 2 },
-#define APPENDSW 12
+#define APPENDSW 11
        { "append", 1 },
        { "append", 1 },
-#define PRESERVESW 13
+#define PRESERVESW 12
        { "preserve", 1 },
        { "preserve", 1 },
-#define NOPRESERVESW 14
+#define NOPRESERVESW 13
        { "nopreserve", 3 },
        { NULL, 0 }
 };
        { "nopreserve", 3 },
        { NULL, 0 }
 };
@@ -98,8 +93,6 @@ main (int argc, char **argv)
        struct msgs *mp;
        int append = 0;  /* append annotations instead of default prepend */
        int delete = -2;  /* delete header element if set */
        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 */
 
        int list = 0;  /* list header elements if set */
        int number = 0; /* delete specific number of like elements if set */
 
@@ -164,10 +157,6 @@ main (int argc, char **argv)
                                        delete = 0;
                                        continue;
 
                                        delete = 0;
                                        continue;
 
-                               case DRFTSW:  /* draft message specified */
-                                       draft = "";
-                                       continue;
-
                                case LISTSW:  /* produce a listing */
                                        list = 1;
                                        continue;
                                case LISTSW:  /* produce a listing */
                                        list = 1;
                                        continue;
@@ -214,29 +203,6 @@ main (int argc, char **argv)
                                app_msgarg(&msgs, cp);
        }
 
                                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;
-       }
-
 #ifdef UCI
        if (strcmp(invo_name, "fanno") == 0)  /* ugh! */
                datesw = 0;
 #ifdef UCI
        if (strcmp(invo_name, "fanno") == 0)  /* ugh! */
                datesw = 0;
index f713b6f..554d310 100644 (file)
 #include <fcntl.h>
 
 static struct swit switches[] = {
 #include <fcntl.h>
 
 static struct swit switches[] = {
-#define DFOLDSW  0
-       { "draftfolder +folder", 0 },
-#define DMSGSW  1
-       { "draftmessage msg", 0 },
-#define NDFLDSW  2
-       { "nodraftfolder", 0 },
-#define EDITRSW  3
+#define EDITRSW  0
        { "editor editor", 0 },
        { "editor editor", 0 },
-#define NEDITSW  4
+#define NEDITSW  1
        { "noedit", 0 },
        { "noedit", 0 },
-#define FILESW  5
-       { "file file", 0 },
-#define FORMSW  6
+#define FORMSW  2
        { "form formfile", 0 },
        { "form formfile", 0 },
-#define USESW  7
+#define USESW  3
        { "use", 0 },
        { "use", 0 },
-#define NUSESW  8
+#define NUSESW  4
        { "nouse", 0 },
        { "nouse", 0 },
-#define WHATSW  9
+#define WHATSW  5
        { "whatnowproc program", 0 },
        { "whatnowproc program", 0 },
-#define NWHATSW  10
+#define NWHATSW  6
        { "nowhatnowproc", 0 },
        { "nowhatnowproc", 0 },
-#define VERSIONSW  11
+#define VERSIONSW  7
        { "version", 0 },
        { "version", 0 },
-#define HELPSW  12
+#define HELPSW  8
        { "help", 0 },
        { NULL, 0 }
 };
        { "help", 0 },
        { NULL, 0 }
 };
@@ -56,23 +48,14 @@ static struct swit aqrunl[] = {
        { NULL, 0 }
 };
 
        { NULL, 0 }
 };
 
-static struct swit aqrul[] = {
-       { "quit", 0 },
-       { "replace", 0 },
-       { "use", 0 },
-       { "list", 0 },
-       { "refile", 0 },
-       { NULL, 0 }
-};
-
 
 int
 main (int argc, char **argv)
 {
        int use = NOUSE, nedit = 0, nwhat = 0;
 
 int
 main (int argc, char **argv)
 {
        int use = NOUSE, nedit = 0, nwhat = 0;
-       int i, in, isdf = 0, out;
-       char *cp, *cwd, *maildir, *dfolder = NULL;
-       char *ed = NULL, *file = NULL, *form = NULL;
+       int i, in, out;
+       char *cp, *cwd, *maildir;
+       char *ed = NULL, *form = NULL;
        char *folder = NULL, *msg = NULL, buf[BUFSIZ];
        char drft[BUFSIZ], **argp, **arguments;
        struct msgs *mp = NULL;
        char *folder = NULL, *msg = NULL, buf[BUFSIZ];
        char drft[BUFSIZ], **argp, **arguments;
        struct msgs *mp = NULL;
@@ -136,33 +119,6 @@ main (int argc, char **argv)
                                case NUSESW:
                                        use = NOUSE;
                                        continue;
                                case NUSESW:
                                        use = NOUSE;
                                        continue;
-
-                               case FILESW:  /* compatibility */
-                                       if (file)
-                                               adios (NULL, "only one file at a time!");
-                                       if (!(file = *argp++) || *file == '-')
-                                               adios (NULL, "missing argument to %s", argp[-2]);
-                                       isdf = NOTOK;
-                                       continue;
-
-                               case DFOLDSW:
-                                       if (dfolder)
-                                               adios (NULL, "only one draft folder at a time!");
-                                       if (!(cp = *argp++) || *cp == '-')
-                                               adios (NULL, "missing argument to %s", argp[-2]);
-                                       dfolder = path (*cp == '+' || *cp == '@' ? cp + 1 : cp,
-                                                       *cp != '@' ? TFOLDER : TSUBCWF);
-                                       continue;
-                               case DMSGSW:
-                                       if (file)
-                                               adios (NULL, "only one draft message at a time!");
-                                       if (!(file = *argp++) || *file == '-')
-                                               adios (NULL, "missing argument to %s", argp[-2]);
-                                       continue;
-                               case NDFLDSW:
-                                       dfolder = NULL;
-                                       isdf = NOTOK;
-                                       continue;
                        }
                }
                if (*cp == '+' || *cp == '@') {
                        }
                }
                if (*cp == '+' || *cp == '@') {
@@ -183,20 +139,12 @@ main (int argc, char **argv)
        if (!context_find ("path"))
                free (path ("./", TFOLDER));
 
        if (!context_find ("path"))
                free (path ("./", TFOLDER));
 
-       /*
-        * Check if we are using a draft folder
-        * and have specified a message in it.
-        */
-       if ((dfolder || context_find ("Draft-Folder")) && !folder && msg && !file) {
-               file = msg;
-               msg = NULL;
-       }
        if (form && (folder || msg))
                        adios (NULL, "can't mix forms and folders/msgs");
 
        if (form && (folder || msg))
                        adios (NULL, "can't mix forms and folders/msgs");
 
-       if (folder || msg) {
+       if (!use && (folder || msg)) {
                /*
                /*
-                * Use a message as the "form" for the new message.
+                * Take a message as the "form" for the new message.
                 */
                if (!msg)
                        msg = "cur";
                 */
                if (!msg)
                        msg = "cur";
@@ -223,13 +171,14 @@ main (int argc, char **argv)
                if (mp->numsel > 1)
                        adios (NULL, "only one message at a time!");
 
                if (mp->numsel > 1)
                        adios (NULL, "only one message at a time!");
 
-               if ((in = open (form = getcpy (m_name (mp->lowsel)), O_RDONLY)) == NOTOK)
+               if ((in = open (form = getcpy (m_name (mp->lowsel)),
+                               O_RDONLY)) == NOTOK)
                        adios (form, "unable to open message");
        } else
                in = open_form(&form, components);
 
 try_it_again:
                        adios (form, "unable to open message");
        } else
                in = open_form(&form, components);
 
 try_it_again:
-       strncpy (drft, m_draft (dfolder, file, use, &isdf), sizeof(drft));
+       strncpy (drft, m_draft(use ? (msg?msg:"cur") : "new"), sizeof(drft));
 
        /*
         * Check if we have an existing draft
 
        /*
         * Check if we have an existing draft
@@ -250,13 +199,12 @@ try_it_again:
                        adios (drft, "unable to stat");
                printf ("Draft \"%s\" exists (%ld bytes).", drft, (long) st.st_size);
                for (i = LISTDSW; i != YESW;) {
                        adios (drft, "unable to stat");
                printf ("Draft \"%s\" exists (%ld bytes).", drft, (long) st.st_size);
                for (i = LISTDSW; i != YESW;) {
-                       if (!(argp = getans ("\nDisposition? ", isdf ? aqrunl : aqrul)))
+                       if (!(argp = getans ("\nDisposition? ", aqrunl)))
                                done (1);
                                done (1);
-                       switch (i = smatch (*argp, isdf ? aqrunl : aqrul)) {
+                       switch (i = smatch (*argp, aqrunl)) {
                                case NOSW:
                                        done (0);
                                case NEWSW:
                                case NOSW:
                                        done (0);
                                case NEWSW:
-                                       file = NULL;
                                        use = NOUSE;
                                        goto try_it_again;
                                case YESW:
                                        use = NOUSE;
                                        goto try_it_again;
                                case YESW:
index 10ef995..0b8edb3 100644 (file)
@@ -15,70 +15,40 @@ static struct swit switches[] = {
        { "annotate", 0 },
 #define NANNOSW  1
        { "noannotate", 0 },
        { "annotate", 0 },
 #define NANNOSW  1
        { "noannotate", 0 },
-#define DFOLDSW  2
-       { "draftfolder +folder", 0 },
-#define DMSGSW  3
-       { "draftmessage msg", 0 },
-#define NDFLDSW  4
-       { "nodraftfolder", 0 },
-#define EDITRSW  5
+#define EDITRSW  2
        { "editor editor", 0 },
        { "editor editor", 0 },
-#define NEDITSW  6
+#define NEDITSW  3
        { "noedit", 0 },
        { "noedit", 0 },
-#define FORMSW  7
+#define FORMSW  4
        { "form formfile", 0 },
        { "form formfile", 0 },
-#define INPLSW  8
+#define INPLSW  5
        { "inplace", 0 },
        { "inplace", 0 },
-#define NINPLSW  9
+#define NINPLSW  6
        { "noinplace", 0 },
        { "noinplace", 0 },
-#define WHATSW  10
+#define WHATSW  7
        { "whatnowproc program", 0 },
        { "whatnowproc program", 0 },
-#define NWHATSW  11
+#define NWHATSW  8
        { "nowhatnowproc", 0 },
        { "nowhatnowproc", 0 },
-#define VERSIONSW  12
+#define VERSIONSW  9
        { "version", 0 },
        { "version", 0 },
-#define HELPSW  13
+#define HELPSW  10
        { "help", 0 },
        { "help", 0 },
-#define FILESW  14
+#define FILESW  11
        { "file file", -4 },  /* interface from msh */
        { NULL, 0 }
 };
 
        { "file file", -4 },  /* interface from msh */
        { NULL, 0 }
 };
 
-static struct swit aqrnl[] = {
-#define NOSW  0
-       { "quit", 0 },
-#define YESW  1
-       { "replace", 0 },
-#define LISTDSW  2
-       { "list", 0 },
-#define REFILSW  3
-       { "refile +folder", 0 },
-#define NEWSW  4
-       { "new", 0 },
-       { NULL, 0 }
-};
-
-
-static struct swit aqrl[] = {
-       { "quit", 0 },
-       { "replace", 0 },
-       { "list", 0 },
-       { "refile +folder", 0 },
-       { NULL, 0 }
-};
-
 
 int
 main (int argc, char **argv)
 {
        int anot = 0, inplace = 1, nedit = 0;
 
 int
 main (int argc, char **argv)
 {
        int anot = 0, inplace = 1, nedit = 0;
-       int nwhat = 0, i, in, isdf = 0, out;
-       char *cp, *cwd, *maildir, *msgnam, *dfolder = NULL;
-       char *dmsg = NULL, *ed = NULL, *file = NULL, *folder = NULL;
+       int nwhat = 0, in, out;
+       char *cp, *cwd, *maildir, *msgnam;
+       char *ed = NULL, *file = NULL, *folder = NULL;
        char *form = NULL, *msg = NULL, buf[BUFSIZ], drft[BUFSIZ];
        char **argp, **arguments;
        struct msgs *mp = NULL;
        char *form = NULL, *msg = NULL, buf[BUFSIZ], drft[BUFSIZ];
        char **argp, **arguments;
        struct msgs *mp = NULL;
-       struct stat st;
 
 #ifdef LOCALE
        setlocale(LC_ALL, "");
 
 #ifdef LOCALE
        setlocale(LC_ALL, "");
@@ -152,25 +122,6 @@ main (int argc, char **argv)
                                case NINPLSW:
                                        inplace = 0;
                                        continue;
                                case NINPLSW:
                                        inplace = 0;
                                        continue;
-
-                               case DFOLDSW:
-                                       if (dfolder)
-                                               adios (NULL, "only one draft folder at a time!");
-                                       if (!(cp = *argp++) || *cp == '-')
-                                               adios (NULL, "missing argument to %s", argp[-2]);
-                                       dfolder = path (*cp == '+' || *cp == '@' ? cp + 1 : cp,
-                                                       *cp != '@' ? TFOLDER : TSUBCWF);
-                                       continue;
-                               case DMSGSW:
-                                       if (dmsg)
-                                               adios (NULL, "only one draft message at a time!");
-                                       if (!(dmsg = *argp++) || *dmsg == '-')
-                                               adios (NULL, "missing argument to %s", argp[-2]);
-                                       continue;
-                               case NDFLDSW:
-                                       dfolder = NULL;
-                                       isdf = NOTOK;
-                                       continue;
                        }
                }
                if (*cp == '+' || *cp == '@') {
                        }
                }
                if (*cp == '+' || *cp == '@') {
@@ -195,36 +146,8 @@ main (int argc, char **argv)
 
        in = open_form(&form, distcomps);
 
 
        in = open_form(&form, distcomps);
 
-try_it_again:
-       strncpy (drft, m_draft (dfolder, dmsg, NOUSE, &isdf), sizeof(drft));
+       strncpy (drft, m_draft("new"), sizeof(drft));
 
 
-       /* Check if draft already exists */
-       if (stat (drft, &st) != NOTOK) {
-               printf ("Draft \"%s\" exists (%ld bytes).", drft, (long) st.st_size);
-               for (i = LISTDSW; i != YESW;) {
-                       if (!(argp = getans ("\nDisposition? ", isdf ? aqrnl : aqrl)))
-                               done (1);
-                       switch (i = smatch (*argp, isdf ? aqrnl : aqrl)) {
-                               case NOSW:
-                                       done (0);
-                               case NEWSW:
-                                       dmsg = NULL;
-                                       goto try_it_again;
-                               case YESW:
-                                       break;
-                               case LISTDSW:
-                                       showfile (++argp, drft);
-                                       break;
-                               case REFILSW:
-                                       if (refile (++argp, drft) == 0)
-                                               i = YESW;
-                                       break;
-                               default:
-                                       advise (NULL, "say what?");
-                                       break;
-                       }
-               }
-       }
        if ((out = creat (drft, m_gmprot ())) == NOTOK)
                adios (drft, "unable to create");
 
        if ((out = creat (drft, m_gmprot ())) == NOTOK)
                adios (drft, "unable to create");
 
index 8a7ed34..6e33dc3 100644 (file)
@@ -21,83 +21,55 @@ static struct swit switches[] = {
        { "annotate", 0 },
 #define NANNOSW  1
        { "noannotate", 0 },
        { "annotate", 0 },
 #define NANNOSW  1
        { "noannotate", 0 },
-#define DFOLDSW  2
-       { "draftfolder +folder", 0 },
-#define DMSGSW  3
-       { "draftmessage msg", 0 },
-#define NDFLDSW  4
-       { "nodraftfolder", 0 },
-#define EDITRSW  5
+#define EDITRSW  2
        { "editor editor", 0 },
        { "editor editor", 0 },
-#define NEDITSW  6
+#define NEDITSW  3
        { "noedit", 0 },
        { "noedit", 0 },
-#define FILTSW  7
+#define FILTSW  4
        { "filter filterfile", 0 },
        { "filter filterfile", 0 },
-#define FORMSW  8
+#define FORMSW  5
        { "form formfile", 0 },
        { "form formfile", 0 },
-#define FRMTSW  9
+#define FRMTSW  6
        { "format", 5 },
        { "format", 5 },
-#define NFRMTSW  10
+#define NFRMTSW  7
        { "noformat", 7 },
        { "noformat", 7 },
-#define INPLSW  11
+#define INPLSW  8
        { "inplace", 0 },
        { "inplace", 0 },
-#define NINPLSW  12
+#define NINPLSW  9
        { "noinplace", 0 },
        { "noinplace", 0 },
-#define MIMESW  13
+#define MIMESW  10
        { "mime", 0 },
        { "mime", 0 },
-#define NMIMESW  14
+#define NMIMESW  11
        { "nomime", 0 },
        { "nomime", 0 },
-#define DGSTSW  15
+#define DGSTSW  12
        { "digest list", 0 },
        { "digest list", 0 },
-#define ISSUESW  16
+#define ISSUESW  13
        { "issue number", 0 },
        { "issue number", 0 },
-#define VOLUMSW  17
+#define VOLUMSW  14
        { "volume number", 0 },
        { "volume number", 0 },
-#define WHATSW  18
+#define WHATSW  15
        { "whatnowproc program", 0 },
        { "whatnowproc program", 0 },
-#define NWHATSW  19
+#define NWHATSW  16
        { "nowhatnowproc", 0 },
        { "nowhatnowproc", 0 },
-#define BITSTUFFSW  20
+#define BITSTUFFSW  17
        { "dashstuffing", 0 },  /* interface to mhl */
        { "dashstuffing", 0 },  /* interface to mhl */
-#define NBITSTUFFSW  21
+#define NBITSTUFFSW  18
        { "nodashstuffing", 0 },
        { "nodashstuffing", 0 },
-#define VERSIONSW  22
+#define VERSIONSW  19
        { "version", 0 },
        { "version", 0 },
-#define HELPSW  23
+#define HELPSW  20
        { "help", 0 },
        { "help", 0 },
-#define FILESW  24
+#define FILESW  21
        { "file file", 4 },  /* interface from msh */
 
 #ifdef MHE
        { "file file", 4 },  /* interface from msh */
 
 #ifdef MHE
-#define BILDSW  25
+#define BILDSW  22
        { "build", 5 },  /* interface from mhe */
 #endif /* MHE */
 
        { NULL, 0 }
 };
 
        { "build", 5 },  /* interface from mhe */
 #endif /* MHE */
 
        { NULL, 0 }
 };
 
-static struct swit aqrnl[] = {
-#define NOSW  0
-       { "quit", 0 },
-#define YESW  1
-       { "replace", 0 },
-#define LISTDSW  2
-       { "list", 0 },
-#define REFILSW  3
-       { "refile +folder", 0 },
-#define NEWSW  4
-       { "new", 0 },
-       { NULL, 0 }
-};
-
-static struct swit aqrl[] = {
-       { "quit", 0 },
-       { "replace", 0 },
-       { "list", 0 },
-       { "refile +folder", 0 },
-       { NULL, 0 }
-};
-
 static char drft[BUFSIZ];
 
 static char delim3[] =
 static char drft[BUFSIZ];
 
 static char delim3[] =
@@ -122,14 +94,13 @@ 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, inplace = 1, mime = 0;
        int issue = 0, volume = 0, dashstuff = 0;
-       int nedit = 0, nwhat = 0, i, in;
-       int out, isdf = 0, msgnum;
-       char *cp, *cwd, *maildir, *dfolder = NULL;
-       char *dmsg = NULL, *digest = NULL, *ed = NULL;
+       int nedit = 0, nwhat = 0, in;
+       int out, msgnum;
+       char *cp, *cwd, *maildir;
+       char *digest = NULL, *ed = NULL;
        char *file = NULL, *filter = NULL, *folder = NULL;
        char *form = NULL, buf[BUFSIZ], value[10];
        char **argp, **arguments, *msgs[MAXARGS];
        char *file = NULL, *filter = NULL, *folder = NULL;
        char *form = NULL, buf[BUFSIZ], value[10];
        char **argp, **arguments, *msgs[MAXARGS];
-       struct stat st;
 
 #ifdef MHE
        int buildsw = 0;
 
 #ifdef MHE
        int buildsw = 0;
@@ -251,25 +222,6 @@ main (int argc, char **argv)
                                                adios (NULL, "bad argument %s %s", argp[-2], cp);
                                        continue;
 
                                                adios (NULL, "bad argument %s %s", argp[-2], cp);
                                        continue;
 
-                               case DFOLDSW:
-                                       if (dfolder)
-                                               adios (NULL, "only one draft folder at a time!");
-                                       if (!(cp = *argp++) || *cp == '-')
-                                               adios (NULL, "missing argument to %s", argp[-2]);
-                                       dfolder = path (*cp == '+' || *cp == '@' ? cp + 1 : cp,
-                                                                       *cp != '@' ? TFOLDER : TSUBCWF);
-                                       continue;
-                               case DMSGSW:
-                                       if (dmsg)
-                                               adios (NULL, "only one draft message at a time!");
-                                       if (!(dmsg = *argp++) || *dmsg == '-')
-                                               adios (NULL, "missing argument to %s", argp[-2]);
-                                       continue;
-                               case NDFLDSW:
-                                       dfolder = NULL;
-                                       isdf = NOTOK;
-                                       continue;
-
                                case BITSTUFFSW:
                                        dashstuff = 1;  /* trinary logic */
                                        continue;
                                case BITSTUFFSW:
                                        dashstuff = 1;  /* trinary logic */
                                        continue;
@@ -295,45 +247,12 @@ main (int argc, char **argv)
        if (file && (msgp || folder))
                adios (NULL, "can't mix files and folders/msgs");
 
        if (file && (msgp || folder))
                adios (NULL, "can't mix files and folders/msgs");
 
-try_it_again:
-
 #ifdef MHE
        strncpy (drft, buildsw ? m_maildir ("draft")
 #ifdef MHE
        strncpy (drft, buildsw ? m_maildir ("draft")
-               : m_draft (dfolder, NULL, NOUSE, &isdf), sizeof(drft));
-
-       /* Check if a draft already exists */
-       if (!buildsw && stat (drft, &st) != NOTOK) {
+               : m_draft("new"), sizeof(drft));
 #else
 #else
-       strncpy (drft, m_draft (dfolder, dmsg, NOUSE, &isdf), sizeof(drft));
-
-       /* Check if a draft already exists */
-       if (stat (drft, &st) != NOTOK) {
+       strncpy (drft, m_draft("new"), sizeof(drft));
 #endif /* MHE */
 #endif /* MHE */
-               printf ("Draft \"%s\" exists (%ld bytes).", drft, (long) st.st_size);
-               for (i = LISTDSW; i != YESW;) {
-                       if (!(argp = getans ("\nDisposition? ", isdf ? aqrnl : aqrl)))
-                               done (1);
-                       switch (i = smatch (*argp, isdf ? aqrnl : aqrl)) {
-                               case NOSW:
-                                       done (0);
-                               case NEWSW:
-                                       dmsg = NULL;
-                                       goto try_it_again;
-                               case YESW:
-                                       break;
-                               case LISTDSW:
-                                       showfile (++argp, drft);
-                                       break;
-                               case REFILSW:
-                                       if (refile (++argp, drft) == 0)
-                                               i = YESW;
-                                       break;
-                               default:
-                                       advise (NULL, "say what?");
-                                       break;
-                       }
-               }
-       }
 
        if (file) {
                /*
 
        if (file) {
                /*
index b18ddb4..4d00717 100644 (file)
@@ -64,6 +64,7 @@ static struct proc procs [] = {
         { "libdir",        &mhlibdir },
         { "backup-prefix", &backup_prefix },
         { "altmsg-link",   &altmsglink },
         { "libdir",        &mhlibdir },
         { "backup-prefix", &backup_prefix },
         { "altmsg-link",   &altmsglink },
+        { "draft-folder",  &draftfolder },
         { NULL,            NULL },
 };
 
         { NULL,            NULL },
 };
 
index b8b64d0..2ac8916 100644 (file)
 #include <errno.h>
 
 static struct swit switches[] = {
 #include <errno.h>
 
 static struct swit switches[] = {
-#define DRAFTSW  0
-       { "draft", 0 },
-#define LINKSW  1
+#define LINKSW  0
        { "link", 0 },
        { "link", 0 },
-#define NLINKSW  2
+#define NLINKSW  1
        { "nolink", 0 },
        { "nolink", 0 },
-#define PRESSW  3
+#define PRESSW  2
        { "preserve", 0 },
        { "preserve", 0 },
-#define NPRESSW  4
+#define NPRESSW  3
        { "nopreserve", 0 },
        { "nopreserve", 0 },
-#define UNLINKSW  5
+#define UNLINKSW  4
        { "unlink", 0 },
        { "unlink", 0 },
-#define NUNLINKSW  6
+#define NUNLINKSW  5
        { "nounlink", 0 },
        { "nounlink", 0 },
-#define SRCSW  7
+#define SRCSW  6
        { "src +folder", 0 },
        { "src +folder", 0 },
-#define FILESW  8
+#define FILESW  7
        { "file file", 0 },
        { "file file", 0 },
-#define RPROCSW  9
+#define RPROCSW  8
        { "rmmproc program", 0 },
        { "rmmproc program", 0 },
-#define NRPRCSW  10
+#define NRPRCSW  9
        { "normmproc", 0 },
        { "normmproc", 0 },
-#define VERSIONSW  11
+#define VERSIONSW  10
        { "version", 0 },
        { "version", 0 },
-#define HELPSW  12
+#define HELPSW  11
        { "help", 0 },
        { NULL, 0 }
 };
        { "help", 0 },
        { NULL, 0 }
 };
@@ -62,7 +60,7 @@ int
 main (int argc, char **argv)
 {
        int linkf = 0, preserve = 0, filep = 0;
 main (int argc, char **argv)
 {
        int linkf = 0, preserve = 0, filep = 0;
-       int foldp = 0, isdf = 0, unlink_msgs = 0;
+       int foldp = 0, unlink_msgs = 0;
        int i, msgnum;
        char *cp, *folder = NULL, buf[BUFSIZ];
        char **argp, **arguments;
        int i, msgnum;
        char *cp, *folder = NULL, buf[BUFSIZ];
        char **argp, **arguments;
@@ -133,12 +131,6 @@ main (int argc, char **argv)
                                folder = path (*cp == '+' || *cp == '@' ? cp + 1 : cp,
                                                           *cp != '@' ? TFOLDER : TSUBCWF);
                                continue;
                                folder = path (*cp == '+' || *cp == '@' ? cp + 1 : cp,
                                                           *cp != '@' ? TFOLDER : TSUBCWF);
                                continue;
-                       case DRAFTSW:
-                               if (filep > NFOLDERS)
-                                       adios (NULL, "only %d files allowed!", NFOLDERS);
-                               isdf = 0;
-                               files[filep++] = getcpy (m_draft (NULL, NULL, 1, &isdf));
-                               continue;
                        case FILESW:
                                if (filep > NFOLDERS)
                                        adios (NULL, "only %d files allowed!", NFOLDERS);
                        case FILESW:
                                if (filep > NFOLDERS)
                                        adios (NULL, "only %d files allowed!", NFOLDERS);
index 7a9384b..db41ebb 100644 (file)
@@ -23,53 +23,47 @@ static struct swit switches[] = {
        { "cc all|to|cc|me", 0 },
 #define NCCSW  5
        { "nocc type", 0 },
        { "cc all|to|cc|me", 0 },
 #define NCCSW  5
        { "nocc type", 0 },
-#define DFOLDSW  6
-       { "draftfolder +folder", 0 },
-#define DMSGSW  7
-       { "draftmessage msg", 0 },
-#define NDFLDSW  8
-       { "nodraftfolder", 0 },
-#define EDITRSW  9
+#define EDITRSW  6
        { "editor editor", 0 },
        { "editor editor", 0 },
-#define NEDITSW  10
+#define NEDITSW  7
        { "noedit", 0 },
        { "noedit", 0 },
-#define FCCSW  11
+#define FCCSW  8
        { "fcc folder", 0 },
        { "fcc folder", 0 },
-#define FILTSW  12
+#define FILTSW  9
        { "filter filterfile", 0 },
        { "filter filterfile", 0 },
-#define FORMSW  13
+#define FORMSW  10
        { "form formfile", 0 },
        { "form formfile", 0 },
-#define FRMTSW  14
+#define FRMTSW  11
        { "format", 5 },
        { "format", 5 },
-#define NFRMTSW  15
+#define NFRMTSW  12
        { "noformat", 7 },
        { "noformat", 7 },
-#define INPLSW  16
+#define INPLSW  13
        { "inplace", 0 },
        { "inplace", 0 },
-#define NINPLSW  17
+#define NINPLSW  14
        { "noinplace", 0 },
        { "noinplace", 0 },
-#define MIMESW  18
+#define MIMESW  15
        { "mime", 0 },
        { "mime", 0 },
-#define NMIMESW  19
+#define NMIMESW  16
        { "nomime", 0 },
        { "nomime", 0 },
-#define QURYSW  20
+#define QURYSW  17
        { "query", 0 },
        { "query", 0 },
-#define NQURYSW  21
+#define NQURYSW  18
        { "noquery", 0 },
        { "noquery", 0 },
-#define WHATSW  22
+#define WHATSW  19
        { "whatnowproc program", 0 },
        { "whatnowproc program", 0 },
-#define NWHATSW  23
+#define NWHATSW  20
        { "nowhatnowproc", 0 },
        { "nowhatnowproc", 0 },
-#define WIDTHSW  24
+#define WIDTHSW  21
        { "width columns", 0 },
        { "width columns", 0 },
-#define VERSIONSW  25
+#define VERSIONSW  22
        { "version", 0 },
        { "version", 0 },
-#define HELPSW  26
+#define HELPSW  23
        { "help", 0 },
        { "help", 0 },
-#define FILESW  27
+#define FILESW  24
        { "file file", 4 },  /* interface from msh */
 
 #ifdef MHE
        { "file file", 4 },  /* interface from msh */
 
 #ifdef MHE
-#define BILDSW  28
+#define BILDSW  25
        { "build", 5 },  /* interface from mhe */
 #endif
 
        { "build", 5 },  /* interface from mhe */
 #endif
 
@@ -88,28 +82,6 @@ static struct swit ccswitches[] = {
        { NULL, 0 }
 };
 
        { NULL, 0 }
 };
 
-static struct swit aqrnl[] = {
-#define NOSW  0
-       { "quit", 0 },
-#define YESW  1
-       { "replace", 0 },
-#define LISTDSW  2
-       { "list", 0 },
-#define REFILSW  3
-       { "refile +folder", 0 },
-#define NEWSW  4
-       { "new", 0 },
-       { NULL, 0 }
-};
-
-static struct swit aqrl[] = {
-       { "quit", 0 },
-       { "replace", 0 },
-       { "list", 0 },
-       { "refile +folder", 0 },
-       { NULL, 0 }
-};
-
 short ccto = -1;  /* global for replsbr */
 short cccc = -1;
 short ccme = -1;
 short ccto = -1;  /* global for replsbr */
 short cccc = -1;
 short ccme = -1;
@@ -133,15 +105,13 @@ void docc (char *, int);
 int
 main (int argc, char **argv)
 {
 int
 main (int argc, char **argv)
 {
-       int i, isdf = 0;
        int anot = 0, inplace = 1;
        int nedit = 0, nwhat = 0;
        char *cp, *cwd, *dp, *maildir, *file = NULL;
        int anot = 0, inplace = 1;
        int nedit = 0, nwhat = 0;
        char *cp, *cwd, *dp, *maildir, *file = NULL;
-       char *folder = NULL, *msg = NULL, *dfolder = NULL;
-       char *dmsg = NULL, *ed = NULL, drft[BUFSIZ], buf[BUFSIZ];
+       char *folder = NULL, *msg = NULL;
+       char *ed = NULL, drft[BUFSIZ], buf[BUFSIZ];
        char **argp, **arguments;
        struct msgs *mp = NULL;
        char **argp, **arguments;
        struct msgs *mp = NULL;
-       struct stat st;
        FILE *in;
 
 #ifdef MHE
        FILE *in;
 
 #ifdef MHE
@@ -291,25 +261,6 @@ main (int argc, char **argv)
                                        if ((outputlinelen = atoi (cp)) < 10)
                                                adios (NULL, "impossible width %d", outputlinelen);
                                        continue;
                                        if ((outputlinelen = atoi (cp)) < 10)
                                                adios (NULL, "impossible width %d", outputlinelen);
                                        continue;
-
-                               case DFOLDSW:
-                                       if (dfolder)
-                                               adios (NULL, "only one draft folder at a time!");
-                                       if (!(cp = *argp++) || *cp == '-')
-                                               adios (NULL, "missing argument to %s", argp[-2]);
-                                       dfolder = path (*cp == '+' || *cp == '@' ? cp + 1 : cp,
-                                                                       *cp != '@' ? TFOLDER : TSUBCWF);
-                                       continue;
-                               case DMSGSW:
-                                       if (dmsg)
-                                               adios (NULL, "only one draft message at a time!");
-                                       if (!(dmsg = *argp++) || *dmsg == '-')
-                                               adios (NULL, "missing argument to %s", argp[-2]);
-                                       continue;
-                               case NDFLDSW:
-                                       dfolder = NULL;
-                                       isdf = NOTOK;
-                                       continue;
                        }
                }
                if (*cp == '+' || *cp == '@') {
                        }
                }
                if (*cp == '+' || *cp == '@') {
@@ -339,45 +290,12 @@ main (int argc, char **argv)
        if (file && (msg || folder))
                adios (NULL, "can't mix files and folders/msgs");
 
        if (file && (msg || folder))
                adios (NULL, "can't mix files and folders/msgs");
 
-try_it_again:
-
 #ifdef MHE
        strncpy (drft, buildsw ? m_maildir ("reply")
 #ifdef MHE
        strncpy (drft, buildsw ? m_maildir ("reply")
-               : m_draft (dfolder, NULL, NOUSE, &isdf), sizeof(drft));
-
-       /* Check if a draft exists */
-       if (!buildsw && stat (drft, &st) != NOTOK) {
+               : m_draft("new"), sizeof(drft));
 #else
 #else
-       strncpy (drft, m_draft (dfolder, dmsg, NOUSE, &isdf), sizeof(drft));
-
-       /* Check if a draft exists */
-       if (stat (drft, &st) != NOTOK) {
+       strncpy (drft, m_draft("new"), sizeof(drft));
 #endif /* MHE */
 #endif /* MHE */
-               printf ("Draft \"%s\" exists (%ld bytes).", drft, (long) st.st_size);
-               for (i = LISTDSW; i != YESW;) {
-                       if (!(argp = getans ("\nDisposition? ", isdf ? aqrnl : aqrl)))
-                               done (1);
-                       switch (i = smatch (*argp, isdf ? aqrnl : aqrl)) {
-                               case NOSW:
-                                       done (0);
-                               case NEWSW:
-                                       dmsg = NULL;
-                                       goto try_it_again;
-                               case YESW:
-                                       break;
-                               case LISTDSW:
-                                       showfile (++argp, drft);
-                                       break;
-                               case REFILSW:
-                                       if (refile (++argp, drft) == 0)
-                                               i = YESW;
-                                       break;
-                               default:
-                                       advise (NULL, "say what?");
-                                       break;
-                       }
-               }
-       }
 
        if (file) {
                /*
 
        if (file) {
                /*
index 53103fd..e04efaa 100644 (file)
--- a/uip/rmm.c
+++ b/uip/rmm.c
@@ -76,7 +76,7 @@ main (int argc, char **argv)
                        else
                                folder = pluspath (cp);
                } else
                        else
                                folder = pluspath (cp);
                } else
-                               app_msgarg(&msgs, cp);
+                       app_msgarg(&msgs, cp);
        }
 
        if (!context_find ("path"))
        }
 
        if (!context_find ("path"))
index d1a183e..45b5e26 100644 (file)
@@ -17,93 +17,75 @@ static struct swit switches[] = {
        { "alias aliasfile", 0 },
 #define DEBUGSW  1
        { "debug", -5 },
        { "alias aliasfile", 0 },
 #define DEBUGSW  1
        { "debug", -5 },
-#define DRAFTSW  2
-       { "draft", 0 },
-#define DFOLDSW  3
-       { "draftfolder +folder", 6 },
-#define DMSGSW  4
-       { "draftmessage msg", 6 },
-#define NDFLDSW  5
-       { "nodraftfolder", 0 },
-#define FILTSW  6
+#define FILTSW  2
        { "filter filterfile", 0 },
        { "filter filterfile", 0 },
-#define NFILTSW  7
+#define NFILTSW  3
        { "nofilter", 0 },
        { "nofilter", 0 },
-#define FRMTSW  8
+#define FRMTSW  4
        { "format", 0 },
        { "format", 0 },
-#define NFRMTSW  9
+#define NFRMTSW  5
        { "noformat", 0 },
        { "noformat", 0 },
-#define FORWSW  10
+#define FORWSW  6
        { "forward", 0 },
        { "forward", 0 },
-#define NFORWSW  11
+#define NFORWSW  7
        { "noforward", 0 },
        { "noforward", 0 },
-#define MIMESW  12
+#define MIMESW  8
        { "mime", 0 },
        { "mime", 0 },
-#define NMIMESW  13
+#define NMIMESW  9
        { "nomime", 0 },
        { "nomime", 0 },
-#define MSGDSW  14
+#define MSGDSW  10
        { "msgid", 0 },
        { "msgid", 0 },
-#define NMSGDSW  15
+#define NMSGDSW  11
        { "nomsgid", 0 },
        { "nomsgid", 0 },
-#define PUSHSW  16
+#define PUSHSW  12
        { "push", 0 },
        { "push", 0 },
-#define NPUSHSW  17
+#define NPUSHSW  13
        { "nopush", 0 },
        { "nopush", 0 },
-#define UNIQSW  19
+#define UNIQSW  14
        { "unique", -6 },
        { "unique", -6 },
-#define NUNIQSW  20
+#define NUNIQSW  15
        { "nounique", -8 },
        { "nounique", -8 },
-#define VERBSW  21
+#define VERBSW  16
        { "verbose", 0 },
        { "verbose", 0 },
-#define NVERBSW  22
+#define NVERBSW  17
        { "noverbose", 0 },
        { "noverbose", 0 },
-#define WATCSW  23
+#define WATCSW  18
        { "watch", 0 },
        { "watch", 0 },
-#define NWATCSW  24
+#define NWATCSW  19
        { "nowatch", 0 },
        { "nowatch", 0 },
-#define WIDTHSW  25
+#define WIDTHSW  20
        { "width columns", 0 },
        { "width columns", 0 },
-#define VERSIONSW  26
+#define VERSIONSW  21
        { "version", 0 },
        { "version", 0 },
-#define HELPSW  27
+#define HELPSW  22
        { "help", 0 },
        { "help", 0 },
-#define BITSTUFFSW  28
+#define BITSTUFFSW  23
        { "dashstuffing", -12 },
        { "dashstuffing", -12 },
-#define NBITSTUFFSW  29
+#define NBITSTUFFSW  24
        { "nodashstuffing", -14 },
        { "nodashstuffing", -14 },
-#define MAILSW  30
+#define MAILSW  25
        { "mail", -4 },
        { "mail", -4 },
-#define SAMLSW  31
+#define SAMLSW  26
        { "saml", -4 },
        { "saml", -4 },
-#define SENDSW  32
+#define SENDSW  27
        { "send", -4 },
        { "send", -4 },
-#define SOMLSW  33
+#define SOMLSW  28
        { "soml", -4 },
        { "soml", -4 },
-#define CLIESW  34
+#define CLIESW  29
        { "client host", -6 },
        { "client host", -6 },
-#define SERVSW  35
+#define SERVSW  30
        { "server host", 6 },
        { "server host", 6 },
-#define SNOOPSW  36
+#define SNOOPSW  31
        { "snoop", 5 },
        { "snoop", 5 },
-#define ATTACHSW  40
+#define ATTACHSW  32
        { "attach", 6 },
        { "attach", 6 },
-#define ATTACHFORMATSW  41
+#define ATTACHFORMATSW  33
        { "attachformat", 7 },
        { "attachformat", 7 },
-#define PORTSW  42
+#define PORTSW  34
        { "port server-port-name/number" , 4 },
        { NULL, 0 }
 };
 
        { "port server-port-name/number" , 4 },
        { NULL, 0 }
 };
 
-static struct swit anyl[] = {
-#define NOSW  0
-       { "no", 0 },
-#define YESW  1
-       { "yes", 0 },
-#define LISTDSW  2
-       { "list", 0 },
-       { NULL, 0 }
-};
-
 extern int debugsw;  /* from sendsbr.c */
 extern int forwsw;
 extern int inplace;
 extern int debugsw;  /* from sendsbr.c */
 extern int forwsw;
 extern int inplace;
@@ -120,9 +102,9 @@ int
 main (int argc, char **argv)
 {
        int msgp = 0, distsw = 0, vecp = 1;
 main (int argc, char **argv)
 {
        int msgp = 0, distsw = 0, vecp = 1;
-       int isdf = 0, mime = 0;
+       int mime = 0;
        int msgnum, status;
        int msgnum, status;
-       char *cp, *dfolder = NULL, *maildir = NULL;
+       char *cp, *maildir = NULL;
        char buf[BUFSIZ], **ap, **argp, **arguments;
        char *msgs[MAXARGS], *vec[MAXARGS];
        struct msgs *mp;
        char buf[BUFSIZ], **ap, **argp, **arguments;
        char *msgs[MAXARGS], *vec[MAXARGS];
        struct msgs *mp;
@@ -164,28 +146,6 @@ main (int argc, char **argv)
                                        print_version(invo_name);
                                        done (1);
 
                                        print_version(invo_name);
                                        done (1);
 
-                               case DRAFTSW:
-                                       msgs[msgp++] = draft;
-                                       continue;
-
-                               case DFOLDSW:
-                                       if (dfolder)
-                                               adios (NULL, "only one draft folder at a time!");
-                                       if (!(cp = *argp++) || *cp == '-')
-                                               adios (NULL, "missing argument to %s", argp[-2]);
-                                       dfolder = path (*cp == '+' || *cp == '@' ? cp + 1 : cp,
-                                                       *cp != '@' ? TFOLDER : TSUBCWF);
-                                       continue;
-                               case DMSGSW:
-                                       if (!(cp = *argp++) || *cp == '-')
-                                               adios (NULL, "missing argument to %s", argp[-2]);
-                                       msgs[msgp++] = cp;
-                                       continue;
-                               case NDFLDSW:
-                                       dfolder = NULL;
-                                       isdf = NOTOK;
-                                       continue;
-
                                case PUSHSW:
                                        pushsw++;
                                        continue;
                                case PUSHSW:
                                        pushsw++;
                                        continue;
@@ -293,77 +253,39 @@ main (int argc, char **argv)
                }
        }
 
                }
        }
 
-       if (dfolder == NULL) {
-               if (msgp == 0) {
-#ifdef WHATNOW
-                       if ((cp = getenv ("mhdraft")) && *cp) {
-                               msgs[msgp++] = cp;
-                               goto go_to_it;
-                       }
-#endif /* WHATNOW */
-                       msgs[msgp++] = getcpy (m_draft (NULL, NULL, 1, &isdf));
-                       if (stat (msgs[0], &st) == NOTOK)
-                               adios (msgs[0], "unable to stat draft file");
-                       cp = concat ("Use \"", msgs[0], "\"? ", NULL);
-                       for (status = LISTDSW; status != YESW;) {
-                               if (!(argp = getans (cp, anyl)))
-                                       done (1);
-                               switch (status = smatch (*argp, anyl)) {
-                                       case NOSW:
-                                               done (0);
-                                       case YESW:
-                                               break;
-                                       case LISTDSW:
-                                               showfile (++argp, msgs[0]);
-                                               break;
-                                       default:
-                                               advise (NULL, "say what?");
-                                               break;
-                               }
-                       }
-               } else {
-                       for (msgnum = 0; msgnum < msgp; msgnum++)
-                               msgs[msgnum] = getcpy (m_maildir (msgs[msgnum]));
-               }
-       } else {
-               if (!context_find ("path"))
-                       free (path ("./", TFOLDER));
-
-               if (!msgp)
-                       msgs[msgp++] = "cur";
-               maildir = m_maildir (dfolder);
-
-               if (chdir (maildir) == NOTOK)
-                       adios (maildir, "unable to change directory to");
-
-               /* read folder and create message structure */
-               if (!(mp = folder_read (dfolder)))
-                       adios (NULL, "unable to read folder %s", dfolder);
-
-               /* check for empty folder */
-               if (mp->nummsg == 0)
-                       adios (NULL, "no messages in %s", dfolder);
-
-               /* parse all the message ranges/sequences and set SELECTED */
-               for (msgnum = 0; msgnum < msgp; msgnum++)
-                       if (!m_convert (mp, msgs[msgnum]))
-                               done (1);
-               seq_setprev (mp);  /* set the previous-sequence */
-
-               for (msgp = 0, msgnum = mp->lowsel; msgnum <= mp->hghsel; msgnum++) {
-                       if (is_selected (mp, msgnum)) {
-                               msgs[msgp++] = getcpy (m_name (msgnum));
-                               unset_exists (mp, msgnum);
-                       }
-               }
+       if (!context_find ("path"))
+               free (path ("./", TFOLDER));
 
 
-               mp->msgflags |= SEQMOD;
-               seq_save (mp);
+       if (!msgp)
+               msgs[msgp++] = "cur";
+       maildir = m_maildir (draftfolder);
+
+       if (chdir (maildir) == NOTOK)
+               adios (maildir, "unable to change directory to");
+
+       /* read folder and create message structure */
+       if (!(mp = folder_read (draftfolder)))
+               adios (NULL, "unable to read draft folder %s", draftfolder);
+
+       /* check for empty folder */
+       if (mp->nummsg == 0)
+               adios (NULL, "no messages in draft folder %s", draftfolder);
+
+       /* parse all the message ranges/sequences and set SELECTED */
+       for (msgnum = 0; msgnum < msgp; msgnum++)
+               if (!m_convert (mp, msgs[msgnum]))
+                       done (1);
+       seq_setprev (mp);  /* set the previous-sequence */
+
+       for (msgp = 0, msgnum = mp->lowsel; msgnum <= mp->hghsel; msgnum++) {
+               if (is_selected (mp, msgnum)) {
+                       msgs[msgp++] = getcpy (m_name (msgnum));
+                       unset_exists (mp, msgnum);
+               }
        }
 
        }
 
-#ifdef WHATNOW
-go_to_it:
-#endif /* WHATNOW */
+       mp->msgflags |= SEQMOD;
+       seq_save (mp);
 
        if ((cp = getenv ("SIGNATURE")) == NULL || *cp == 0)
                if ((cp = context_find ("signature")) && *cp)
 
        if ((cp = getenv ("SIGNATURE")) == NULL || *cp == 0)
                if ((cp = context_find ("signature")) && *cp)
index eda19ca..413daeb 100644 (file)
@@ -35,13 +35,11 @@ static struct swit switches[] = {
        { "showmimeproc program", 0 },
 #define NSHOWSW  11
        { "noshowproc", 0 },
        { "showmimeproc program", 0 },
 #define NSHOWSW  11
        { "noshowproc", 0 },
-#define DRFTSW  12
-       { "draft", 0 },
-#define FILESW  13
+#define FILESW  12
        { "file file", -4 },  /* interface from showfile */
        { "file file", -4 },  /* interface from showfile */
-#define VERSIONSW  14
+#define VERSIONSW  13
        { "version", 0 },
        { "version", 0 },
-#define HELPSW  15
+#define HELPSW  14
        { "help", 0 },
        { NULL, 0 }
 };
        { "help", 0 },
        { NULL, 0 }
 };
@@ -62,9 +60,9 @@ int mhl (int, char **);
 int
 main (int argc, char **argv)
 {
 int
 main (int argc, char **argv)
 {
-       int draftsw = 0, headersw = 1, msgp = 0;
+       int headersw = 1, msgp = 0;
        int nshow = 0, checkmime = 1, mime;
        int nshow = 0, checkmime = 1, mime;
-       int vecp = 1, procp = 1, isdf = 0, mode = SHOW, msgnum;
+       int vecp = 1, procp = 1, mode = SHOW, msgnum;
        char *cp, *maildir, *file = NULL, *folder = NULL, *proc;
        char buf[BUFSIZ], **argp, **arguments;
        char *msgs[MAXARGS], *vec[MAXARGS];
        char *cp, *maildir, *file = NULL, *folder = NULL, *proc;
        char buf[BUFSIZ], **argp, **arguments;
        char *msgs[MAXARGS], *vec[MAXARGS];
@@ -107,20 +105,12 @@ main (int argc, char **argv)
                                        print_version(invo_name);
                                        done (1);
 
                                        print_version(invo_name);
                                        done (1);
 
-                               case DRFTSW:
-                                       if (file)
-                                               adios (NULL, "only one file at a time!");
-                                       draftsw++;
-                                       if (mode == SHOW)
-                                               continue;
-usage:
-                                       adios (NULL,
-                                                       "usage: %s [+folder] [switches] [switches for showproc]",
-                                                       invo_name);
                                case FILESW:
                                        if (mode != SHOW)
                                case FILESW:
                                        if (mode != SHOW)
-                                               goto usage;
-                                       if (draftsw || file)
+usage:
+                                               adios (NULL, "usage: %s [+folder] [switches] [switches for showproc]", invo_name);
+
+                                       if (file)
                                                adios (NULL, "only one file at a time!");
                                        if (!(cp = *argp++) || *cp == '-')
                                                adios (NULL, "missing argument to %s", argp[-2]);
                                                adios (NULL, "only one file at a time!");
                                        if (!(cp = *argp++) || *cp == '-')
                                                adios (NULL, "missing argument to %s", argp[-2]);
@@ -189,18 +179,15 @@ usage:
        if (!context_find ("path"))
                free (path ("./", TFOLDER));
 
        if (!context_find ("path"))
                free (path ("./", TFOLDER));
 
-       if (draftsw || file) {
+       if (file) {
                if (msgp)
                        adios (NULL, "only one file at a time!");
                if (msgp)
                        adios (NULL, "only one file at a time!");
-               vec[vecp++] = draftsw
-                       ? getcpy (m_draft (folder, msgp ? msgs[0] : NULL, 1, &isdf))
-                       : file;
+               vec[vecp++] = file;
                goto go_to_it;
        }
 
 #ifdef WHATNOW
        if (!msgp && !folder && mode == SHOW && (cp = getenv ("mhdraft")) && *cp) {
                goto go_to_it;
        }
 
 #ifdef WHATNOW
        if (!msgp && !folder && mode == SHOW && (cp = getenv ("mhdraft")) && *cp) {
-               draftsw++;
                vec[vecp++] = cp;
                goto go_to_it;
        }
                vec[vecp++] = cp;
                goto go_to_it;
        }
@@ -281,7 +268,7 @@ go_to_it: ;
        } else {
                /* check if any messages are non-text MIME messages */
                if (checkmime && !getenv ("NOMHNPROC")) {
        } else {
                /* check if any messages are non-text MIME messages */
                if (checkmime && !getenv ("NOMHNPROC")) {
-                       if (!draftsw && !file) {
+                       if (!file) {
                                /* loop through selected messages and check for MIME */
                                for (msgnum = mp->lowsel; msgnum <= mp->hghsel; msgnum++)
                                        if (is_selected (mp, msgnum) && is_nontext (m_name (msgnum))) {
                                /* loop through selected messages and check for MIME */
                                for (msgnum = mp->lowsel; msgnum <= mp->hghsel; msgnum++)
                                        if (is_selected (mp, msgnum) && is_nontext (m_name (msgnum))) {
@@ -289,7 +276,7 @@ go_to_it: ;
                                                break;
                                        }
                        } else {
                                                break;
                                        }
                        } else {
-                               /* check the file or draft for MIME */
+                               /* check the file for MIME */
                                if (is_nontext (vec[vecp - 1]))
                                        mime = 1;
                        }
                                if (is_nontext (vec[vecp - 1]))
                                        mime = 1;
                        }
@@ -302,16 +289,16 @@ go_to_it: ;
                        proc = showproc;
        }
 
                        proc = showproc;
        }
 
-       if (folder && !draftsw && !file)
+       if (folder && !file)
                m_putenv ("mhfolder", folder);
 
        /*
         * For backward compatibility, if the "proc" is mhn,
         * then add "-show" option.  Add "-file" if showing
                m_putenv ("mhfolder", folder);
 
        /*
         * For backward compatibility, if the "proc" is mhn,
         * then add "-show" option.  Add "-file" if showing
-        * file or draft.
+        * file.
         */
        if (strcmp (r1bindex (proc, '/'), "mhn") == 0) {
         */
        if (strcmp (r1bindex (proc, '/'), "mhn") == 0) {
-               if (draftsw || file) {
+               if (file) {
                        vec[vecp] = vec[vecp - 1];
                        vec[vecp - 1] = "-file";
                        vecp++;
                        vec[vecp] = vec[vecp - 1];
                        vec[vecp - 1] = "-file";
                        vecp++;
@@ -320,9 +307,9 @@ go_to_it: ;
                vec[vecp] = NULL;
        }
 
                vec[vecp] = NULL;
        }
 
-       /* If the "proc" is "mhshow", add "-file" if showing file or draft.
+       /* If the "proc" is "mhshow", add "-file" if showing file.
         */
         */
-       if (strcmp (r1bindex (proc, '/'), "mhshow") == 0 && (draftsw || file) ) {
+       if (strcmp (r1bindex (proc, '/'), "mhshow") == 0 && file ) {
           vec[vecp] = vec[vecp - 1];
           vec[vecp - 1] = "-file";
           vec[++vecp] = NULL;
           vec[vecp] = vec[vecp - 1];
           vec[vecp - 1] = "-file";
           vec[++vecp] = NULL;
@@ -344,7 +331,6 @@ go_to_it: ;
         * checking for mhn here, since we've already taken care of mhl.
         */
        if (!strcmp (r1bindex (proc, '/'), "mhl")
         * checking for mhn here, since we've already taken care of mhl.
         */
        if (!strcmp (r1bindex (proc, '/'), "mhl")
-                       && !draftsw
                        && !file
                        && chdir (maildir = concat (m_maildir (""), "/", NULL)) != NOTOK) {
                mp->foldpath = concat (mp->foldpath, "/", NULL);
                        && !file
                        && chdir (maildir = concat (m_maildir (""), "/", NULL)) != NOTOK) {
                mp->foldpath = concat (mp->foldpath, "/", NULL);
index c0f331a..f8b7223 100644 (file)
 #include <h/utils.h>
 
 static struct swit whatnowswitches[] = {
 #include <h/utils.h>
 
 static struct swit whatnowswitches[] = {
-#define DFOLDSW  0
-       { "draftfolder +folder", 0 },
-#define DMSGSW  1
-       { "draftmessage msg", 0 },
-#define NDFLDSW  2
-       { "nodraftfolder", 0 },
-#define EDITRSW  3
+#define EDITRSW  0
        { "editor editor", 0 },
        { "editor editor", 0 },
-#define NEDITSW  4
+#define NEDITSW  1
        { "noedit", 0 },
        { "noedit", 0 },
-#define PRMPTSW  5
+#define PRMPTSW  2
        { "prompt string", 4 },
        { "prompt string", 4 },
-#define VERSIONSW  6
+#define VERSIONSW  3
        { "version", 0 },
        { "version", 0 },
-#define HELPSW  7
+#define HELPSW  4
        { "help", 0 },
        { "help", 0 },
-#define ATTACHSW  8
+#define ATTACHSW  5
        { "attach header-field-name", 0 },
        { NULL, 0 }
 };
        { "attach header-field-name", 0 },
        { NULL, 0 }
 };
@@ -83,21 +77,21 @@ static struct swit aleqs[] = {
        { "send [<switches>]", 0 },
 #define PUSHSW  6
        { "push [<switches>]", 0 },
        { "send [<switches>]", 0 },
 #define PUSHSW  6
        { "push [<switches>]", 0 },
-#define QUITSW  8
+#define QUITSW  7
        { "quit [-delete]", 0 },
        { "quit [-delete]", 0 },
-#define DELETESW  9
+#define DELETESW  8
        { "delete", 0 },
        { "delete", 0 },
-#define CDCMDSW  10
+#define CDCMDSW  9
        { "cd [directory]", 0 },
        { "cd [directory]", 0 },
-#define PWDCMDSW  11
+#define PWDCMDSW  10
        { "pwd", 0 },
        { "pwd", 0 },
-#define LSCMDSW  12
+#define LSCMDSW  11
        { "ls", 0 },
        { "ls", 0 },
-#define ATTACHCMDSW  13
+#define ATTACHCMDSW  12
        { "attach", 0 },
        { "attach", 0 },
-#define DETACHCMDSW  14
+#define DETACHCMDSW  13
        { "detach [-n]", 2 },
        { "detach [-n]", 2 },
-#define ALISTCMDSW  15
+#define ALISTCMDSW  14
        { "alist [-ln] ", 2 },
        { NULL, 0 }
 };
        { "alist [-ln] ", 2 },
        { NULL, 0 }
 };
@@ -128,8 +122,8 @@ static int copyf (char *, char *);
 int
 WhatNow (int argc, char **argv)
 {
 int
 WhatNow (int argc, char **argv)
 {
-       int isdf = 0, nedit = 0, use = 0;
-       char *cp, *dfolder = NULL, *dmsg = NULL;
+       int nedit = 0, use = 0;
+       char *cp;
        char *ed = NULL, *drft = NULL, *msgnam = NULL;
        char buf[BUFSIZ], prompt[BUFSIZ];
        char **argp, **arguments;
        char *ed = NULL, *drft = NULL, *msgnam = NULL;
        char buf[BUFSIZ], prompt[BUFSIZ];
        char **argp, **arguments;
@@ -175,25 +169,6 @@ WhatNow (int argc, char **argv)
                                print_version(invo_name);
                                done (1);
 
                                print_version(invo_name);
                                done (1);
 
-                       case DFOLDSW:
-                               if (dfolder)
-                                       adios (NULL, "only one draft folder at a time!");
-                               if (!(cp = *argp++) || *cp == '-')
-                                       adios (NULL, "missing argument to %s", argp[-2]);
-                               dfolder = path (*cp == '+' || *cp == '@' ? cp + 1 : cp,
-                                       *cp != '@' ? TFOLDER : TSUBCWF);
-                               continue;
-                       case DMSGSW:
-                               if (dmsg)
-                                       adios (NULL, "only one draft message at a time!");
-                               if (!(dmsg = *argp++) || *dmsg == '-')
-                                       adios (NULL, "missing argument to %s", argp[-2]);
-                               continue;
-                       case NDFLDSW:
-                               dfolder = NULL;
-                               isdf = NOTOK;
-                               continue;
-
                        case EDITRSW:
                                if (!(ed = *argp++) || *ed == '-')
                                        adios (NULL, "missing argument to %s", argp[-2]);
                        case EDITRSW:
                                if (!(ed = *argp++) || *ed == '-')
                                        adios (NULL, "missing argument to %s", argp[-2]);
@@ -223,7 +198,7 @@ WhatNow (int argc, char **argv)
        }
 
        if ((drft == NULL && (drft = getenv ("mhdraft")) == NULL) || *drft == 0)
        }
 
        if ((drft == NULL && (drft = getenv ("mhdraft")) == NULL) || *drft == 0)
-               drft = getcpy (m_draft (dfolder, dmsg, 1, &isdf));
+               drft = getcpy (m_draft("cur"));
 
        msgnam = (cp = getenv ("mhaltmsg")) && *cp ? getcpy (cp) : NULL;
 
 
        msgnam = (cp = getenv ("mhaltmsg")) && *cp ? getcpy (cp) : NULL;
 
@@ -1009,53 +984,47 @@ static struct swit  sendswitches[] = {
        { "push", 0 },
 #define NSPSHSW  13
        { "nopush", 0 },
        { "push", 0 },
 #define NSPSHSW  13
        { "nopush", 0 },
-#define UNIQSW  15
+#define UNIQSW  14
        { "unique", -6 },
        { "unique", -6 },
-#define NUNIQSW  16
+#define NUNIQSW  15
        { "nounique", -8 },
        { "nounique", -8 },
-#define VERBSW  17
+#define VERBSW  16
        { "verbose", 0 },
        { "verbose", 0 },
-#define NVERBSW  18
+#define NVERBSW  17
        { "noverbose", 0 },
        { "noverbose", 0 },
-#define WATCSW  19
+#define WATCSW  18
        { "watch", 0 },
        { "watch", 0 },
-#define NWATCSW  20
+#define NWATCSW  19
        { "nowatch", 0 },
        { "nowatch", 0 },
-#define WIDTHSW  21
+#define WIDTHSW  20
        { "width columns", 0 },
        { "width columns", 0 },
-#define SVERSIONSW  22
+#define SVERSIONSW  21
        { "version", 0 },
        { "version", 0 },
-#define SHELPSW  23
+#define SHELPSW  22
        { "help", 0 },
        { "help", 0 },
-#define BITSTUFFSW  24
+#define BITSTUFFSW  23
        { "dashstuffing", -12 },
        { "dashstuffing", -12 },
-#define NBITSTUFFSW  25
+#define NBITSTUFFSW  24
        { "nodashstuffing", -14 },
        { "nodashstuffing", -14 },
-#define MAILSW  26
+#define MAILSW  25
        { "mail", -4 },
        { "mail", -4 },
-#define SAMLSW  27
+#define SAMLSW  26
        { "saml", -4 },
        { "saml", -4 },
-#define SSNDSW  28
+#define SSNDSW  27
        { "send", -4 },
        { "send", -4 },
-#define SOMLSW  29
+#define SOMLSW  28
        { "soml", -4 },
        { "soml", -4 },
-#define CLIESW  30
+#define CLIESW  29
        { "client host", -6 },
        { "client host", -6 },
-#define SERVSW  31
+#define SERVSW  30
        { "server host", 6 },
        { "server host", 6 },
-#define SNOOPSW  32
+#define SNOOPSW  31
        { "snoop", -5 },
        { "snoop", -5 },
-#define SDRFSW  33
-       { "draftfolder +folder", -6 },
-#define SDRMSW  34
-       { "draftmessage msg", -6 },
-#define SNDRFSW  35
-       { "nodraftfolder", -3 },
-#define SNDATTACHSW  39
+#define SNDATTACHSW  32
        { "attach file", 6 },
        { "attach file", 6 },
-#define SNDATTACHFORMAT   40
+#define SNDATTACHFORMAT   33
        { "attachformat", 7 },
        { "attachformat", 7 },
-#define PORTSW  41
+#define PORTSW  34
        { "port server-port-name/number", 4 },
        { NULL, 0 }
 };
        { "port server-port-name/number", 4 },
        { NULL, 0 }
 };
@@ -1219,15 +1188,6 @@ sendit (char *sp, char **arg, char *file, int pushed)
                                        vec[vecp++] = cp;
                                        continue;
 
                                        vec[vecp++] = cp;
                                        continue;
 
-                               case SDRFSW:
-                               case SDRMSW:
-                                       if (!(cp = *argp++) || *cp == '-') {
-                                               advise (NULL, "missing argument to %s", argp[-2]);
-                                               return;
-                                       }
-                               case SNDRFSW:
-                                       continue;
-
                                case SNDATTACHSW:
                                        if (!(attach = *argp++) || *attach == '-') {
                                                advise (NULL, "missing argument to %s", argp[-2]);
                                case SNDATTACHSW:
                                        if (!(attach = *argp++) || *attach == '-') {
                                                advise (NULL, "missing argument to %s", argp[-2]);