1 /* Copyright (C) 2000, 2008-2020 Free Software Foundation, Inc.
2    This file is part of the GNU C Library.
3 
4    This program is free software: you can redistribute it and/or modify
5    it under the terms of the GNU General Public License as published by
6    the Free Software Foundation; either version 3 of the License, or
7    (at your option) any later version.
8 
9    This program is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12    GNU General Public License for more details.
13 
14    You should have received a copy of the GNU General Public License
15    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
16 
17 #include <sys/types.h>
18 
19 /* Data structure to contain the action information.  */
20 struct __spawn_action
21 {
22   enum
23   {
24     spawn_do_close,
25     spawn_do_dup2,
26     spawn_do_open,
27     spawn_do_chdir,
28     spawn_do_fchdir
29   } tag;
30 
31   union
32   {
33     struct
34     {
35       int fd;
36     } close_action;
37     struct
38     {
39       int fd;
40       int newfd;
41     } dup2_action;
42     struct
43     {
44       int fd;
45       char *path;
46       int oflag;
47       mode_t mode;
48     } open_action;
49     struct
50     {
51       char *path;
52     } chdir_action;
53     struct
54     {
55       int fd;
56     } fchdir_action;
57   } action;
58 };
59 
60 #if !_LIBC
61 # define __posix_spawn_file_actions_realloc gl_posix_spawn_file_actions_realloc
62 #endif
63 extern int __posix_spawn_file_actions_realloc (posix_spawn_file_actions_t *
64                                                file_actions);
65 
66 #if !_LIBC
67 # define __spawni gl_posix_spawn_internal
68 #endif
69 extern int __spawni (pid_t *pid, const char *path,
70                      const posix_spawn_file_actions_t *file_actions,
71                      const posix_spawnattr_t *attrp, char *const argv[],
72                      char *const envp[], int use_path);
73