|
|
researchv9-SUN3(old)
/*
* This sets the "page size" for directories.
* Requirements are DEV_BSIZE <= DIRBLKSIZ <= MINBSIZE with
* DIRBLKSIZ a power of two.
* Dennis Ritchie feels that directory pages should be atomic
* operations to the disk, so we use DEV_BSIZE.
*/
#define DIRBLKSIZ 512
/*
* This limits the directory name length. Its main constraint
* is that it appears twice in the user structure. (u. area)
*/
#define MAXNAMLEN 255
struct direct {
u_long d_ino;
short d_reclen;
short d_namlen;
char d_name[MAXNAMLEN + 1];
/* typically shorter */
};
struct _dirdesc {
int dd_fd;
long dd_loc;
long dd_size;
char dd_buf[DIRBLKSIZ];
};
#undef DIRSIZ
inline int DIRSIZ(direct* dp) {
return ~(sizeof(ino_t) - 1) &
(sizeof(struct direct)
- MAXNAMLEN
+ dp->d_namlen
+ sizeof(ino_t) - 1);
}
typedef struct _dirdesc DIR;
/*
* functions defined on directories
*/
extern DIR *opendir(char*);
extern direct *readdir(DIR*);
extern long telldir(DIR*);
extern void seekdir(DIR*,long);
inline void rewinddir(DIR* dirp) { seekdir(dirp, 0); }
extern void closedir(DIR*);
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.