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.  */
20struct __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
53extern 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
59extern 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