| 1 | /* |
| 2 | <dir.h> -- definitions for 4.2BSD-compatible directory access |
| 3 | |
| 4 | last edit: 09-Jul-1983 D A Gwyn |
| 5 | */ |
| 6 | |
| 7 | #ifdef VMS |
| 8 | #ifndef FAB$C_BID |
| 9 | #include <fab.h> |
| 10 | #endif |
| 11 | #ifndef NAM$C_BID |
| 12 | #include <nam.h> |
| 13 | #endif |
| 14 | #ifndef RMS$_SUC |
| 15 | #include <rmsdef.h> |
| 16 | #endif |
| 17 | #include "vmsdir.h" |
| 18 | #endif /* VMS */ |
| 19 | |
| 20 | #define DIRBLKSIZ 512 /* size of directory block */ |
| 21 | #ifdef VMS |
| 22 | #define MAXNAMLEN (DIR$S_NAME + 7) /* 80 plus room for version #. */ |
| 23 | #define MAXFULLSPEC NAM$C_MAXRSS /* Maximum full spec */ |
| 24 | #else |
| 25 | #ifdef WINDOWSNT |
| 26 | #define MAXNAMLEN 255 |
| 27 | #else /* not WINDOWSNT */ |
| 28 | #define MAXNAMLEN 15 /* maximum filename length */ |
| 29 | #endif /* not WINDOWSNT */ |
| 30 | #endif /* VMS */ |
| 31 | /* NOTE: MAXNAMLEN must be one less than a multiple of 4 */ |
| 32 | |
| 33 | struct direct /* data from readdir() */ |
| 34 | { |
| 35 | long d_ino; /* inode number of entry */ |
| 36 | unsigned short d_reclen; /* length of this record */ |
| 37 | unsigned short d_namlen; /* length of string in d_name */ |
| 38 | char d_name[MAXNAMLEN+1]; /* name of file */ |
| 39 | }; |
| 40 | |
| 41 | typedef struct |
| 42 | { |
| 43 | int dd_fd; /* file descriptor */ |
| 44 | int dd_loc; /* offset in block */ |
| 45 | int dd_size; /* amount of valid data */ |
| 46 | char dd_buf[DIRBLKSIZ]; /* directory block */ |
| 47 | } DIR; /* stream data from opendir() */ |
| 48 | |
| 49 | extern DIR *opendir(); |
| 50 | extern struct direct *readdir(); |
| 51 | extern long telldir(); |
| 52 | extern void seekdir(); |
| 53 | extern void closedir(); |
| 54 | |
| 55 | #define rewinddir( dirp ) seekdir( dirp, 0L ) |