Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!uakari.primate.wisc.edu!crdgw1!uunet!telebit!brent From: brent@telebit.com (Brent Chapman) Newsgroups: comp.mail.mh Subject: New "-ask/-noask" options for 'refile' (patch for MH 6.7.1) Message-ID: <1991Apr29.215245.2442@telebit.com> Date: 29 Apr 91 21:52:45 GMT Sender: news@telebit.com Organization: Telebit Corporation; Sunnyvale, CA Lines: 206 Originator: brent@napa Nntp-Posting-Host: napa.telebit.com Appended is a patch to add a "-ask" and "-noask" options to the 'refile' command (the patch is for both the source code and the documentation). Basicly, the "-ask" switch controls whether or not 'refile' will ask you whether or not to create a folder that doesn't yet exist. If "-ask" is set (which I've made the default), then behavior is exactly the same as in the unmodified "refile": you are asked whether or not you want to create the folder. If, however, "-noask" is set, "refile" simply creates the folder without bothering to ask you. I added this because I use a wrapper around MH (the "mh-e" mode of GNU Emacs) that doesn't allow me (at least not as far as I've found) to respond to the "Create new folder foobar?" query from "refile" when "refile" is invoked from "send" because I specified a folder on the "Fcc:" line that doesn't exist yet. Anyway, I'd like to see this get rolled into the standard MH release, particularly since it is totally backwards compatible (the default preserves the old behavior), but I don't know who to send it to in order to make that happen, so I'm posting it here. The patch can be applied from the top level of the MH directory, with "patch -p0". -Brent -- Brent Chapman Telebit Corporation Sun Network Specialist 1315 Chesapeake Terrace brent@telebit.com Sunnyvale, CA 94089 Phone: 408/745-3264 *** uip/refile.c.orig Fri Dec 14 13:26:09 1990 --- uip/refile.c Mon Apr 29 14:22:08 1991 *************** *** 31,37 **** #define FILESW 6 "file file", 0, ! #define HELPSW 7 "help", 4, NULL, NULL --- 31,42 ---- #define FILESW 6 "file file", 0, ! #define ASKSW 7 ! "ask", 0, ! #define NASKSW 8 ! "noask", 0, ! ! #define HELPSW 9 "help", 4, NULL, NULL *************** *** 61,66 **** --- 66,72 ---- { int linkf = 0, prsrvf = 0, + askf = 1, filep = 0, foldp = 0, msgp = 0, *************** *** 139,144 **** --- 145,157 ---- adios (NULLCP, "missing argument to %s", argp[-2]); files[filep++] = path (cp, TFILE); continue; + + case ASKSW: + askf++; + continue; + case NASKSW: + askf = 0; + continue; } if (*cp == '+' || *cp == '@') { if (foldp > NFOLDERS) *************** *** 165,171 **** if (filep > 0) { if (folder || msgp) adios (NULLCP, "use -file or some messages, not both"); ! opnfolds (folders, foldp); for (i = 0; i < filep; i++) if (m_file (files[i], folders, foldp, prsrvf)) done (1); --- 178,184 ---- if (filep > 0) { if (folder || msgp) adios (NULLCP, "use -file or some messages, not both"); ! opnfolds (folders, foldp, askf); for (i = 0; i < filep; i++) if (m_file (files[i], folders, foldp, prsrvf)) done (1); *************** *** 192,198 **** done (1); m_setseq (mp); ! opnfolds (folders, foldp); for (msgnum = mp -> lowsel; msgnum <= mp -> hghsel; msgnum++) if (mp -> msgstats[msgnum] & SELECTED) { cp = getcpy (m_name (msgnum)); --- 205,211 ---- done (1); m_setseq (mp); ! opnfolds (folders, foldp, askf); for (msgnum = mp -> lowsel; msgnum <= mp -> hghsel; msgnum++) if (mp -> msgstats[msgnum] & SELECTED) { cp = getcpy (m_name (msgnum)); *************** *** 225,233 **** /* */ ! static opnfolds (folders, nfolders) register struct st_fold *folders; int nfolders; { register char *cp; char nmaildir[BUFSIZ]; --- 238,247 ---- /* */ ! static opnfolds (folders, nfolders, askf) register struct st_fold *folders; int nfolders; + int askf; { register char *cp; char nmaildir[BUFSIZ]; *************** *** 243,252 **** if (stat (nmaildir, &st) == NOTOK) { if (errno != ENOENT) adios (nmaildir, "error on folder"); ! cp = concat ("Create folder \"", nmaildir, "\"? ", NULLCP); ! if (!getanswer (cp)) ! done (1); ! free (cp); if (!makedir (nmaildir)) adios (NULLCP, "unable to create folder %s", nmaildir); } --- 257,268 ---- if (stat (nmaildir, &st) == NOTOK) { if (errno != ENOENT) adios (nmaildir, "error on folder"); ! if (askf) { ! cp = concat ("Create folder \"", nmaildir, "\"? ", NULLCP); ! if (!getanswer (cp)) ! done (1); ! free (cp); ! } if (!makedir (nmaildir)) adios (NULLCP, "unable to create folder %s", nmaildir); } *** conf/doc/refile.rf.orig Fri Dec 14 13:24:00 1990 --- conf/doc/refile.rf Mon Apr 29 14:40:10 1991 *************** *** 9,14 **** --- 9,15 ---- \%[\-draft] \%[\-link] \%[\-nolink] \%[\-preserve] \%[\-nopreserve] + \%[\-ask] \%[\-noask] \%[\-src\ +folder] \%[\-file\ file] +folder ... *************** *** 44,52 **** (to convert a file in mail drop format to a folder of \fIMH\fR messages, see \fIinc\fR\0(1)). ! If a destination folder doesn't exist, \fIrefile\fR will ask if you ! want to create it. ! A negative response will abort the file operation. The option `\-link' preserves the source folder copy of the message (i.e., it does a \fIln\fR(1) rather than a \fImv\fR(1)), whereas, --- 45,54 ---- (to convert a file in mail drop format to a folder of \fIMH\fR messages, see \fIinc\fR\0(1)). ! If a destination folder doesn't exist, and the `\-ask' option is set ! (the default), \fIrefile\fR will ask if you want to create it; ! a negative response will abort the file operation. ! If the `\-noask' option is set, the folder will be created without asking. The option `\-link' preserves the source folder copy of the message (i.e., it does a \fIln\fR(1) rather than a \fImv\fR(1)), whereas, *************** *** 92,97 **** --- 94,101 ---- `\-nolink' .Ds `\-nopreserve' + .Ds + `\-ask' .Co If `\-src\ +folder' is given, it will become the current folder.