]> git.saurik.com Git - apple/libc.git/blobdiff - gen.subproj/NSSystemDirectories.c
Libc-262.tar.gz
[apple/libc.git] / gen.subproj / NSSystemDirectories.c
diff --git a/gen.subproj/NSSystemDirectories.c b/gen.subproj/NSSystemDirectories.c
deleted file mode 100644 (file)
index 1e37408..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
- * 
- * Portions Copyright (c) 1999 Apple Computer, Inc.  All Rights
- * Reserved.  This file contains Original Code and/or Modifications of
- * Original Code as defined in and that are subject to the Apple Public
- * Source License Version 1.1 (the "License").  You may not use this file
- * except in compliance with the License.  Please obtain a copy of the
- * License at http://www.apple.com/publicsource and read it before using
- * this file.
- * 
- * The Original Code and all software distributed under the License are
- * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
- * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
- * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE OR NON- INFRINGEMENT.  Please see the
- * License for the specific language governing rights and limitations
- * under the License.
- * 
- * @APPLE_LICENSE_HEADER_END@
- */
-#import <libc.h>
-#import <stdio.h>
-#import <stdlib.h>
-#import <NSSystemDirectories.h>
-
-// Names of directories; index into this with NSSearchPathDirectory - 1
-#define numDirs 8
-static const struct {
-    unsigned char invalidDomainMask;   // Domains in which this dir does not appear
-    unsigned char alternateDomainMask; // Domains in which this dir uses the alternate domain path
-    const char *dirPath;
-} dirInfo[numDirs] = {
-    {0,   0,   "Applications"},
-    {0,   0,   "Applications/GrabBag"},
-    {0,   0,   "Developer/Applications"},
-    {0,   0,   "Applications/Utilities"},
-    {0,   0x8, "Library"},                     // Uses alternate form in System domain
-    {0,   0,   "Developer"},
-    {0x9, 0,   "Users"},                       // Not valid in the System and User domains
-    {0,   0x8, "Library/Documentation"}                // Uses alternate form in System domain
-};
-
-// Ordered list of where to find applications in each domain (the numbers are NSSearchPathDirectory)
-#define numApplicationDirs 4
-static const char applicationDirs[numApplicationDirs] = {1, 4, 3, 2};
-
-// Ordered list of where to find resources in each domain (the numbers are NSSearchPathDirectory)
-#define numLibraryDirs 2
-static const char libraryDirs[numLibraryDirs] = {5, 6};
-
-// Names of domains; index into this log2(domainMask). If the search path ordering is ever changed, then we need an indirection (as the domainMask values cannot be changed).
-#define numDomains 4
-static const struct {
-    char needsRootPrepended;
-    const char *domainPath;
-    const char *alternateDomainPath;
-} domainInfo[numDomains] = {
-    {0, "~",        "~"},
-    {1, "",         ""},
-    {1, "/Network", "/Network"},
-    {1, "",         "/System"}
-};
-
-#define invalidDomains 0x00    // some domains may be invalid on non-Mach systems
-
-NSSearchPathEnumerationState NSStartSearchPathEnumeration(NSSearchPathDirectory dir, NSSearchPathDomainMask domainMask) {
-    // The state is AABBCCCC, where
-    // AA is the dir(s) requested
-    // BB is the current state of dirs (if AA < 100, then this is always 0; otherwise it goes up to number of dirs)
-    // CCCC is the domains requested
-    // the state always contains the next item; if CCCC is 0, then we're done
-    domainMask = domainMask & ((1 << numDomains) - 1) & ~invalidDomains;       // Just leave useful bits in there
-    if (dir != NSAllLibrariesDirectory && dir != NSLibraryDirectory && dir != NSUserDirectory && dir != NSDocumentationDirectory && (domainMask & NSLocalDomainMask) && (domainMask & NSSystemDomainMask)) domainMask = domainMask & ~NSSystemDomainMask;      // Hack to avoid duplication
-    return (((unsigned int)dir) << 24) + ((unsigned int)domainMask);
-}
-
-NSSearchPathEnumerationState NSGetNextSearchPathEnumeration(NSSearchPathEnumerationState state, char *path) {
-    static const char *nextRoot = NULL;
-    unsigned dir = (state >> 24) & 0xff;
-    unsigned dirState = (state >> 16) & 0xff;
-    unsigned domainMask = state & 0xffff;
-    unsigned int curDomain;    // The current domain we're at...
-    unsigned int curDir = 0;   // The current dir...
-    
-    do {
-        if (domainMask == 0) return 0; // Looks like we're done
-        for (curDomain = 0; curDomain < numDomains; curDomain++) if ((domainMask & (1 << curDomain))) break;
-
-        // Determine directory
-        if (dir < NSAllApplicationsDirectory) {        // One directory per domain, simple...
-            curDir = dir;
-        } else {                                       // Can return multiple directories for each domain
-            if (dir == NSAllApplicationsDirectory) {
-                curDir = applicationDirs[dirState];
-                if (++dirState == numApplicationDirs) dirState = 0;
-            } else if (dir == NSAllLibrariesDirectory) {
-                curDir = libraryDirs[dirState];
-                if (++dirState == numLibraryDirs) dirState = 0;
-            }
-        }
-        if (dirState == 0) domainMask &= ~(1 << curDomain);    // If necessary, jump to next domain
-    } while ((dirInfo[curDir - 1].invalidDomainMask & (1 << curDomain)));      // If invalid, try again...
-
-    // Get NEXT_ROOT, if necessary.
-    if (domainInfo[curDomain].needsRootPrepended && nextRoot == 0) {
-       nextRoot = getenv("NEXT_ROOT");
-        if (nextRoot == NULL) {
-            nextRoot = "";
-        } else {
-            strcpy(malloc(strlen(nextRoot) + 1), nextRoot);    // Be safe...
-        }
-    }
-
-    snprintf(path, PATH_MAX, "%s%s/%s", domainInfo[curDomain].needsRootPrepended ? nextRoot : "", (dirInfo[curDir - 1].alternateDomainMask & (1 << curDomain)) ? domainInfo[curDomain].alternateDomainPath : domainInfo[curDomain].domainPath, dirInfo[curDir - 1].dirPath);
-        
-    return (dir << 24) + (dirState << 16) + domainMask;
-}
-
-