xref: /illumos-gate/usr/src/cmd/make/include/vroot/vroot.h (revision 10d63b7d)
1*10d63b7dSRichard Lowe /*
2*10d63b7dSRichard Lowe  * CDDL HEADER START
3*10d63b7dSRichard Lowe  *
4*10d63b7dSRichard Lowe  * The contents of this file are subject to the terms of the
5*10d63b7dSRichard Lowe  * Common Development and Distribution License (the "License").
6*10d63b7dSRichard Lowe  * You may not use this file except in compliance with the License.
7*10d63b7dSRichard Lowe  *
8*10d63b7dSRichard Lowe  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*10d63b7dSRichard Lowe  * or http://www.opensolaris.org/os/licensing.
10*10d63b7dSRichard Lowe  * See the License for the specific language governing permissions
11*10d63b7dSRichard Lowe  * and limitations under the License.
12*10d63b7dSRichard Lowe  *
13*10d63b7dSRichard Lowe  * When distributing Covered Code, include this CDDL HEADER in each
14*10d63b7dSRichard Lowe  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*10d63b7dSRichard Lowe  * If applicable, add the following below this CDDL HEADER, with the
16*10d63b7dSRichard Lowe  * fields enclosed by brackets "[]" replaced with your own identifying
17*10d63b7dSRichard Lowe  * information: Portions Copyright [yyyy] [name of copyright owner]
18*10d63b7dSRichard Lowe  *
19*10d63b7dSRichard Lowe  * CDDL HEADER END
20*10d63b7dSRichard Lowe  */
21*10d63b7dSRichard Lowe /*
22*10d63b7dSRichard Lowe  * Copyright 2003 Sun Microsystems, Inc. All rights reserved.
23*10d63b7dSRichard Lowe  * Use is subject to license terms.
24*10d63b7dSRichard Lowe  */
25*10d63b7dSRichard Lowe 
26*10d63b7dSRichard Lowe 
27*10d63b7dSRichard Lowe #ifndef _VROOT_H_
28*10d63b7dSRichard Lowe #define _VROOT_H_
29*10d63b7dSRichard Lowe 
30*10d63b7dSRichard Lowe #include <stdio.h>
31*10d63b7dSRichard Lowe #include <nl_types.h>
32*10d63b7dSRichard Lowe 
33*10d63b7dSRichard Lowe #define VROOT_DEFAULT ((pathpt)-1)
34*10d63b7dSRichard Lowe 
35*10d63b7dSRichard Lowe typedef struct {
36*10d63b7dSRichard Lowe 	char		*path;
37*10d63b7dSRichard Lowe 	short		length;
38*10d63b7dSRichard Lowe } pathcellt, *pathcellpt, patht;
39*10d63b7dSRichard Lowe typedef patht		*pathpt;
40*10d63b7dSRichard Lowe 
41*10d63b7dSRichard Lowe extern	void		add_dir_to_path(const char *path, register pathpt *pointer, register int position);
42*10d63b7dSRichard Lowe extern	void		flush_path_cache(void);
43*10d63b7dSRichard Lowe extern	void		flush_vroot_cache(void);
44*10d63b7dSRichard Lowe extern	const char	*get_path_name(void);
45*10d63b7dSRichard Lowe extern	char		*get_vroot_path(register char **vroot, register char **path, register char **filename);
46*10d63b7dSRichard Lowe extern	const char	*get_vroot_name(void);
47*10d63b7dSRichard Lowe extern	int		open_vroot(char *path, int flags, int mode, pathpt vroot_path, pathpt vroot_vroot);
48*10d63b7dSRichard Lowe extern	pathpt		parse_path_string(register char *string, register int remove_slash);
49*10d63b7dSRichard Lowe extern	void		scan_path_first(void);
50*10d63b7dSRichard Lowe extern	void		scan_vroot_first(void);
51*10d63b7dSRichard Lowe extern	void		set_path_style(int style);
52*10d63b7dSRichard Lowe 
53*10d63b7dSRichard Lowe extern	int		access_vroot(char *path, int mode, pathpt vroot_path, pathpt vroot_vroot);
54*10d63b7dSRichard Lowe 
55*10d63b7dSRichard Lowe extern	int		execve_vroot(char *path, char **argv, char **environ, pathpt vroot_path, pathpt vroot_vroot);
56*10d63b7dSRichard Lowe 
57*10d63b7dSRichard Lowe extern	int		lstat_vroot(char *path, struct stat *buffer, pathpt vroot_path, pathpt vroot_vroot);
58*10d63b7dSRichard Lowe extern	int		stat_vroot(char *path, struct stat *buffer, pathpt vroot_path, pathpt vroot_vroot);
59*10d63b7dSRichard Lowe extern	int		readlink_vroot(char *path, char *buffer, int buffer_size, pathpt vroot_path, pathpt vroot_vroot);
60*10d63b7dSRichard Lowe 
61*10d63b7dSRichard Lowe #endif
62