]>
Commit | Line | Data |
---|---|---|
da5e151f BB |
1 | /* |
2 | * CDDL HEADER START | |
3 | * | |
4 | * The contents of this file are subject to the terms of the | |
5 | * Common Development and Distribution License (the "License"). | |
6 | * You may not use this file except in compliance with the License. | |
7 | * | |
8 | * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE | |
9 | * or http://www.opensolaris.org/os/licensing. | |
10 | * See the License for the specific language governing permissions | |
11 | * and limitations under the License. | |
12 | * | |
13 | * When distributing Covered Code, include this CDDL HEADER in each | |
14 | * file and include the License file at usr/src/OPENSOLARIS.LICENSE. | |
15 | * If applicable, add the following below this CDDL HEADER, with the | |
16 | * fields enclosed by brackets "[]" replaced with your own identifying | |
17 | * information: Portions Copyright [yyyy] [name of copyright owner] | |
18 | * | |
19 | * CDDL HEADER END | |
20 | */ | |
21 | ||
22 | /* | |
23 | * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved. | |
24 | */ | |
25 | ||
26 | /* Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T */ | |
27 | /* All Rights Reserved */ | |
28 | ||
29 | /* | |
30 | * Portions of this source code were derived from Berkeley 4.3 BSD | |
31 | * under license from the Regents of the University of California. | |
32 | */ | |
33 | ||
34 | #ifndef _SYS_PATHNAME_H | |
35 | #define _SYS_PATHNAME_H | |
36 | ||
37 | #ifdef __cplusplus | |
38 | extern "C" { | |
39 | #endif | |
40 | ||
41 | /* | |
42 | * Pathname structure. | |
43 | * System calls that operate on path names gather the path name | |
44 | * from the system call into this structure and reduce it by | |
45 | * peeling off translated components. If a symbolic link is | |
46 | * encountered the new path name to be translated is also | |
47 | * assembled in this structure. | |
48 | * | |
49 | * By convention pn_buf is not changed once it's been set to point | |
50 | * to the underlying storage; routines which manipulate the pathname | |
51 | * do so by changing pn_path and pn_pathlen. pn_pathlen is redundant | |
52 | * since the path name is null-terminated, but is provided to make | |
53 | * some computations faster. | |
54 | */ | |
55 | typedef struct pathname { | |
56 | char *pn_buf; /* underlying storage */ | |
57 | char *pn_path; /* remaining pathname */ | |
58 | size_t pn_pathlen; /* remaining length */ | |
59 | size_t pn_bufsize; /* total size of pn_buf */ | |
60 | } pathname_t; | |
61 | ||
62 | extern void pn_alloc(struct pathname *); | |
63 | extern void pn_alloc_sz(struct pathname *, size_t); | |
64 | extern void pn_free(struct pathname *); | |
65 | ||
66 | #ifdef __cplusplus | |
67 | } | |
68 | #endif | |
69 | ||
70 | #endif /* _SYS_PATHNAME_H */ |