diff options
author | NIIBE Yutaka <[email protected]> | 2024-05-28 01:30:44 +0000 |
---|---|---|
committer | NIIBE Yutaka <[email protected]> | 2024-05-28 01:42:21 +0000 |
commit | 8dc6e3281e17c5d2885dc71634ab1068b88fc738 (patch) | |
tree | a8f91d19de1128fec4e075abcab9a18c56126f94 /src/mkheader.c | |
parent | argparse: Fix a theoretical memory leak. (diff) | |
download | libgpg-error-8dc6e3281e17c5d2885dc71634ab1068b88fc738.tar.gz libgpg-error-8dc6e3281e17c5d2885dc71634ab1068b88fc738.zip |
Import spawn functions from GnuPG master.
* src/gpg-error.h.in (@define:gpgrt_process_t@): Remove.
(@define:struct_spawn_cb_arg@): New.
(enum gpgrt_process_requests): New.
(GPGRT_PROCESS_DETACHED, GPGRT_PROCESS_STDIN_PIPE)
(GPGRT_PROCESS_STDOUT_PIPE, GPGRT_PROCESS_STDERR_PIPE)
(GPGRT_PROCESS_STDINOUT_SOCKETPAIR, GPGRT_PROCESS_STDIN_KEEP)
(GPGRT_PROCESS_STDOUT_KEEP, GPGRT_PROCESS_STDERR_KEEP)
(GPGRT_PROCESS_STDFDS_SETTING, GPGRT_PROCESS_STREAM_NONBLOCK):
New.
* src/gpgrt-int.h (_gpgrt_process_spawn, _gpgrt_process_terminate)
(_gpgrt_process_get_fds, _gpgrt_process_get_streams)
(_gpgrt_process_ctl, _gpgrt_process_wait, _gpgrt_process_release)
(_gpgrt_process_wait_list, _gpgrt_spawn_helper): New.
* src/mkheader.c: Emit definition of struct_spawn_cb_arg.
* src/spawn-posix.c (_gpgrt_process_spawn, _gpgrt_process_terminate)
(_gpgrt_process_get_fds, _gpgrt_process_get_streams)
(_gpgrt_process_ctl, _gpgrt_process_wait, _gpgrt_process_release)
(_gpgrt_process_wait_list, _gpgrt_spawn_helper): New.
* src/spawn-w32.c: Ditto.
--
GnuPG-bug-id: 6249
Signed-off-by: NIIBE Yutaka <[email protected]>
Diffstat (limited to 'src/mkheader.c')
-rw-r--r-- | src/mkheader.c | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/src/mkheader.c b/src/mkheader.c index 2d7298c..cb4d574 100644 --- a/src/mkheader.c +++ b/src/mkheader.c @@ -573,23 +573,27 @@ write_special (const char *fname, int lnr, const char *tag) else fputs ("int", stdout); } - else if (!strcmp (tag, "define:gpgrt_process_t")) + else if (!strcmp (tag, "define:struct_spawn_cb_arg")) { if (have_w32_system || have_w64_system) { - fputs ("typedef void *gpgrt_process_t;\n", stdout); + fputs ("struct spawn_cb_arg;\n", stdout); + fputs ("#ifdef NEED_STRUCT_SPAWN_CB_ARG\n", stdout); + fputs ("struct spawn_cb_arg {\n", stdout); + fputs (" HANDLE hd[3];\n", stdout); + fputs (" HANDLE *inherit_hds;\n", stdout); + fputs (" BOOL allow_foreground_window;\n", stdout); + fputs (" void *arg;\n", stdout); + fputs ("};\n", stdout); + fputs ("#endif /* NEED_STRUCT_SPAWN_CB_ARG */\n", stdout); } else { - if (have_sys_types_h) - { - if (!sys_types_h_included) - { - fputs ("#include <sys/types.h>\n", stdout); - sys_types_h_included = 1; - } - } - fputs ("typedef pid_t gpgrt_process_t;\n", stdout); + fputs ("struct spawn_cb_arg {\n", stdout); + fputs (" int fds[3];\n", stdout); + fputs (" int *except_fds;\n", stdout); + fputs (" void *arg;\n", stdout); + fputs ("};\n", stdout); } } else if (!strcmp (tag, "include:err-sources")) |