"Fossies" - the Fresh Open Source Software Archive 
Member "schily-2021-09-18/sunpro/Make/lib/vroot/src/execve.cc" (15 Aug 2021, 1904 Bytes) of package /linux/privat/schily-2021-09-18.tar.bz2:
1 /*
2 * CDDL HEADER START
3 *
4 * This file and its contents are supplied under the terms of the
5 * Common Development and Distribution License ("CDDL"), version 1.0.
6 * You may use this file only in accordance with the terms of version
7 * 1.0 of the CDDL.
8 *
9 * A full copy of the text of the CDDL should have accompanied this
10 * source. A copy of the CDDL is also available via the Internet at
11 * http://www.opensource.org/licenses/cddl1.txt
12 * See the License for the specific language governing permissions
13 * and limitations under the License.
14 *
15 * When distributing Covered Code, include this CDDL HEADER in each
16 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
17 * If applicable, add the following below this CDDL HEADER, with the
18 * fields enclosed by brackets "[]" replaced with your own identifying
19 * information: Portions Copyright [yyyy] [name of copyright owner]
20 *
21 * CDDL HEADER END
22 */
23 /*
24 * Copyright 1993 Sun Microsystems, Inc. All rights reserved.
25 * Use is subject to license terms.
26 */
27 /*
28 * @(#)execve.cc 1.4 06/12/12
29 */
30
31 #pragma ident "@(#)execve.cc 1.4 06/12/12"
32
33 /*
34 * Copyright 2017 J. Schilling
35 *
36 * @(#)execve.cc 1.3 21/08/16 2017 J. Schilling
37 */
38 #include <schily/mconfig.h>
39 #ifndef lint
40 static UConst char sccsid[] =
41 "@(#)execve.cc 1.3 21/08/16 2017 J. Schilling";
42 #endif
43
44 #include <vroot/vroot.h>
45 #include <vroot/args.h>
46
47 extern int execve (const char *path, char *const argv[], char *const envp[]);
48
49
50 static int execve_thunk(char *path)
51 {
52 execve(path, vroot_args.execve.argv, vroot_args.execve.environ);
53 switch (errno) {
54 case ETXTBSY:
55 case ENOEXEC: return 1;
56 default: return 0;
57 }
58 }
59
60 int execve_vroot(char *path, char **argv, char **environ, pathpt vroot_path, pathpt vroot_vroot)
61 {
62 vroot_args.execve.argv= argv;
63 vroot_args.execve.environ= environ;
64 translate_with_thunk(path, execve_thunk, vroot_path, vroot_vroot, rw_read);
65 return(-1);
66 }