aboutsummaryrefslogtreecommitdiffstats
path: root/src/mkheader.c
diff options
context:
space:
mode:
authorNIIBE Yutaka <[email protected]>2024-05-28 01:30:44 +0000
committerNIIBE Yutaka <[email protected]>2024-05-28 01:42:21 +0000
commit8dc6e3281e17c5d2885dc71634ab1068b88fc738 (patch)
treea8f91d19de1128fec4e075abcab9a18c56126f94 /src/mkheader.c
parentargparse: Fix a theoretical memory leak. (diff)
downloadlibgpg-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.c26
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"))