1*df930be7Sderaadt /* $NetBSD: dirent.h,v 1.9 1994/12/13 15:58:20 mycroft Exp $ */ 2*df930be7Sderaadt 3*df930be7Sderaadt /*- 4*df930be7Sderaadt * Copyright (c) 1989, 1993 5*df930be7Sderaadt * The Regents of the University of California. All rights reserved. 6*df930be7Sderaadt * 7*df930be7Sderaadt * Redistribution and use in source and binary forms, with or without 8*df930be7Sderaadt * modification, are permitted provided that the following conditions 9*df930be7Sderaadt * are met: 10*df930be7Sderaadt * 1. Redistributions of source code must retain the above copyright 11*df930be7Sderaadt * notice, this list of conditions and the following disclaimer. 12*df930be7Sderaadt * 2. Redistributions in binary form must reproduce the above copyright 13*df930be7Sderaadt * notice, this list of conditions and the following disclaimer in the 14*df930be7Sderaadt * documentation and/or other materials provided with the distribution. 15*df930be7Sderaadt * 3. All advertising materials mentioning features or use of this software 16*df930be7Sderaadt * must display the following acknowledgement: 17*df930be7Sderaadt * This product includes software developed by the University of 18*df930be7Sderaadt * California, Berkeley and its contributors. 19*df930be7Sderaadt * 4. Neither the name of the University nor the names of its contributors 20*df930be7Sderaadt * may be used to endorse or promote products derived from this software 21*df930be7Sderaadt * without specific prior written permission. 22*df930be7Sderaadt * 23*df930be7Sderaadt * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 24*df930be7Sderaadt * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 25*df930be7Sderaadt * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 26*df930be7Sderaadt * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 27*df930be7Sderaadt * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 28*df930be7Sderaadt * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 29*df930be7Sderaadt * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 30*df930be7Sderaadt * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 31*df930be7Sderaadt * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 32*df930be7Sderaadt * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 33*df930be7Sderaadt * SUCH DAMAGE. 34*df930be7Sderaadt * 35*df930be7Sderaadt * @(#)dirent.h 8.3 (Berkeley) 8/10/94 36*df930be7Sderaadt */ 37*df930be7Sderaadt 38*df930be7Sderaadt /* 39*df930be7Sderaadt * The dirent structure defines the format of directory entries returned by 40*df930be7Sderaadt * the getdirentries(2) system call. 41*df930be7Sderaadt * 42*df930be7Sderaadt * A directory entry has a struct dirent at the front of it, containing its 43*df930be7Sderaadt * inode number, the length of the entry, and the length of the name 44*df930be7Sderaadt * contained in the entry. These are followed by the name padded to a 4 45*df930be7Sderaadt * byte boundary with null bytes. All names are guaranteed null terminated. 46*df930be7Sderaadt * The maximum length of a name in a directory is MAXNAMLEN. 47*df930be7Sderaadt */ 48*df930be7Sderaadt 49*df930be7Sderaadt struct dirent { 50*df930be7Sderaadt u_int32_t d_fileno; /* file number of entry */ 51*df930be7Sderaadt u_int16_t d_reclen; /* length of this record */ 52*df930be7Sderaadt u_int8_t d_type; /* file type, see below */ 53*df930be7Sderaadt u_int8_t d_namlen; /* length of string in d_name */ 54*df930be7Sderaadt #ifdef _POSIX_SOURCE 55*df930be7Sderaadt char d_name[255 + 1]; /* name must be no longer than this */ 56*df930be7Sderaadt #else 57*df930be7Sderaadt #define MAXNAMLEN 255 58*df930be7Sderaadt char d_name[MAXNAMLEN + 1]; /* name must be no longer than this */ 59*df930be7Sderaadt #endif 60*df930be7Sderaadt }; 61*df930be7Sderaadt 62*df930be7Sderaadt /* 63*df930be7Sderaadt * File types 64*df930be7Sderaadt */ 65*df930be7Sderaadt #define DT_UNKNOWN 0 66*df930be7Sderaadt #define DT_FIFO 1 67*df930be7Sderaadt #define DT_CHR 2 68*df930be7Sderaadt #define DT_DIR 4 69*df930be7Sderaadt #define DT_BLK 6 70*df930be7Sderaadt #define DT_REG 8 71*df930be7Sderaadt #define DT_LNK 10 72*df930be7Sderaadt #define DT_SOCK 12 73*df930be7Sderaadt #define DT_WHT 14 74*df930be7Sderaadt 75*df930be7Sderaadt /* 76*df930be7Sderaadt * Convert between stat structure types and directory types. 77*df930be7Sderaadt */ 78*df930be7Sderaadt #define IFTODT(mode) (((mode) & 0170000) >> 12) 79*df930be7Sderaadt #define DTTOIF(dirtype) ((dirtype) << 12) 80