1 /* Copyright (C) 2000, 2008-2012 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 <http://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   } tag;
28 
29   union
30   {
31     struct
32     {
33       int fd;
34     } close_action;
35     struct
36     {
37       int fd;
38       int newfd;
39     } dup2_action;
40     struct
41     {
42       int fd;
43       const char *path;
44       int oflag;
45       mode_t mode;
46     } open_action;
47   } action;
48 };
49 
50 #if !_LIBC
51 # define __posix_spawn_file_actions_realloc gl_posix_spawn_file_actions_realloc
52 #endif
53 extern int __posix_spawn_file_actions_realloc (posix_spawn_file_actions_t *
54                                                file_actions);
55 
56 #if !_LIBC
57 # define __spawni gl_posix_spawn_internal
58 #endif
59 extern int __spawni (pid_t *pid, const char *path,
60                      const posix_spawn_file_actions_t *file_actions,
61                      const posix_spawnattr_t *attrp, char *const argv[],
62                      char *const envp[], int use_path);
63