]>
git.saurik.com Git - apple/system_cmds.git/blob - sysctl.tproj/pathconf.c
dc7aecc306e5329dc7f2bbf3a5b4f9b8a5f18c4b
2 * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
4 * @APPLE_LICENSE_HEADER_START@
6 * "Portions Copyright (c) 1999 Apple Computer, Inc. All Rights
7 * Reserved. This file contains Original Code and/or Modifications of
8 * Original Code as defined in and that are subject to the Apple Public
9 * Source License Version 1.0 (the 'License'). You may not use this file
10 * except in compliance with the License. Please obtain a copy of the
11 * License at http://www.apple.com/publicsource and read it before using
14 * The Original Code and all software distributed under the License are
15 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
16 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
17 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
19 * License for the specific language governing rights and limitations
22 * @APPLE_LICENSE_HEADER_END@
26 * The Regents of the University of California. All rights reserved.
28 * Redistribution and use in source and binary forms, with or without
29 * modification, are permitted provided that the following conditions
31 * 1. Redistributions of source code must retain the above copyright
32 * notice, this list of conditions and the following disclaimer.
33 * 2. Redistributions in binary form must reproduce the above copyright
34 * notice, this list of conditions and the following disclaimer in the
35 * documentation and/or other materials provided with the distribution.
36 * 3. All advertising materials mentioning features or use of this software
37 * must display the following acknowledgement:
38 * This product includes software developed by the University of
39 * California, Berkeley and its contributors.
40 * 4. Neither the name of the University nor the names of its contributors
41 * may be used to endorse or promote products derived from this software
42 * without specific prior written permission.
44 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
45 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
46 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
47 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
48 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
49 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
50 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
51 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
52 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
53 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
58 static char copyright
[] =
59 "@(#) Copyright (c) 1993\n\
60 The Regents of the University of California. All rights reserved.\n";
64 static char sccsid
[] = "@(#)pathconf.c 8.1 (Berkeley) 6/6/93";
67 #include <sys/param.h>
68 #include <sys/sysctl.h>
69 #include <sys/unistd.h>
78 { "link_max", CTLTYPE_INT }, \
79 { "max_canon", CTLTYPE_INT }, \
80 { "max_input", CTLTYPE_INT }, \
81 { "name_max", CTLTYPE_INT }, \
82 { "path_max", CTLTYPE_INT }, \
83 { "pipe_buf", CTLTYPE_INT }, \
84 { "chown_restricted", CTLTYPE_INT }, \
85 { "no_trunc", CTLTYPE_INT }, \
86 { "vdisable", CTLTYPE_INT }, \
90 struct ctlname pcnames
[] = PC_NAMES
;
97 struct list pclist
= { pcnames
, PC_MAXID
};
99 int Aflag
, aflag
, nflag
, wflag
, stdinflag
;
111 while ((ch
= getopt(argc
, argv
, "Aan")) != EOF
) {
136 if (strcmp(path
, "-") == 0)
139 if (Aflag
|| aflag
) {
140 listall(path
, &pclist
);
146 parse(path
, *argv
, 1);
151 * List all variables known to the system.
161 for (lvl2
= 0; lvl2
< lp
->size
; lvl2
++) {
162 if (lp
->list
[lvl2
].ctl_name
== 0)
164 parse(path
, lp
->list
[lvl2
].ctl_name
, Aflag
);
169 * Parse a name into an index.
170 * Lookup and print out the attribute if it exists.
172 parse(pathname
, string
, flags
)
178 char *bufp
, buf
[BUFSIZ
];
181 snprintf(buf
, BUFSIZ
, "%s", string
);
182 if ((indx
= findname(string
, "top", &bufp
, &pclist
)) == -1)
185 fprintf(stderr
, "name %s in %s is unknown\n", *bufp
, string
);
189 value
= fpathconf(0, indx
);
191 value
= pathconf(pathname
, indx
);
197 fprintf(stderr
, "%s: value is not available\n", string
);
200 fprintf(stderr
, "%s: specification is incomplete\n",
204 fprintf(stderr
, "%s: type is unknown to this program\n",
213 fprintf(stdout
, "%s = ", string
);
214 fprintf(stdout
, "%d\n", value
);
218 * Scan a list of names searching for a particular name.
220 findname(string
, level
, bufp
, namelist
)
224 struct list
*namelist
;
229 if (namelist
->list
== 0 || (name
= strsep(bufp
, ".")) == NULL
) {
230 fprintf(stderr
, "%s: incomplete specification\n", string
);
233 for (i
= 0; i
< namelist
->size
; i
++)
234 if (namelist
->list
[i
].ctl_name
!= NULL
&&
235 strcmp(name
, namelist
->list
[i
].ctl_name
) == 0)
237 if (i
== namelist
->size
) {
238 fprintf(stderr
, "%s level name %s in %s is invalid\n",
239 level
, name
, string
);
248 (void)fprintf(stderr
, "usage:\t%s\n\t%s\n\t%s\n",
249 "pathname [-n] variable ...",
250 "pathname [-n] -a", "pathname [-n] -A");