diff options
Diffstat (limited to 'patches')
-rw-r--r-- | patches/0008-Use-gnulib-execute-module.patch | 81 |
1 files changed, 0 insertions, 81 deletions
diff --git a/patches/0008-Use-gnulib-execute-module.patch b/patches/0008-Use-gnulib-execute-module.patch deleted file mode 100644 index 847d20a..0000000 --- a/patches/0008-Use-gnulib-execute-module.patch +++ /dev/null @@ -1,81 +0,0 @@ -From ff1d3a67da1e7f7af6a760ba5f0cee70763666da Mon Sep 17 00:00:00 2001 -From: Andreas Gruenbacher <agruen@gnu.org> -Date: Fri, 6 Apr 2018 20:24:07 +0200 -Subject: [PATCH 08/17] Use gnulib execute module - -* bootstrap.conf (gnulib_modules): Add execute. -* src/pch.c (do_ed_script): Switch from fork + execlp to execute. ---- - bootstrap.conf | 1 + - m4/.gitignore | 13 +++++++++++++ - src/pch.c | 40 +++++++++++++++++++++------------------- - 3 files changed, 35 insertions(+), 19 deletions(-) - -diff --git a/src/pch.c b/src/pch.c -index 16e001a..1f14624 100644 ---- a/src/pch.c -+++ b/src/pch.c -@@ -33,7 +33,8 @@ - # include <io.h> - #endif - #include <safe.h> --#include <sys/wait.h> -+#include <alloca.h> -+#include "execute.h" - - #define INITHUNKMAX 125 /* initial dynamic allocation size */ - -@@ -2453,6 +2454,9 @@ do_ed_script (char const *inname, char const *outname, - - if (! dry_run && ! skip_rest_of_patch) { - int exclusive = *outname_needs_removal ? 0 : O_EXCL; -+ char const **ed_argv; -+ int stdin_dup, status; -+ - *outname_needs_removal = true; - if (inerrno != ENOENT) - { -@@ -2461,24 +2465,22 @@ do_ed_script (char const *inname, char const *outname, - } - fflush (stdout); - -- pid = fork(); -- if (pid == -1) -- pfatal ("Can't fork"); -- else if (pid == 0) -- { -- dup2 (tmpfd, 0); -- assert (outname[0] != '!' && outname[0] != '-'); -- execlp (editor_program, editor_program, "-", outname, (char *) NULL); -- _exit (2); -- } -- else -- { -- int wstatus; -- if (waitpid (pid, &wstatus, 0) == -1 -- || ! WIFEXITED (wstatus) -- || WEXITSTATUS (wstatus) != 0) -- fatal ("%s FAILED", editor_program); -- } -+ if ((stdin_dup = dup (0)) == -1 -+ || dup2 (tmpfd, 0) == -1) -+ pfatal ("Failed to duplicate standard input"); -+ assert (outname[0] != '!' && outname[0] != '-'); -+ ed_argv = alloca (4 * sizeof * ed_argv); -+ ed_argv[0] = editor_program; -+ ed_argv[1] = "-"; -+ ed_argv[2] = outname; -+ ed_argv[3] = (char *) NULL; -+ status = execute (editor_program, editor_program, (char **)ed_argv, -+ false, false, false, false, true, false, NULL); -+ if (status) -+ fatal ("%s FAILED", editor_program); -+ if (dup2 (stdin_dup, 0) == -1 -+ || close (stdin_dup) == -1) -+ pfatal ("Failed to duplicate standard input"); - } - - fclose (tmpfp); --- -2.11.0 - |