|
|
1.1 ! root 1: /* Copyright (c) 1982 Regents of the University of California */ ! 2: ! 3: /* @(#)ndir.h 4.4 3/30/82 */ ! 4: ! 5: #include "config.h" ! 6: ! 7: #ifndef ULONG ! 8: typedef unsigned long u_long; ! 9: #endif ! 10: ! 11: /* ! 12: * This sets the "page size" for directories. ! 13: * Requirements are DEV_BSIZE <= DIRBLKSIZ <= MINBSIZE with ! 14: * DIRBLKSIZ a power of two. ! 15: * Dennis Ritchie feels that directory pages should be atomic ! 16: * operations to the disk, so we use DEV_BSIZE. ! 17: */ ! 18: #define DIRBLKSIZ 512 ! 19: ! 20: /* ! 21: * This limits the directory name length. Its main constraint ! 22: * is that it appears twice in the user structure. (u. area) ! 23: */ ! 24: #define MAXNAMLEN 255 ! 25: ! 26: struct direct { ! 27: u_long d_ino; ! 28: short d_reclen; ! 29: short d_namlen; ! 30: char d_name[MAXNAMLEN + 1]; ! 31: /* typically shorter */ ! 32: }; ! 33: ! 34: struct _dirdesc { ! 35: int dd_fd; ! 36: long dd_loc; ! 37: long dd_size; ! 38: char dd_buf[DIRBLKSIZ]; ! 39: }; ! 40: ! 41: /* ! 42: * useful macros. ! 43: */ ! 44: #undef DIRSIZ ! 45: #define DIRSIZ(dp) \ ! 46: ((sizeof(struct direct) - MAXNAMLEN + (dp)->d_namlen + sizeof(ino_t) - 1) &\ ! 47: ~(sizeof(ino_t) - 1)) ! 48: typedef struct _dirdesc DIR; ! 49: #ifndef NULL ! 50: #define NULL 0 ! 51: #endif ! 52: ! 53: /* ! 54: * functions defined on directories ! 55: */ ! 56: extern DIR *opendir(); ! 57: extern struct direct *readdir(); ! 58: extern long telldir(); ! 59: extern void seekdir(); ! 60: #define rewinddir(dirp) seekdir((dirp), 0) ! 61: extern void closedir();
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.