X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/4548981fb45fbc917cc2c26b7c96b31cfa14bc9b..dd6bfc058da415e30995eeea116c65861671e2aa:/sbr/refile.c diff --git a/sbr/refile.c b/sbr/refile.c index a2a958dd..15f016d0 100644 --- a/sbr/refile.c +++ b/sbr/refile.c @@ -1,6 +1,4 @@ - -/* - * refile.c -- call the "fileproc" to refile the +/* refile.c -- call the "fileproc" to refile the * -- msg or draft into another folder * * This code is Copyright (c) 2002, by the authors of nmh. See the @@ -8,44 +6,50 @@ * complete copyright information. */ -#include +#include "h/mh.h" +#include "context_save.h" +#include "arglist.h" +#include "error.h" +#include "h/utils.h" int refile (char **arg, char *file) { pid_t pid; - register int vecp; - char *vec[MAXARGS]; + int vecp; + char **vec; + char *program; + + vec = argsplit(fileproc, &program, &vecp); - vecp = 0; - vec[vecp++] = r1bindex (fileproc, '/'); - vec[vecp++] = "-nolink"; /* override bad .mh_profile defaults */ - vec[vecp++] = "-nopreserve"; - vec[vecp++] = "-file"; - vec[vecp++] = file; + vec[vecp++] = mh_xstrdup("-nolink"); /* override bad .mh_profile defaults */ + vec[vecp++] = mh_xstrdup("-nopreserve"); + vec[vecp++] = mh_xstrdup("-file"); + vec[vecp++] = getcpy(file); if (arg) { while (*arg) - vec[vecp++] = *arg++; + vec[vecp++] = mh_xstrdup(*arg++); } vec[vecp] = NULL; context_save(); /* save the context file */ fflush(stdout); - switch (pid = m_vfork()) { + switch (pid = fork()) { case -1: advise ("fork", "unable to"); return -1; case 0: - execvp (fileproc, vec); + execvp (program, vec); fprintf (stderr, "unable to exec "); perror (fileproc); - _exit (-1); + _exit(1); default: - return (pidwait (pid, -1)); + arglist_free(program, vec); + return pidwait(pid, -1); } }