timespec_get: New module.
[gnulib.git] / lib / spawn_int.h
blob0ca7dcbd84059ef1450d03b0740d289706e89caf
1 /* Copyright (C) 2000, 2008-2021 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
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.
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.
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/>. */
17 #include <sys/types.h>
19 /* Data structure to contain the action information. */
20 struct __spawn_action
22 enum
24 spawn_do_close,
25 spawn_do_dup2,
26 spawn_do_open,
27 spawn_do_chdir,
28 spawn_do_fchdir
29 } tag;
31 union
33 struct
35 int fd;
36 } close_action;
37 struct
39 int fd;
40 int newfd;
41 } dup2_action;
42 struct
44 int fd;
45 char *path;
46 int oflag;
47 mode_t mode;
48 } open_action;
49 struct
51 char *path;
52 } chdir_action;
53 struct
55 int fd;
56 } fchdir_action;
57 } action;
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);
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, const char *const argv[],
72 const char *const envp[], int use_path);