paxdir.h

Upload User: acmefrp
Upload Date: 2010-03-06
Package Size: 23768k
Code Size: 2k
Category: OS Develop
Development Platform: C/C++
  1. /*      @(#)paxdir.h 1.1 92/07/30 SMI";  */
  2. /*
  3. <dirent.h> -- definitions for SVR3 directory access routines
  4. last edit: 25-Apr-1987 D A Gwyn
  5. Prerequisite: <sys/types.h>
  6. */
  7. #include "config.h"
  8. #ifdef USG
  9. #define UFS
  10. #else
  11. #ifdef BSD
  12. #define BFS
  13. #endif
  14. #endif
  15. struct dirent {  /* data from getdents()/readdir() */
  16.     long d_ino; /* inode number of entry */
  17.     off_t d_off; /* offset of disk directory entry */
  18.     unsigned short d_reclen; /* length of this record */
  19.     char d_name[1]; /* name of file (non-POSIX) */
  20. };
  21. typedef struct {
  22.     int dd_fd; /* file descriptor */
  23.     int dd_loc; /* offset in block */
  24.     int dd_size; /* amount of valid data */
  25.     char *dd_buf; /* -> directory block */
  26. } DIR; /* stream data from opendir() */
  27. /* 
  28.  * The following nonportable ugliness could have been avoided by defining
  29.  * DIRENTSIZ and DIRENTBASESIZ to also have (struct dirent *) arguments. 
  30.  */
  31. #define DIRENTBASESIZ (((struct dirent *)0)->d_name 
  32. - (char *)&((struct dirent *)0)->d_ino)
  33. #define DIRENTSIZ( namlen ) ((DIRENTBASESIZ + sizeof(long) + (namlen)) 
  34. / sizeof(long) * sizeof(long))
  35. #define MAXNAMLEN 512 /* maximum filename length */
  36. #ifndef NAME_MAX
  37. #define NAME_MAX (MAXNAMLEN - 1) /* DAG -- added for POSIX */
  38. #endif
  39. #define DIRBUF  8192 /* buffer size for fs-indep. dirs */
  40. /* must in general be larger than the filesystem buffer size */
  41. struct direct {                 /* data from read()/_getdirentries() */
  42.     unsigned long   d_fileno;   /* unique ident of entry */
  43.     unsigned short  d_reclen;   /* length of this record */
  44.     unsigned short  d_namlen;   /* length of string in d_name */
  45.     char            d_name[255 + 1];     /* NUL-terminated filename */
  46. };
  47. extern DIR *opendir();
  48. extern struct dirent *readdir();
  49. extern OFFSET telldir();
  50. extern void seekdir();
  51. extern int closedir();