|
|
1.1 ! root 1: /*- ! 2: * Copyright (c) 1989 The Regents of the University of California. ! 3: * All rights reserved. ! 4: * ! 5: * Redistribution and use in source and binary forms are permitted provided ! 6: * that: (1) source distributions retain this entire copyright notice and ! 7: * comment, and (2) distributions including binaries display the following ! 8: * acknowledgement: ``This product includes software developed by the ! 9: * University of California, Berkeley and its contributors'' in the ! 10: * documentation or other materials provided with the distribution and in ! 11: * all advertising materials mentioning features or use of this software. ! 12: * Neither the name of the University nor the names of its contributors may ! 13: * be used to endorse or promote products derived from this software without ! 14: * specific prior written permission. ! 15: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED ! 16: * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF ! 17: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ! 18: * ! 19: * @(#)dirent.h 5.13 (Berkeley) 6/24/90 ! 20: */ ! 21: ! 22: #ifndef _DIRENT_ ! 23: #define _DIRENT_ ! 24: ! 25: /* ! 26: * A directory entry has a struct direct at the front of it, containing its ! 27: * inode number, the length of the entry, and the length of the name ! 28: * contained in the entry. These are followed by the name padded to a 4 ! 29: * byte boundary with null bytes. All names are guaranteed null terminated. ! 30: * The maximum length of a name in a directory is MAXNAMLEN. ! 31: */ ! 32: ! 33: struct dirent { ! 34: u_long d_fileno; /* file number of entry */ ! 35: u_short d_reclen; /* length of this record */ ! 36: u_short d_namlen; /* length of string in d_name */ ! 37: #ifdef _POSIX_SOURCE ! 38: char d_name[255 + 1]; /* name must be no longer than this */ ! 39: #else ! 40: #define MAXNAMLEN 255 ! 41: char d_name[MAXNAMLEN + 1]; /* name must be no longer than this */ ! 42: #endif ! 43: }; ! 44: ! 45: #ifdef _POSIX_SOURCE ! 46: typedef void * DIR; ! 47: #else ! 48: ! 49: #define d_ino d_fileno /* backward compatibility */ ! 50: ! 51: /* definitions for library routines operating on directories. */ ! 52: #define DIRBLKSIZ 1024 ! 53: ! 54: /* structure describing an open directory. */ ! 55: typedef struct _dirdesc { ! 56: int dd_fd; /* file descriptor associated with directory */ ! 57: long dd_loc; /* offset in current buffer */ ! 58: long dd_size; /* amount of data returned by getdirentries */ ! 59: char *dd_buf; /* data buffer */ ! 60: int dd_len; /* size of data buffer */ ! 61: long dd_seek; /* magic cookie returned by getdirentries */ ! 62: } DIR; ! 63: ! 64: #define dirfd(dirp) ((dirp)->dd_fd) ! 65: ! 66: #ifndef NULL ! 67: #define NULL 0 ! 68: #endif ! 69: ! 70: #endif /* _POSIX_SOURCE */ ! 71: ! 72: #if __STDC__ || c_plusplus ! 73: extern DIR *opendir(const char *); ! 74: extern struct dirent *readdir(DIR *); ! 75: extern void rewinddir(DIR *); ! 76: extern int closedir(DIR *); ! 77: #ifndef _POSIX_SOURCE ! 78: extern long telldir(const DIR *); ! 79: extern void seekdir(DIR *, long); ! 80: extern int scandir(const char *, struct direct ***, ! 81: int (* )(struct direct *), int (* )(void *, void *)); ! 82: extern int alphasort(const void *, const void *); ! 83: #endif ! 84: #else ! 85: extern DIR *opendir(); ! 86: extern struct dirent *readdir(); ! 87: extern void rewinddir(); ! 88: extern int closedir(); ! 89: #ifndef _POSIX_SOURCE ! 90: extern long telldir(); ! 91: extern void seekdir(); ! 92: extern int scandir(); ! 93: extern int alphasort(); ! 94: #endif ! 95: #endif ! 96: #endif /* _DIRENT_ */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.