darwin-xnu/bsd/sys/dirent.h
<<
>>
Prefs
   1/*
   2 * Copyright (c) 2000-2005 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/* Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved */
  23/*-
  24 * Copyright (c) 1989, 1993
  25 *      The Regents of the University of California.  All rights reserved.
  26 *
  27 * Redistribution and use in source and binary forms, with or without
  28 * modification, are permitted provided that the following conditions
  29 * are met:
  30 * 1. Redistributions of source code must retain the above copyright
  31 *    notice, this list of conditions and the following disclaimer.
  32 * 2. Redistributions in binary form must reproduce the above copyright
  33 *    notice, this list of conditions and the following disclaimer in the
  34 *    documentation and/or other materials provided with the distribution.
  35 * 3. All advertising materials mentioning features or use of this software
  36 *    must display the following acknowledgement:
  37 *      This product includes software developed by the University of
  38 *      California, Berkeley and its contributors.
  39 * 4. Neither the name of the University nor the names of its contributors
  40 *    may be used to endorse or promote products derived from this software
  41 *    without specific prior written permission.
  42 *
  43 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  44 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  45 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  46 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  47 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  48 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  49 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  50 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  51 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  52 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  53 * SUCH DAMAGE.
  54 *
  55 *      @(#)dirent.h    8.3 (Berkeley) 8/10/94
  56 */
  57
  58/*
  59 * The dirent structure defines the format of directory entries returned by 
  60 * the getdirentries(2) system call.
  61 *
  62 * A directory entry has a struct dirent at the front of it, containing its
  63 * inode number, the length of the entry, and the length of the name
  64 * contained in the entry.  These are followed by the name padded to a 4
  65 * byte boundary with null bytes.  All names are guaranteed null terminated.
  66 * The maximum length of a name in a directory is MAXNAMLEN.
  67 */
  68
  69#ifndef _SYS_DIRENT_H 
  70#define _SYS_DIRENT_H 
  71
  72#include <sys/_types.h>
  73#include <sys/cdefs.h>
  74
  75#ifndef _INO_T
  76typedef __darwin_ino_t  ino_t;          /* inode number */
  77#define _INO_T
  78#endif
  79
  80#define __DARWIN_MAXNAMLEN      255
  81
  82#if __DARWIN_ALIGN_POWER
  83#pragma options align=power
  84#endif
  85
  86struct dirent {
  87        ino_t d_ino;                    /* file number of entry */
  88        __uint16_t d_reclen;            /* length of this record */
  89        __uint8_t  d_type;              /* file type, see below */
  90        __uint8_t  d_namlen;            /* length of string in d_name */
  91        char d_name[__DARWIN_MAXNAMLEN + 1];    /* name must be no longer than this */
  92};
  93
  94#if __DARWIN_ALIGN_POWER
  95#pragma options align=reset
  96#endif
  97
  98#ifdef KERNEL
  99#include <sys/kernel_types.h>
 100
 101/* Extended directory entry */
 102struct direntry{
 103        ino64_t     d_ino;      /* file number of entry */
 104        __uint64_t  d_seekoff;   /* seek offset (optional, used by servers) */
 105        __uint16_t  d_reclen;   /* length of this record */
 106        __uint16_t  d_namlen;   /* length of string in d_name */
 107        __uint8_t   d_type;     /* file type, see below */
 108        u_char      d_name[MAXPATHLEN - 1]; /* entry name (up to MAXPATHLEN - 1 bytes) */
 109};
 110#endif
 111
 112
 113#ifndef _POSIX_C_SOURCE
 114#define d_fileno        d_ino           /* backward compatibility */
 115#define MAXNAMLEN       __DARWIN_MAXNAMLEN
 116/*
 117 * File types
 118 */
 119#define DT_UNKNOWN       0
 120#define DT_FIFO          1
 121#define DT_CHR           2
 122#define DT_DIR           4
 123#define DT_BLK           6
 124#define DT_REG           8
 125#define DT_LNK          10
 126#define DT_SOCK         12
 127#define DT_WHT          14
 128
 129/*
 130 * Convert between stat structure types and directory types.
 131 */
 132#define IFTODT(mode)    (((mode) & 0170000) >> 12)
 133#define DTTOIF(dirtype) ((dirtype) << 12)
 134#endif
 135
 136#endif /* _SYS_DIRENT_H  */
 137
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.