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 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
index 798d0e2..273921c 100644 (file)
@@ -31,9 +31,8 @@
 **        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>
@@ -81,7 +80,7 @@ static struct swit aleqs[] = {
 #define ATTACHCMDSW  10
        { "attach", 0 },
 #define DETACHCMDSW  11
-       { "detach [-n]", 0 },
+       { "detach", 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 */
-       int n;  /* set on -n to detach command */
 
        setlocale(LC_ALL, "");
        invo_name = mhbasename(argv[0]);
@@ -366,86 +364,39 @@ main(int argc, char **argv)
                        /*
                        ** 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.
                        */
-                       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: