]>
git.saurik.com Git - apple/security.git/blob - OSX/libsecurity_utilities/lib/coderepository.cpp
2 * Copyright (c) 2004,2011,2014 Apple Inc. All Rights Reserved.
4 * @APPLE_LICENSE_HEADER_START@
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. Please obtain a copy of the License at
10 * http://www.opensource.apple.com/apsl/ and read it before using this
13 * The Original Code and all software distributed under the License are
14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18 * Please see the License for the specific language governing rights and
19 * limitations under the License.
21 * @APPLE_LICENSE_HEADER_END@
26 // CodeRepository - directory search paths for bundles
28 #include <security_utilities/coderepository.h>
29 #include <security_utilities/debugging.h>
40 PathList::PathList(const string
&subPath
,
41 const char *suffix
/* = NULL */,
42 const char *envar
/* = NULL */,
43 bool forUser
/* = true */)
47 if (const char *envPath
= getenv(envar
)) {
49 if (envPath
[0] == '!') {
50 // envar="!path" -> single-item override (debugging only)
51 mDebugOverride
= envPath
+ 1;
52 secinfo("pathlist", "%p env(\"%s\") overrides to \"%s\"",
53 this, envar
, mDebugOverride
.c_str());
58 // treat envPath as a classic colon-separated list of directories
59 secinfo("pathlist", "%p configuring from env(\"%s\")", this, envar
);
60 while (const char *p
= strchr(envPath
, ':')) {
61 addDirectory(string(envPath
, p
- envPath
));
64 addDirectory(envPath
);
68 // no joy from environment variables
69 secinfo("pathlist", "%p configuring from default path set \"%s\"", this, subPath
.c_str());
71 secinfo("pathlist", "user search list not yet implemented");
72 addDirectory("/Library/" + subPath
);
73 addDirectory("/System/Library/" + subPath
);
83 void PathList::addDirectory(const string
&dirPath
)
85 //@@@ validate dirPath?
86 mPaths
.push_back(dirPath
);
90 } // end namespace Security