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