|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 2000 Apple Computer, Inc. All rights reserved. ! 3: * ! 4: * @APPLE_LICENSE_HEADER_START@ ! 5: * ! 6: * The contents of this file constitute Original Code as defined in and ! 7: * are subject to the Apple Public Source License Version 1.1 (the ! 8: * "License"). You may not use this file except in compliance with the ! 9: * License. Please obtain a copy of the License at ! 10: * http://www.apple.com/publicsource and read it before using this file. ! 11: * ! 12: * This Original Code and all software distributed under the License are ! 13: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER ! 14: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, ! 15: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, ! 16: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the ! 17: * License for the specific language governing rights and limitations ! 18: * under the License. ! 19: * ! 20: * @APPLE_LICENSE_HEADER_END@ ! 21: */ ! 22: /* ! 23: * attr.h - attribute data structures and interfaces ! 24: * ! 25: * Copyright (c) 1998, Apple Computer, Inc. All Rights Reserved. ! 26: * ! 27: * History: ! 28: * 2/18/98 Pat Dirks, Apple Computer New Today ! 29: * ! 30: */ ! 31: ! 32: #ifndef _SYS_ATTR_H_ ! 33: #define _SYS_ATTR_H_ ! 34: ! 35: #ifndef _SYS_TYPES_H_ ! 36: #include <sys/types.h> ! 37: #endif ! 38: #ifndef _SYS_UCRED_H ! 39: #include <sys/ucred.h> ! 40: #endif ! 41: #ifndef _SYS_MOUNT_H_ ! 42: #include <sys/mount.h> ! 43: #endif ! 44: ! 45: #define FSOPT_NOFOLLOW 0x00000001 ! 46: ! 47: typedef u_int32_t text_encoding_t; ! 48: ! 49: typedef u_int32_t fsobj_type_t; ! 50: ! 51: typedef u_int32_t fsobj_tag_t; ! 52: ! 53: typedef u_int32_t fsfile_type_t; ! 54: ! 55: typedef u_int32_t fsvolid_t; ! 56: ! 57: typedef struct fsobj_id { ! 58: u_int32_t fid_objno; ! 59: u_int32_t fid_generation; ! 60: } fsobj_id_t; ! 61: ! 62: typedef u_int32_t attrgroup_t; ! 63: ! 64: struct attrlist { ! 65: u_short bitmapcount; /* number of attr. bit sets in list (should be 5) */ ! 66: u_int16_t reserved; /* (to maintain 4-byte alignment) */ ! 67: attrgroup_t commonattr; /* common attribute group */ ! 68: attrgroup_t volattr; /* Volume attribute group */ ! 69: attrgroup_t dirattr; /* directory attribute group */ ! 70: attrgroup_t fileattr; /* file attribute group */ ! 71: attrgroup_t forkattr; /* fork attribute group */ ! 72: }; ! 73: ! 74: typedef struct attrreference { ! 75: long attr_dataoffset; ! 76: size_t attr_length; ! 77: } attrreference_t; ! 78: ! 79: /* XXX PPD This is derived from HFSVolumePriv.h and should perhaps be referenced from there? */ ! 80: ! 81: struct diskextent { ! 82: u_int32_t startblock; /* first block allocated */ ! 83: u_int32_t blockcount; /* number of blocks allocated */ ! 84: }; ! 85: ! 86: typedef struct diskextent extentrecord[8]; ! 87: ! 88: #define ATTR_BIT_MAP_COUNT 5 ! 89: ! 90: #define ATTR_CMN_NAME 0x00000001 ! 91: #define ATTR_CMN_DEVID 0x00000002 ! 92: #define ATTR_CMN_FSID 0x00000004 ! 93: #define ATTR_CMN_OBJTYPE 0x00000008 ! 94: #define ATTR_CMN_OBJTAG 0x00000010 ! 95: #define ATTR_CMN_OBJID 0x00000020 ! 96: #define ATTR_CMN_OBJPERMANENTID 0x00000040 ! 97: #define ATTR_CMN_PAROBJID 0x00000080 ! 98: #define ATTR_CMN_SCRIPT 0x00000100 ! 99: #define ATTR_CMN_CRTIME 0x00000200 ! 100: #define ATTR_CMN_MODTIME 0x00000400 ! 101: #define ATTR_CMN_CHGTIME 0x00000800 ! 102: #define ATTR_CMN_ACCTIME 0x00001000 ! 103: #define ATTR_CMN_BKUPTIME 0x00002000 ! 104: #define ATTR_CMN_FNDRINFO 0x00004000 ! 105: #define ATTR_CMN_OWNERID 0x00008000 ! 106: #define ATTR_CMN_GRPID 0x00010000 ! 107: #define ATTR_CMN_ACCESSMASK 0x00020000 ! 108: #define ATTR_CMN_FLAGS 0x00040000 ! 109: #define ATTR_CMN_NAMEDATTRCOUNT 0x00080000 ! 110: #define ATTR_CMN_NAMEDATTRLIST 0x00100000 ! 111: ! 112: #define ATTR_CMN_VALIDMASK 0x001FFFFF ! 113: #define ATTR_CMN_SETMASK 0x0007FF00 ! 114: #define ATTR_CMN_VOLSETMASK 0x00006700 ! 115: ! 116: #define ATTR_VOL_FSTYPE 0x00000001 ! 117: #define ATTR_VOL_SIGNATURE 0x00000002 ! 118: #define ATTR_VOL_SIZE 0x00000004 ! 119: #define ATTR_VOL_SPACEFREE 0x00000008 ! 120: #define ATTR_VOL_SPACEAVAIL 0x00000010 ! 121: #define ATTR_VOL_MINALLOCATION 0x00000020 ! 122: #define ATTR_VOL_ALLOCATIONCLUMP 0x00000040 ! 123: #define ATTR_VOL_IOBLOCKSIZE 0x00000080 ! 124: #define ATTR_VOL_OBJCOUNT 0x00000100 ! 125: #define ATTR_VOL_FILECOUNT 0x00000200 ! 126: #define ATTR_VOL_DIRCOUNT 0x00000400 ! 127: #define ATTR_VOL_MAXOBJCOUNT 0x00000800 ! 128: #define ATTR_VOL_MOUNTPOINT 0x00001000 ! 129: #define ATTR_VOL_NAME 0x00002000 ! 130: #define ATTR_VOL_MOUNTFLAGS 0x00004000 ! 131: #define ATTR_VOL_MOUNTEDDEVICE 0x00008000 ! 132: #define ATTR_VOL_ENCODINGSUSED 0x00010000 ! 133: #define ATTR_VOL_INFO 0x80000000 ! 134: ! 135: #define ATTR_VOL_VALIDMASK 0x8001FFFF ! 136: #define ATTR_VOL_SETMASK 0x80002000 ! 137: ! 138: ! 139: /* File/directory attributes: */ ! 140: #define ATTR_DIR_LINKCOUNT 0x00000001 ! 141: #define ATTR_DIR_ENTRYCOUNT 0x00000002 ! 142: ! 143: #define ATTR_DIR_VALIDMASK 0x00000003 ! 144: #define ATTR_DIR_SETMASK 0x00000000 ! 145: ! 146: #define ATTR_FILE_LINKCOUNT 0x00000001 ! 147: #define ATTR_FILE_TOTALSIZE 0x00000002 ! 148: #define ATTR_FILE_ALLOCSIZE 0x00000004 ! 149: #define ATTR_FILE_IOBLOCKSIZE 0x00000008 ! 150: #define ATTR_FILE_CLUMPSIZE 0x00000010 ! 151: #define ATTR_FILE_DEVTYPE 0x00000020 ! 152: #define ATTR_FILE_FILETYPE 0x00000040 ! 153: #define ATTR_FILE_FORKCOUNT 0x00000080 ! 154: #define ATTR_FILE_FORKLIST 0x00000100 ! 155: #define ATTR_FILE_DATALENGTH 0x00000200 ! 156: #define ATTR_FILE_DATAALLOCSIZE 0x00000400 ! 157: #define ATTR_FILE_DATAEXTENTS 0x00000800 ! 158: #define ATTR_FILE_RSRCLENGTH 0x00001000 ! 159: #define ATTR_FILE_RSRCALLOCSIZE 0x00002000 ! 160: #define ATTR_FILE_RSRCEXTENTS 0x00004000 ! 161: ! 162: #define ATTR_FILE_VALIDMASK 0x00007FFF ! 163: #define ATTR_FILE_SETMASK 0x00000020 ! 164: ! 165: #define ATTR_FORK_TOTALSIZE 0x00000001 ! 166: #define ATTR_FORK_ALLOCSIZE 0x00000002 ! 167: ! 168: #define ATTR_FORK_VALIDMASK 0x00000003 ! 169: #define ATTR_FORK_SETMASK 0x00000000 ! 170: ! 171: #define SRCHFS_START 0x00000001 ! 172: #define SRCHFS_MATCHPARTIALNAMES 0x00000002 ! 173: #define SRCHFS_MATCHDIRS 0x00000004 ! 174: #define SRCHFS_MATCHFILES 0x00000008 ! 175: #define SRCHFS_NEGATEPARAMS 0x80000000 ! 176: #define SRCHFS_VALIDOPTIONSMASK 0x8000000F ! 177: ! 178: struct fssearchblock { ! 179: struct attrlist *returnattrs; ! 180: void *returnbuffer; ! 181: size_t returnbuffersize; ! 182: u_long maxmatches; ! 183: struct timeval timelimit; ! 184: void *searchparams1; ! 185: size_t sizeofsearchparams1; ! 186: void *searchparams2; ! 187: size_t sizeofsearchparams2; ! 188: struct attrlist searchattrs; ! 189: }; ! 190: ! 191: ! 192: struct searchstate { ! 193: u_char reserved[556]; // sizeof( SearchState ) ! 194: }; ! 195: ! 196: ! 197: ! 198: #define FST_EOF (-1) /* end-of-file offset */ ! 199: ! 200: __BEGIN_DECLS ! 201: /* XXX PPD This should be moved to dirent.h to be with getdirentries(2) et al. */ ! 202: //int getdirentriesattr(int fd, const struct attrlist *attrspec, void *attrbuf, size_t bufsize, long //*cookie); ! 203: ! 204: __END_DECLS ! 205: ! 206: #endif /* !_SYS_ATTR_H_ */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.