home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1999 March B / SCO_CASTOR4RRT.iso / uccs / root.14 / udk / usr / include / dirent.h < prev    next >
C/C++ Source or Header  |  1998-08-19  |  3KB  |  151 lines

  1. /*
  2.  * Copyright (c) 1998 The Santa Cruz Operation, Inc.. All Rights Reserved. 
  3.  *                                                                         
  4.  *        THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF THE               
  5.  *                   SANTA CRUZ OPERATION INC.                             
  6.  *                                                                         
  7.  *   The copyright notice above does not evidence any actual or intended   
  8.  *   publication of such source code.                                      
  9.  */
  10.  
  11. #ifndef _DIRENT_H
  12. #define _DIRENT_H
  13. #ident    "@(#)sgs-head:common/head/dirent.h    1.6.1.10"
  14.  
  15. /*
  16.  *    Copyright (c) 1982, 1986, 1988
  17.  *    The Regents of the University of California
  18.  *    All Rights Reserved.
  19.  *    Portions of this document are derived from
  20.  *    software developed by the University of
  21.  *    California, Berkeley, and its contributors.
  22.  */
  23.  
  24. #if !defined(_XOPEN_SOURCE) \
  25.     && !defined(_POSIX_SOURCE) && !defined(_POSIX_C_SOURCE)
  26. #define MAXNAMLEN    512    /* maximum filename length */
  27. #define DIRBUF        2048    /* buffer size for fs-indep. dirs */
  28. #endif
  29.  
  30. typedef struct
  31. {
  32. #ifdef dd_fd
  33.     int    __dd_fd;    /* file descriptor */
  34. #else
  35.     int    dd_fd;
  36. #endif
  37. #ifdef dd_loc
  38.     int    __dd_loc;    /* offset in block */
  39. #else
  40.     int    dd_loc;
  41. #endif
  42. #ifdef dd_size
  43.     int    __dd_size;    /* amount of valid data */
  44. #else
  45.     int    dd_size;
  46. #endif
  47. #ifdef dd_buf
  48.     char    *__dd_buf;    /* directory block */
  49. #else
  50.     char    *dd_buf;
  51. #endif
  52. } DIR;
  53.  
  54. #ifndef _SYS_TYPES_H
  55. #include <sys/types.h>
  56. #endif
  57.  
  58. #ifndef _SYS_DIRENT_H
  59. #include <sys/dirent.h>
  60. #endif
  61.  
  62. #undef dirent /* it will be remapped below */
  63.  
  64. #ifdef __cplusplus
  65. extern "C" {
  66. #endif
  67.  
  68. extern DIR    *opendir(const char *);
  69. struct dirent    *readdir(DIR *);
  70. extern void    rewinddir(DIR *);
  71. extern int    closedir(DIR *);
  72. #if defined(_XOPEN_SOURCE) \
  73.     || !defined(_POSIX_SOURCE) && !defined(_POSIX_C_SOURCE)
  74. extern long    telldir(DIR *);
  75. extern void    seekdir(DIR *, long);
  76. #define rewinddir(p)    seekdir(p, 0)
  77. #endif
  78.  
  79. #if defined(_LARGEFILE64_SOURCE) || defined(_FILE_OFFSET_BITS) \
  80.     || !defined(_XOPEN_SOURCE) && !defined(_POSIX_SOURCE) \
  81.         && !defined(_POSIX_C_SOURCE)
  82.  
  83. struct dirent32    *readdir32(DIR *);
  84. struct dirent64    *readdir64(DIR *);
  85. extern int    _xreaddir_r(DIR *, struct dirent *, struct dirent **);
  86. extern int    _xreaddir32_r(DIR *, struct dirent32 *, struct dirent32 **);
  87. extern int    _xreaddir64_r(DIR *, struct dirent64 *, struct dirent64 **);
  88.  
  89. #ifdef _SIMPLE_R
  90.  
  91. struct dirent    *readdir_r(DIR *, struct dirent *);
  92.  
  93. #elif !defined(_FILE_OFFSET_BITS)
  94.  
  95. #ifdef _EFTSAFE
  96.  
  97. #undef readdir_r
  98. #define readdir_r(p,d,r)    _xreaddir_r(p,d,r)
  99. #undef readdir32_r
  100. #define readdir32_r(p,d,r)    _xreaddir32_r(p,d,r)
  101. #undef readdir64_r
  102. #define readdir64_r(p,d,r)    _xreaddir64_r(p,d,r)
  103.  
  104. #else /*!_EFTSAFE*/
  105.  
  106. static int
  107. readdir_r(DIR *__1, struct dirent *__2, struct dirent **__3)
  108. {
  109.     return _xreaddir_r(__1, __2, __3);
  110. }
  111.  
  112. #endif /*_EFTSAFE*/
  113.  
  114. #endif /*_SIMPLE_R*/
  115.  
  116. #endif /*defined(_LARGEFILE64_SOURCE) || ...*/
  117.  
  118. #ifdef __cplusplus
  119. }
  120. #endif
  121.  
  122. #if _FILE_OFFSET_BITS - 0 == 32
  123.  
  124. #undef dirent
  125. #define dirent        dirent32
  126. #undef readdir
  127. #define readdir        readdir32
  128. #ifndef _SIMPLE_R
  129. #undef readdir_r
  130. #define readdir_r    _xreaddir32_r
  131. #endif
  132.  
  133. #elif _FILE_OFFSET_BITS - 0 == 64
  134.  
  135. #undef dirent
  136. #define dirent        dirent64
  137. #undef readdir
  138. #define readdir        readdir64
  139. #ifndef _SIMPLE_R
  140. #undef readdir_r
  141. #define readdir_r    _xreaddir64_r
  142. #endif
  143.  
  144. #elif defined(_FILE_OFFSET_BITS)
  145.  
  146. #error "_FILE_OFFSET_BITS, if defined, must be 32 or 64"
  147.  
  148. #endif /*_FILE_OFFSET_BITS*/
  149.  
  150. #endif /*_DIRENT_H*/
  151.