Ignore:
Timestamp:
Sep 26, 2003, 4:41:32 AM (22 years ago)
Author:
bird
Message:

#668: Initial changed related to Large File Support (>2GB).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/emx/include/sys/dirent.h

    • Property cvs2svn:cvs-rev changed from 1.1 to 1.2
    r731 r732  
    1 /* sys/dirent.h (emx+gcc) */
     1/*-
     2 * Copyright (c) 1989, 1993
     3 *      The Regents of the University of California.  All rights reserved.
     4 *
     5 * Redistribution and use in source and binary forms, with or without
     6 * modification, are permitted provided that the following conditions
     7 * are met:
     8 * 1. Redistributions of source code must retain the above copyright
     9 *    notice, this list of conditions and the following disclaimer.
     10 * 2. Redistributions in binary form must reproduce the above copyright
     11 *    notice, this list of conditions and the following disclaimer in the
     12 *    documentation and/or other materials provided with the distribution.
     13 * 3. All advertising materials mentioning features or use of this software
     14 *    must display the following acknowledgement:
     15 *      This product includes software developed by the University of
     16 *      California, Berkeley and its contributors.
     17 * 4. Neither the name of the University nor the names of its contributors
     18 *    may be used to endorse or promote products derived from this software
     19 *    without specific prior written permission.
     20 *
     21 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
     22 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     24 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
     25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
     30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
     31 * SUCH DAMAGE.
     32 *
     33 *      @(#)dirent.h    8.3 (Berkeley) 8/10/94
     34 * $FreeBSD: src/sys/sys/dirent.h,v 1.13 2002/09/10 18:12:16 mike Exp $
     35 */
    236
    3 #ifndef _SYS_DIRENT_H
    4 #define _SYS_DIRENT_H
     37/** @file
     38 * FreeBSD 5.1
     39 * @changed bird: Merged in all the EMX stuff.
     40 */
    541
    6 #if !defined (_SYS_TYPES_H)
    7 #warning <sys/dirent.h> requires <sys/types.h>
    8 #include <sys/types.h>
     42#ifndef _SYS_DIRENT_H_
     43#define _SYS_DIRENT_H_
     44
     45#include <sys/cdefs.h>
     46#include <sys/_types.h>
     47
     48/*
     49 * The dirent structure defines the format of directory entries returned by
     50 * the getdirentries(2) system call.
     51 *
     52 * A directory entry has a struct dirent at the front of it, containing its
     53 * inode number, the length of the entry, and the length of the name
     54 * contained in the entry.  These are followed by the name padded to a 4
     55 * byte boundary with null bytes.  All names are guaranteed null terminated.
     56 * The maximum length of a name in a directory is MAXNAMLEN.
     57 */
     58
     59struct dirent {
     60        __uint32_t d_fileno;            /* file number of entry */
     61        __uint16_t d_reclen;            /* length of this record */
     62        __uint8_t  d_type;              /* file type, see below */
     63        __uint8_t  d_namlen;            /* length of string in d_name */
     64#if __BSD_VISIBLE
     65#ifndef MAXNAMLEN  /* bird: emx */
     66#define MAXNAMLEN       260 /* bird: changed from 255. */
     67#endif             /* bird: emx */
     68        char    d_name[MAXNAMLEN + 1];  /* name must be no longer than this */
     69#else
     70        char    d_name[260 + 1];        /* bird: changed from 255. */ /* name must be no longer than this */
     71#endif
     72/* bird: Extra EMX fields - start */
     73        __uint8_t  d_attr;              /* OS file attributes        */
     74        __uint16_t d_time;              /* OS file modification time */
     75        __uint16_t d_date;              /* OS file modification date */
     76        __off_t    d_size;              /* File size (bytes)         */
     77/* bird: Extra EMX fields - end */
     78};
     79
     80#if __BSD_VISIBLE
     81/*
     82 * File types
     83 */
     84#define DT_UNKNOWN       0
     85#define DT_FIFO          1
     86#define DT_CHR           2
     87#define DT_DIR           4
     88#define DT_BLK           6
     89#define DT_REG           8
     90#define DT_LNK          10
     91#define DT_SOCK         12
     92#define DT_WHT          14
     93
     94/*
     95 * Convert between stat structure types and directory types.
     96 */
     97#define IFTODT(mode)    (((mode) & 0170000) >> 12)
     98#define DTTOIF(dirtype) ((dirtype) << 12)
     99
     100/*
     101 * The _GENERIC_DIRSIZ macro gives the minimum record length which will hold
     102 * the directory entry.  This requires the amount of space in struct direct
     103 * without the d_name field, plus enough space for the name with a terminating
     104 * null byte (dp->d_namlen+1), rounded up to a 4 byte boundary.
     105 *
     106 * XXX although this macro is in the implementation namespace, it requires
     107 * a manifest constant that is not.
     108 */
     109#define _GENERIC_DIRSIZ(dp) \
     110    ((sizeof (struct dirent) - (MAXNAMLEN+1)) + (((dp)->d_namlen+1 + 3) &~ 3))
     111#endif /* __BSD_VISIBLE */
     112
     113#ifdef _KERNEL
     114#define GENERIC_DIRSIZ(dp)      _GENERIC_DIRSIZ(dp)
    9115#endif
    10116
    11 #if !defined (MAXNAMLEN)
    12 #define MAXNAMLEN  260
    13 #endif
     117
     118/* bird: EMX stuff */
     119#define _DIRENT_D_MODE_RENAMED_D_ATTR
    14120
    15121#if !defined (MAXPATHLEN)
     
    26132#endif
    27133
    28 #define _DIRENT_D_MODE_RENAMED_D_ATTR
    29 
    30 struct dirent
    31 {
    32   ino_t          d_ino;                 /* Almost not used           */
    33   int            d_reclen;              /* Almost not used           */
    34   int            d_namlen;              /* Length of d_name          */
    35   char           d_name[MAXNAMLEN + 1]; /* File name, 0 terminated   */
    36   long           d_size;                /* File size (bytes)         */
    37   unsigned short d_attr;                /* OS file attributes        */
    38   unsigned short d_time;                /* OS file modification time */
    39   unsigned short d_date;                /* OS file modification date */
    40 };
    41 
    42134#endif /* not SYS_DIRENT_H */
Note: See TracChangeset for help on using the changeset viewer.