Whatnow prompt: From now on, detaching only by numbers.
authormarkus schnalke <meillo@marmaro.de>
Fri, 8 Jun 2012 08:18:47 +0000 (10:18 +0200)
committermarkus schnalke <meillo@marmaro.de>
Fri, 8 Jun 2012 08:18:47 +0000 (10:18 +0200)
-n flag of `detach' is now default and thus removed.
(`alist' prints the numbers by default.)
If by mistake a whole bunch of of files was added (e.g. `attach *'),
these attachments should be removed with the editor in the draft.

man/whatnow.man1
uip/whatnow.c

index 36295ac..54f0ef8 100644 (file)
@@ -85,8 +85,8 @@ add the named files to the draft as MIME attachments
 .B alist
 list the MIME attachments
 .TP \w'refilezzzzfolderz'u
 .B alist
 list the MIME attachments
 .TP \w'refilezzzzfolderz'u
-.B detach [-n] files-or-numbers
-remove MIME attachments, either by file name or by number with -n
+.B detach numbers
+remove MIME attachments by number
 .RE
 .PP
 When entering your response, you need only type enough characters
 .RE
 .PP
 When entering your response, you need only type enough characters
index 798d0e2..273921c 100644 (file)
@@ -31,9 +31,8 @@
 **        alist                   This option lists the attachments on the
 **                                draft.
 **
 **        alist                   This option lists the attachments on the
 **                                draft.
 **
-**        detach files            This option removes attachments from the
-**        detach -n numbers       draft.  This can be done by file name or
-**                                by attachment number.
+**        detach numbers          This option removes attachments by
+**                                attachment number from the draft.
 */
 
 #include <h/mh.h>
 */
 
 #include <h/mh.h>
@@ -81,7 +80,7 @@ static struct swit aleqs[] = {
 #define ATTACHCMDSW  10
        { "attach", 0 },
 #define DETACHCMDSW  11
 #define ATTACHCMDSW  10
        { "attach", 0 },
 #define DETACHCMDSW  11
-       { "detach [-n]", 0 },
+       { "detach", 0 },
 #define ALISTCMDSW  12
        { "alist", 0 },
        { NULL, 0 }
 #define ALISTCMDSW  12
        { "alist", 0 },
        { NULL, 0 }
@@ -115,7 +114,6 @@ main(int argc, char **argv)
        char file[MAXPATHLEN + 1];  /* file name buffer */
        char shell[MAXPATHLEN + 1];  /* shell response buffer */
        FILE *f;  /* read pointer for bgnd proc */
        char file[MAXPATHLEN + 1];  /* file name buffer */
        char shell[MAXPATHLEN + 1];  /* shell response buffer */
        FILE *f;  /* read pointer for bgnd proc */
-       int n;  /* set on -n to detach command */
 
        setlocale(LC_ALL, "");
        invo_name = mhbasename(argv[0]);
 
        setlocale(LC_ALL, "");
        invo_name = mhbasename(argv[0]);
@@ -366,86 +364,39 @@ main(int argc, char **argv)
                        /*
                        ** Detach files from current draft.
                        **
                        /*
                        ** Detach files from current draft.
                        **
-                       ** Scan the arguments for a -n.  Mixed file
-                       ** names and numbers aren't allowed, so this
-                       ** catches a -n anywhere in the argument list.
-                       */
-                       for (n = 0, arguments = argp + 1;
-                                       *arguments != NULL;
-                                       arguments++) {
-                               if (strcmp(*arguments, "-n") == 0) {
-                                               n = 1;
-                                               break;
-                               }
-                       }
-
-                       /*
-                       ** A -n was found so interpret the arguments as
+                       ** Interpret the arguments as
                        ** attachment numbers.  Decrement any remaining
                        ** argument number that is greater than the one
                        ** just processed after processing each one so
                        ** that the numbering stays correct.
                        */
                        ** attachment numbers.  Decrement any remaining
                        ** argument number that is greater than the one
                        ** just processed after processing each one so
                        ** that the numbering stays correct.
                        */
-                       if (n == 1) {
-                               for (arguments=argp+1; *arguments;
-                                               arguments++) {
-                                       if (strcmp(*arguments, "-n") == 0)
-                                               continue;
-
-                                       if (**arguments != '\0') {
-                                               char buf[BUFSIZ];
-
-                                               n = atoi(*arguments);
-                                               snprintf(buf, sizeof buf, "anno -delete -comp '%s' -number '%d' '%s'", attach_hdr, n, drft);
-                                               if (system(buf) != 0) {
-                                                       advise(NULL, "Could not delete attachment header.");
-                                               }
+                       for (arguments=argp+1; *arguments; arguments++) {
+                               char buf[BUFSIZ];
+                               int n;
 
 
-                                               for (argp=arguments+1; *argp;
-                                                               argp++) {
-                                                       if (atoi(*argp) > n) {
-                                                               if (atoi(*argp) == 1)
-                                                                       *argp = "";
-                                                               else
-                                                                       sprintf(*argp, "%d", atoi(*argp) - 1);
-                                                       }
-                                               }
-                                       }
+                               if (**arguments == '\0') {
+                                       continue;
                                }
                                }
-                               break;
-                       }
-                       /* else */
 
 
-                       /*
-                       ** The arguments are interpreted as file names.
-                       ** Run them through the user's shell for wildcard
-                       ** expansion and other goodies.  Do this from
-                       ** the current working directory if the argument
-                       ** is not an absolute path name (does not begin
-                       ** with a /).
-                       **
-                       ** We feed all the file names to the shell at
-                       ** once, otherwise you can't provide a file name
-                       ** with a space in it.
-                       */
-                       writelscmd(buf, sizeof(buf), argp);
-                       if ((f = popen_in_dir(cwd, buf, "r"))) {
-                               while (fgets(shell, sizeof (shell), f)) {
-                                       *(strchr(shell, '\n')) = '\0';
-                                       snprintf(buf, sizeof buf,
-                                                       "anno -delete -comp "
-                                                       "'%s' -text '%s' '%s'",
-                                                       attach_hdr, shell,
-                                                       drft);
-                                       if (system(buf) != 0) {
-                                               advise(NULL, "Could not delete attachment header.");
+                               n = atoi(*arguments);
+                               snprintf(buf, sizeof buf, "anno -delete "
+                                               "-comp '%s' -number '%d' "
+                                               "'%s'",
+                                               attach_hdr, n, drft);
+                               if (system(buf) != 0) {
+                                       advise(NULL, "Could not delete attachment header.");
+                               }
+
+                               for (argp=arguments+1; *argp; argp++) {
+                                       if (atoi(*argp) > n) {
+                                               if (atoi(*argp) == 1) {
+                                                       *argp = "";
+                                               } else {
+                                                       sprintf(*argp, "%d", atoi(*argp) - 1);
+                                               }
                                        }
                                }
                                        }
                                }
-                               pclose(f);
-                       } else {
-                               advise("popen", "could not get file from shell");
                        }
                        }
-
                        break;
 
                default:
                        break;
 
                default: