diff options
author | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2019-04-12 17:39:53 -0300 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2019-04-17 11:35:59 -0300 |
commit | 0e169691290a6d2187a4ff41495fc5678cbfdcdc (patch) | |
tree | 22a279438012ed4e10b4477fe8a9d0a03a2630e6 /support/capture_subprocess.h | |
parent | bae8cf0e930d82133e96c4e2547548ed53938de1 (diff) | |
download | glibc-0e169691290a6d2187a4ff41495fc5678cbfdcdc.zip glibc-0e169691290a6d2187a4ff41495fc5678cbfdcdc.tar.gz glibc-0e169691290a6d2187a4ff41495fc5678cbfdcdc.tar.bz2 |
support: Add support_capture_subprogram
Its API is similar to support_capture_subprocess, but rather creates a
new process based on the input path and arguments. Under the hoods it
uses posix_spawn to create the new process.
It also allows the use of other support_capture_* functions to check
for expected results and free the resources.
Checked on x86_64-linux-gnu.
* support/Makefile (libsupport-routines): Add support_subprocess,
xposix_spawn, xposix_spawn_file_actions_addclose, and
xposix_spawn_file_actions_adddup2.
(tst-support_capture_subprocess-ARGS): New rule.
* support/capture_subprocess.h (support_capture_subprogram): New
prototype.
* support/support_capture_subprocess.c (support_capture_subprocess):
Refactor to use support_subprocess and support_capture_poll.
(support_capture_subprogram): New function.
* support/tst-support_capture_subprocess.c (write_mode_to_str,
str_to_write_mode, test_common, parse_int, handle_restart,
do_subprocess, do_subprogram, do_multiple_tests): New functions.
(do_test): Add support_capture_subprogram tests.
* support/subprocess.h: New file.
* support/support_subprocess.c: Likewise.
* support/xposix_spawn.c: Likewise.
* support/xposix_spawn_file_actions_addclose.c: Likewise.
* support/xposix_spawn_file_actions_adddup2.c: Likewise.
* support/xspawn.h: Likewise.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Diffstat (limited to 'support/capture_subprocess.h')
-rw-r--r-- | support/capture_subprocess.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/support/capture_subprocess.h b/support/capture_subprocess.h index 2dce42e..2832cfc 100644 --- a/support/capture_subprocess.h +++ b/support/capture_subprocess.h @@ -35,6 +35,12 @@ struct support_capture_subprocess struct support_capture_subprocess support_capture_subprocess (void (*callback) (void *), void *closure); +/* Issue FILE with ARGV arguments by using posix_spawn and capture standard + output, standard error, and the exit status. The out.buffer and err.buffer + are handle as support_capture_subprocess. */ +struct support_capture_subprocess support_capture_subprogram + (const char *file, char *const argv[]); + /* Deallocate the subprocess data captured by support_capture_subprocess. */ void support_capture_subprocess_free (struct support_capture_subprocess *); |