1/* 2 * Copyright (c) 2000-2005 Apple Computer, Inc. All rights reserved. 3 * 4 * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 5 * 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. The rights granted to you under the License 10 * may not be used to create, or enable the creation or redistribution of, 11 * unlawful or unlicensed copies of an Apple operating system, or to 12 * circumvent, violate, or enable the circumvention or violation of, any 13 * terms of an Apple operating system software license agreement. 14 * 15 * Please obtain a copy of the License at 16 * http://www.opensource.apple.com/apsl/ and read it before using this file. 17 * 18 * The Original Code and all software distributed under the License are 19 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 20 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 21 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 22 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 23 * Please see the License for the specific language governing rights and 24 * limitations under the License. 25 * 26 * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 27 */ 28/* 29 File: CatalogPrivate.h 30 31 Contains: Private Catalog Manager interfaces. 32 33 Version: HFS Plus 1.0 34 35 Copyright: � 1997-1998 by Apple Computer, Inc., all rights reserved. 36 37 File Ownership: 38 39 DRI: Don Brady 40 41 Other Contact: xxx put other contact here xxx 42 43 Technology: xxx put technology here xxx 44 45 Writers: 46 47 (JL) Jim Luther 48 (msd) Mark Day 49 (DSH) Deric Horn 50 (djb) Don Brady 51 52 Change History (most recent first): 53 <MacOSX> 11/10/98 djb Remove obsolete PrepareInputName prototype; 54 <MacOSX> 4/6/98 djb Added lock data stuctures and ReleaseCatalogIterator prototype; 55 <MacOSX> 4/6/98 djb Removed CatalogDataCache since its no longer used. 56 <MacOSX> 4/2/98 djb InvalidateCatalogNodeCache does nothing under MacOS X. 57 <MacOSX> 3/31/98 djb Sync up with final HFSVolumes.h header file. 58 59 <CS10> 11/20/97 djb Radar #2002357. Fixing retry mechanism. 60 <CS9> 11/17/97 djb PrepareInputName routine now returns an error. 61 <CS8> 11/13/97 djb Radar #1683572. Move CatalogIterator to this file from 62 FileMgrInternal.i. Double size of short unicode name. 63 <CS7> 10/31/97 JL #2000184 - Changed prototypes for CreateFileThreadID and 64 ExchangeFiles. 65 <CS6> 10/17/97 msd In CatalogCacheGlobals, add room for a single UniStr255 so 66 catalog iterators can step over long Unicode names. 67 <CS5> 10/17/97 djb Add ConvertInputNameToUnicode for Catalog Create/Rename. 68 <CS4> 10/1/97 djb Change catalog iterator implementation. 69 <CS3> 7/16/97 DSH FilesInternal.i renamed FileMgrInternal.i to avoid name 70 collision 71 <CS2> 6/24/97 djb Add LocateCatalogNodeByMangledName routine. 72 <CS1> 6/24/97 djb first checked in 73*/ 74 75#ifndef __CATALOGPRIVATE__ 76#define __CATALOGPRIVATE__ 77 78#include <sys/appleapiopts.h> 79 80#ifdef KERNEL 81#ifdef __APPLE_API_PRIVATE 82 83#include "../../hfs_format.h" 84 85#include "FileMgrInternal.h" 86#include "BTreesInternal.h" 87 88// 89// Private Catalog Manager Routines (for use only by Catalog Manager, CatSearch and FileID Services) 90// 91 92 93extern OSErr LocateCatalogNode( const ExtendedVCB *volume, HFSCatalogNodeID folderID, const CatalogName *name, 94 u_int32_t hint, CatalogKey *key, CatalogRecord *data, u_int32_t *newHint); 95 96extern OSErr LocateCatalogNodeByKey ( const ExtendedVCB *volume, u_int32_t hint, CatalogKey *keyPtr, 97 CatalogRecord *dataPtr, u_int32_t *newHint ); 98 99extern OSErr LocateCatalogRecord( const ExtendedVCB *volume, HFSCatalogNodeID folderID, const CatalogName *name, 100 u_int32_t hint, CatalogKey *keyPtr, CatalogRecord *dataPtr, u_int32_t *newHint); 101 102extern OSErr LocateCatalogNodeWithRetry ( const ExtendedVCB *volume, HFSCatalogNodeID folderID, ConstStr31Param pascalName, 103 CatalogName *unicodeName, u_int32_t hint, CatalogKey *keyPtr, CatalogRecord *dataPtr, 104 u_int32_t *newHint ); 105extern OSErr FlushCatalog( ExtendedVCB *volume); 106 107 108extern void ConvertInputNameToUnicode(ConstStr31Param name, TextEncoding encodingHint, 109 TextEncoding *actualEncoding, CatalogName *catalogName); 110 111extern void BuildCatalogKey( HFSCatalogNodeID parentID, const CatalogName *name, Boolean isHFSPlus, 112 CatalogKey *key); 113 114extern OSErr BuildCatalogKeyUTF8(ExtendedVCB *volume, HFSCatalogNodeID parentID, const unsigned char *name, 115 u_int32_t length, CatalogKey *key, u_int32_t *textEncoding); 116 117extern void CopyCatalogName( const CatalogName *srcName, CatalogName *dstName, Boolean isHFSPLus); 118 119extern OSErr ResolveFileID( ExtendedVCB *vcb, HFSCatalogNodeID fileID, HFSCatalogNodeID *parentID, Str31 name ); 120 121#if 0 122extern OSErr CreateFileThreadID( FIDParam *filePB, WDCBRecPtr *wdcbPtr ); 123 124extern OSErr ExchangeFiles( FIDParam *filePB, WDCBRecPtr *wdcbPtr ); 125#endif 126 127extern void UpdateCatalogName( ConstStr31Param srcName, Str31 destName ); 128 129 130#endif /* __APPLE_API_PRIVATE */ 131#endif /* KERNEL */ 132#endif //__CATALOGPRIVATE__ 133