Merge ../mmh
authormarkus schnalke <meillo@marmaro.de>
Mon, 26 Jan 2015 17:44:50 +0000 (18:44 +0100)
committermarkus schnalke <meillo@marmaro.de>
Mon, 26 Jan 2015 17:44:50 +0000 (18:44 +0100)
Conflicts:
uip/rmm.c
uip/whatnow.c

1  2 
uip/new.c
uip/rmm.c
uip/whatnow.c

diff --combined uip/new.c
+++ b/uip/new.c
@@@ -314,7 -314,7 +314,7 @@@ doit(char *cur, char *folders, char *se
        char *sequences_s = NULL;
        int argc = 0;
        char *argv[MAXARGS];
-       char *cp;
+       char **seqp;
        char buf[BUFSIZ];
  
        if (cur == NULL || cur[0] == '\0') {
                        argv[argc++] = "scan";
                        snprintf(buf, sizeof buf, "+%s", node->n_name);
                        argv[argc++] = buf;
-                       for (cp=*sequences; *cp; cp++) {
-                               argv[argc++] = cp;
+                       for (seqp=sequences; *seqp; seqp++) {
+                               argv[argc++] = *seqp;
                        }
                        argv[argc] = (char *)NULL;
                        execprog(*argv, argv);
@@@ -457,7 -457,7 +457,7 @@@ main(int argc, char **argv
                        switch (smatch(++cp, switches)) {
                        case AMBIGSW:
                                ambigsw(cp, switches);
 -                              done(1);
 +                              exit(1);
                        case UNKWNSW:
                                adios(NULL, "-%s unknown", cp);
  
                                                "%s [switches] [sequences]",
                                                invo_name);
                                print_help(help, switches, 1);
 -                              done(1);
 +                              exit(0);
                        case VERSIONSW:
                                print_version(invo_name);
 -                              done(1);
 +                              exit(0);
  
                        case FOLDERSSW:
                                if (!(folders = *argp++) || *folders == '-')
  
        folder = doit(context_find(curfolder), folders, sequences);
        if (folder == NULL) {
 -              done(0);
 +              exit(0);
                return 1;
        }
  
  
        context_save();
  
 -      done(0);
 -      return 1;
 +      return 0;
  }
diff --combined uip/rmm.c
+++ b/uip/rmm.c
@@@ -31,7 -31,6 +31,6 @@@ main(int argc, char **argv
        char **arguments;
        struct msgs_array msgs = { 0, 0, NULL };
        struct msgs *mp;
-       pid_t pid;
  
        setlocale(LC_ALL, "");
        invo_name = mhbasename(argv[0]);
                        switch (smatch(++cp, switches)) {
                        case AMBIGSW:
                                ambigsw(cp, switches);
 -                              done(1);
 +                              exit(1);
                        case UNKWNSW:
                                adios(NULL, "-%s unknown\n", cp);
  
                        case HELPSW:
                                snprintf(buf, sizeof(buf), "%s [+folder] [msgs] [switches]", invo_name);
                                print_help(buf, switches, 1);
 -                              done(1);
 +                              exit(0);
                        case VERSIONSW:
                                print_version(invo_name);
 -                              done(1);
 +                              exit(0);
  
                        case UNLINKSW:
                                unlink_msgs++;
        */
        for (msgnum = 0; msgnum < msgs.size; msgnum++) {
                if (!m_convert(mp, msgs.msgs[msgnum])) {
 -                      done(1);
 +                      /* sysexits EX_USAGE */
 +                      exit(1);
                }
        }
  
                seq_setprev(mp);
                seq_save(mp);
                folder_free(mp);
 -              done(0);
 -              return 1;
 +              return 0;
        }
  
        /* remove by refiling. */
                vec[vecp++] = msgs.msgs[msgnum];
        }
        vec[vecp] = NULL;
 -      done(execprog(*vec, vec));
  
-       fflush(stdout);
-       switch (pid = fork()) {
-       case -1:
-               adios("fork", "unable to");
-       case 0:
-               execvp(*vec, vec);
-               fprintf(stderr, "unable to exec ");
-               perror(*vec);
-               _exit(-1);
-       default:
-               pidwait(pid, -1);
-       }
-       return 0;
 -      return 1;  /* just in case ... */
++      return execprog(*vec, vec);
  }
diff --combined uip/whatnow.c
@@@ -110,7 -110,7 +110,7 @@@ main(int argc, char **argv
                        switch (smatch(++cp, switches)) {
                        case AMBIGSW:
                                ambigsw(cp, switches);
 -                              done(1);
 +                              exit(1);
                        case UNKWNSW:
                                adios(NULL, "-%s unknown", cp);
  
                                                "%s [switches] [file]",
                                                invo_name);
                                print_help(buf, switches, 1);
 -                              done(1);
 +                              exit(0);
                        case VERSIONSW:
                                print_version(invo_name);
 -                              done(1);
 +                              exit(0);
  
                        case EDITRSW:
                                if (!(ed = *argp++) || *ed == '-')
                                unlink(drft);
                        }
                        advise(NULL, "Try again.");
 -                      done(1);
 +                      /* sysexits.h EX_SOFTWARE */
 +                      exit(1);
                }
        }
  
        snprintf(prompt, sizeof(prompt), myprompt, invo_name);
        for (;;) {
                if (!(argp = getans(prompt, aleqs))) {
 -                      done(1);
 +                      exit(1);
                }
                switch (smatch(*argp, aleqs)) {
                case DISPSW:
                        if (stat(drft, &st) != NOTOK) {
                                advise(NULL, "draft left on %s", drft);
                        }
 -                      done(1);
 +                      exit(1);
  
                case DELETESW:
                        /* Delete draft and exit */
                        removefile(drft);
 -                      done(1);
 +                      exit(1);
  
                case SENDSW:
                        /* Send draft */
                case REFILEOPT:
                        /* Refile the draft */
                        if (refile(++argp, drft) == 0) {
 -                              done(0);
 +                              exit(0);
                        }
                        break;
  
@@@ -518,9 -517,9 +518,9 @@@ editfile(char **ed, char **arg, char *f
        case OK:
                vecp = 0;
                vec[vecp++] = mhbasename(*ed);
-               if (arg)
-                       while (*arg)
-                               vec[vecp++] = *arg++;
+               while (arg && *arg) {
+                       vec[vecp++] = *arg++;
+               }
                vec[vecp++] = file;
                vec[vecp] = NULL;
  
  static int
  sendfile(char **arg, char *file)
  {
-       pid_t child_id;
-       int vecp;
+       int vecp = 0;
        char *vec[MAXARGS];
  
-       context_save();  /* save the context file */
+       context_save();
        fflush(stdout);
  
-       switch (child_id = fork()) {
-       case NOTOK:
-               advise(NULL, "unable to fork, so sending directly...");
-               /* fall */
-       case OK:
-               vecp = 0;
-               vec[vecp++] = "send";
-               if (arg)
-                       while (*arg)
-                               vec[vecp++] = *arg++;
-               vec[vecp++] = file;
-               vec[vecp] = NULL;
-               execvp("send", vec);
-               fprintf(stderr, "%s: unable to exec ", invo_name);
-               perror("send");
-               _exit(-1);
-       default:
-               if (pidwait(child_id, OK) == 0)
-                       exit(0);
-               return 1;
+       vec[vecp++] = "send";
+       while (arg && *arg) {
+               vec[vecp++] = *arg++;
        }
+       vec[vecp++] = file;
+       vec[vecp] = NULL;
+       execvp(*vec, vec);
+       fprintf(stderr, "%s: unable to exec ", invo_name);
+       perror("send");
+       _exit(-1);
  }
  
  
  static int
  refile(char **arg, char *file)
  {
-       pid_t pid;
-       register int vecp;
+       int vecp = 0;
        char *vec[MAXARGS];
  
-       vecp = 0;
        vec[vecp++] = "refile";
        vec[vecp++] = "-nolink";  /* override bad .mh_profile defaults */
        vec[vecp++] = "-file";
        }
        vec[vecp] = NULL;
  
-       context_save();  /* save the context file */
+       context_save();
        fflush(stdout);
  
-       switch (pid = fork()) {
-       case -1:
-               advise("fork", "unable to");
-               return -1;
-       case 0:
-               execvp(*vec, vec);
-               fprintf(stderr, "%s: unable to exec ", invo_name);
-               perror(*vec);
-               _exit(-1);
-       default:
-               return (pidwait(pid, -1));
-       }
+       return execprog(*vec, vec);
  }