Annotation of kernel/bsd/sys/attr.h, revision 1.1

1.1     ! root        1: /*
        !             2:  * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
        !             3:  *
        !             4:  * @APPLE_LICENSE_HEADER_START@
        !             5:  * 
        !             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.1 (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
        !            12:  * this file.
        !            13:  * 
        !            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
        !            20:  * under the License.
        !            21:  * 
        !            22:  * @APPLE_LICENSE_HEADER_END@
        !            23:  */
        !            24: 
        !            25: /*
        !            26:  * attr.h - attribute data structures and interfaces
        !            27:  *
        !            28:  * Copyright (c) 1998, Apple Computer, Inc.  All Rights Reserved.
        !            29:  *
        !            30:  * History:
        !            31:  *      2/18/98        Pat Dirks, Apple Computer               New Today
        !            32:  *
        !            33:  */
        !            34: 
        !            35: #ifndef _SYS_ATTR_H_
        !            36: #define _SYS_ATTR_H_
        !            37: 
        !            38: #ifndef _SYS_TYPES_H_
        !            39: #include <sys/types.h>
        !            40: #endif
        !            41: #ifndef _SYS_UCRED_H
        !            42: #include <sys/ucred.h>
        !            43: #endif
        !            44: #ifndef _SYS_MOUNT_H_
        !            45: #include <sys/mount.h>
        !            46: #endif
        !            47: 
        !            48: typedef u_int32_t text_encoding_t;
        !            49: 
        !            50: typedef u_int32_t fsobj_type_t;
        !            51: 
        !            52: typedef u_int32_t fsobj_tag_t;
        !            53: 
        !            54: typedef u_int32_t fsfile_type_t;
        !            55: 
        !            56: typedef u_int32_t fsvolid_t;
        !            57: 
        !            58: typedef struct fsobj_id {
        !            59:        u_int32_t               fid_objno;
        !            60:        u_int32_t               fid_generation;
        !            61: } fsobj_id_t;
        !            62: 
        !            63: typedef u_int32_t attrgroup_t;
        !            64: 
        !            65: struct attrlist {
        !            66:        u_short bitmapcount;                    /* number of attr. bit sets in list (should be 5) */
        !            67:        u_int16_t reserved;                             /* (to maintain 4-byte alignment) */
        !            68:        attrgroup_t commonattr;                 /* common attribute group */
        !            69:        attrgroup_t volattr;                    /* Volume attribute group */
        !            70:        attrgroup_t dirattr;                    /* directory attribute group */
        !            71:        attrgroup_t fileattr;                   /* file attribute group */
        !            72:        attrgroup_t forkattr;                   /* fork attribute group */
        !            73: };
        !            74: 
        !            75: typedef struct attrreference {
        !            76:        long attr_dataoffset;
        !            77:        size_t attr_length;
        !            78: } attrreference_t;
        !            79: 
        !            80: /* XXX PPD This is derived from HFSVolumePriv.h and should perhaps be referenced from there? */
        !            81: 
        !            82: struct diskextent {
        !            83:        u_int32_t                                       startblock;                             /* first block allocated */
        !            84:        u_int32_t                                       blockcount;                             /* number of blocks allocated */
        !            85: };
        !            86: 
        !            87: typedef struct diskextent extentrecord[8];
        !            88: 
        !            89: #define ATTR_BIT_MAP_COUNT 5
        !            90: 
        !            91: #define ATTR_CMN_NAME                          0x00000001
        !            92: #define ATTR_CMN_DEVID                         0x00000002
        !            93: #define ATTR_CMN_FSID                          0x00000004
        !            94: #define ATTR_CMN_OBJTYPE                       0x00000008
        !            95: #define ATTR_CMN_OBJTAG                                0x00000010
        !            96: #define ATTR_CMN_OBJID                         0x00000020
        !            97: #define ATTR_CMN_OBJPERMANENTID                0x00000040
        !            98: #define ATTR_CMN_PAROBJID                      0x00000080
        !            99: #define ATTR_CMN_SCRIPT                                0x00000100
        !           100: #define ATTR_CMN_CRTIME                                0x00000200
        !           101: #define ATTR_CMN_MODTIME                       0x00000400
        !           102: #define ATTR_CMN_CHGTIME                       0x00000800
        !           103: #define ATTR_CMN_ACCTIME                       0x00001000
        !           104: #define ATTR_CMN_BKUPTIME                      0x00002000
        !           105: #define ATTR_CMN_FNDRINFO                      0x00004000
        !           106: #define ATTR_CMN_OWNERID                       0x00008000
        !           107: #define ATTR_CMN_GRPID                         0x00010000
        !           108: #define ATTR_CMN_ACCESSMASK                    0x00020000
        !           109: #define ATTR_CMN_FLAGS                         0x00040000
        !           110: #define ATTR_CMN_NAMEDATTRCOUNT                0x00080000
        !           111: #define ATTR_CMN_NAMEDATTRLIST         0x00100000
        !           112: 
        !           113: #define ATTR_CMN_VALIDMASK                     0x001FFFFF
        !           114: #define ATTR_CMN_SETMASK                       0x0007FF00
        !           115: #define ATTR_CMN_VOLSETMASK                     0x00006700
        !           116: 
        !           117: #define ATTR_VOL_FSTYPE                                0x00000001
        !           118: #define ATTR_VOL_SIGNATURE                     0x00000002
        !           119: #define ATTR_VOL_SIZE                          0x00000004
        !           120: #define ATTR_VOL_SPACEFREE                     0x00000008
        !           121: #define ATTR_VOL_SPACEAVAIL                    0x00000010
        !           122: #define ATTR_VOL_MINALLOCATION         0x00000020
        !           123: #define ATTR_VOL_ALLOCATIONCLUMP       0x00000040
        !           124: #define ATTR_VOL_IOBLOCKSIZE           0x00000080
        !           125: #define ATTR_VOL_OBJCOUNT                      0x00000100
        !           126: #define ATTR_VOL_FILECOUNT                     0x00000200
        !           127: #define ATTR_VOL_DIRCOUNT                      0x00000400
        !           128: #define ATTR_VOL_MAXOBJCOUNT           0x00000800
        !           129: #define ATTR_VOL_MOUNTPOINT                    0x00001000
        !           130: #define ATTR_VOL_NAME                          0x00002000
        !           131: #define ATTR_VOL_MOUNTFLAGS                     0x00004000
        !           132: #define ATTR_VOL_INFO                          0x80000000
        !           133: 
        !           134: #define ATTR_VOL_VALIDMASK                     0x80007FFF
        !           135: #define ATTR_VOL_SETMASK                       0x80002000
        !           136: 
        !           137: 
        !           138: /* File/directory attributes: */
        !           139: #define ATTR_DIR_LINKCOUNT                     0x00000001
        !           140: #define ATTR_DIR_ENTRYCOUNT                    0x00000002
        !           141: 
        !           142: #define ATTR_DIR_VALIDMASK                     0x00000003
        !           143: #define ATTR_DIR_SETMASK                       0x00000000
        !           144: 
        !           145: #define ATTR_FILE_LINKCOUNT                    0x00000001
        !           146: #define ATTR_FILE_TOTALSIZE                    0x00000002
        !           147: #define ATTR_FILE_ALLOCSIZE                    0x00000004
        !           148: #define ATTR_FILE_IOBLOCKSIZE          0x00000008
        !           149: #define ATTR_FILE_CLUMPSIZE                    0x00000010
        !           150: #define ATTR_FILE_DEVTYPE                      0x00000020
        !           151: #define ATTR_FILE_FILETYPE                     0x00000040
        !           152: #define ATTR_FILE_FORKCOUNT                    0x00000080
        !           153: #define ATTR_FILE_FORKLIST                     0x00000100
        !           154: #define ATTR_FILE_DATALENGTH           0x00000200
        !           155: #define ATTR_FILE_DATAALLOCSIZE                0x00000400
        !           156: #define ATTR_FILE_DATAEXTENTS          0x00000800
        !           157: #define ATTR_FILE_RSRCLENGTH           0x00001000
        !           158: #define ATTR_FILE_RSRCALLOCSIZE                0x00002000
        !           159: #define ATTR_FILE_RSRCEXTENTS          0x00004000
        !           160: 
        !           161: #define ATTR_FILE_VALIDMASK                    0x00007FFF
        !           162: #define ATTR_FILE_SETMASK                      0x00000020
        !           163: 
        !           164: #define ATTR_FORK_TOTALSIZE                    0x00000001
        !           165: #define ATTR_FORK_ALLOCSIZE                    0x00000002
        !           166: 
        !           167: #define ATTR_FORK_VALIDMASK                    0x00000003
        !           168: #define ATTR_FORK_SETMASK                      0x00000000
        !           169: 
        !           170: struct fullcommonattrblock {
        !           171:        dev_t                                   device;
        !           172:        fsid_t                                  fs;
        !           173:        fsobj_type_t                    fsobjtype;
        !           174:        fsobj_tag_t                             fsobjtag;
        !           175:        fsobj_id_t                              fsobjid;
        !           176:        fsobj_id_t                              fsparid;
        !           177:        attrreference_t                 name;
        !           178:         text_encoding_t                nameEncoding;
        !           179:        struct timespec                 cr_time;
        !           180:        struct timespec                 m_time;
        !           181:        struct timespec                 c_time;
        !           182:        struct timespec                 a_time;
        !           183:        struct timespec                 b_time;
        !           184:        u_int8_t                                finderinfo[32];
        !           185:        uid_t                                   owner;
        !           186:        gid_t                                   group;
        !           187:        mode_t                                  mode;
        !           188:        u_int32_t                               namedattr_count;
        !           189:        attrreference_t                 namedattr_list;
        !           190:        u_int32_t                               flags;
        !           191: };
        !           192: 
        !           193: struct fullvolumeattrblock {
        !           194:        u_int32_t                       fstype;
        !           195:        u_int32_t                       signature;
        !           196:        off_t                           size;
        !           197:        off_t                           spacefree;
        !           198:        off_t                           spaceavail;
        !           199:        off_t                           minallocation;
        !           200:        off_t                           allocationclump;
        !           201:        size_t                          ioblocksize;
        !           202:        u_int32_t                       objcount;
        !           203:        u_int32_t                       filecount;
        !           204:        u_int32_t                       dircount;
        !           205:        u_int32_t                       maxobjcount;
        !           206:        attrreference_t         mountpoint;
        !           207: };
        !           208: 
        !           209: struct fulldirattrblock {
        !           210:        u_int32_t                       linkcount;
        !           211:        u_int32_t                       entrycount;
        !           212: };
        !           213: 
        !           214: struct fullfileattrblock {
        !           215:        u_int32_t                       linkcount;
        !           216:        off_t                           totalsize;
        !           217:        off_t                           allocatedsize;
        !           218:        size_t                          ioblocksize;
        !           219:        size_t                          clumpsize;
        !           220:        u_int32_t                       devtype;
        !           221:        u_int32_t                       filetype;
        !           222:        u_int32_t                       forkcount;
        !           223:        attrreference_t         forklist;
        !           224:        off_t                           dataforklength;
        !           225:        off_t                           dataforkallocated;
        !           226:        extentrecord            dataextents;
        !           227:        off_t                           rsrcforklength;
        !           228:        off_t                           rsrforkallocated;
        !           229:        extentrecord            rsrcextents;
        !           230:        u_int32_t                       entrycount;
        !           231:        dev_t                           devicetype;
        !           232: };
        !           233: 
        !           234: struct fullforkattrblock {
        !           235:        off_t                           totalsize;
        !           236:        off_t                           allocatedsize;
        !           237: };
        !           238: 
        !           239: struct fullattrblock {
        !           240:        u_int32_t attrblocklength;
        !           241:        struct fullcommonattrblock c;
        !           242:        union {
        !           243:                struct fullvolumeattrblock v;
        !           244:                struct fulldirattrblock d;
        !           245:                struct fullfileattrblock f;
        !           246:                struct fullforkattrblock fork;
        !           247:        } u;
        !           248: };
        !           249: 
        !           250: 
        !           251: #define SRCHFS_START                                   0x00000001
        !           252: #define SRCHFS_MATCHPARTIALNAMES               0x00000002
        !           253: #define SRCHFS_MATCHDIRS                               0x00000004
        !           254: #define SRCHFS_MATCHFILES                              0x00000008
        !           255: #define SRCHFS_NEGATEPARAMS                    0x80000000
        !           256: #define SRCHFS_VALIDOPTIONSMASK                        0x8000000F
        !           257: 
        !           258: struct fssearchblock {
        !           259:        struct attrlist         *returnattrs;
        !           260:        void                            *returnbuffer;
        !           261:        size_t                          returnbuffersize;
        !           262:        u_long                          maxmatches;
        !           263:        struct timeval          timelimit;
        !           264:        void                            *searchparams1;
        !           265:        size_t                          sizeofsearchparams1;
        !           266:        void                            *searchparams2;
        !           267:        size_t                          sizeofsearchparams2;
        !           268:        struct attrlist         searchattrs;
        !           269: };
        !           270: 
        !           271: 
        !           272: struct searchstate {
        !           273:        u_char                          reserved[556];          //      sizeof( SearchState )
        !           274: };
        !           275: 
        !           276: 
        !           277: 
        !           278: #define FST_EOF (-1)                           /* end-of-file offset */
        !           279: 
        !           280: __BEGIN_DECLS
        !           281: /* XXX PPD This should be moved to dirent.h to be with getdirentries(2) et al. */
        !           282: //int getdirentriesattr(int fd, const struct attrlist *attrspec, void *attrbuf, size_t bufsize, long //*cookie);
        !           283: 
        !           284: __END_DECLS
        !           285: 
        !           286: #endif /* !_SYS_ATTR_H_ */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.