home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 April / PCWorld_2000-04_cd.bin / Software / Servis / Devc / _SETUP.4 / Group3 / dirent.h < prev    next >
C/C++ Source or Header  |  1999-11-07  |  2KB  |  97 lines

  1. /*
  2.  * DIRENT.H (formerly DIRLIB.H)
  3.  *
  4.  * by M. J. Weinstein   Released to public domain 1-Jan-89
  5.  *
  6.  * Because I have heard that this feature (opendir, readdir, closedir)
  7.  * it so useful for programmers coming from UNIX or attempting to port
  8.  * UNIX code, and because it is reasonably light weight, I have included
  9.  * it in the Mingw32 package. I have also added an implementation of
  10.  * rewinddir, seekdir and telldir.
  11.  *   - Colin Peters <colin@bird.fu.is.saga-u.ac.jp>
  12.  *
  13.  *  This code is distributed in the hope that is will be useful but
  14.  *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
  15.  *  DISCLAMED. This includeds but is not limited to warranties of
  16.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  17.  *
  18.  * $Revision: 1.2 $
  19.  * $Author: khan $
  20.  * $Date: 1999/01/04 23:21:12 $
  21.  *
  22.  */
  23.  
  24. #ifndef    __STRICT_ANSI__
  25.  
  26. #ifndef _DIRENT_H_
  27. #define _DIRENT_H_
  28.  
  29. /* All the headers include this file. */
  30. #include <_mingw.h>
  31.  
  32. #include <io.h>
  33.  
  34. #ifndef RC_INVOKED
  35.  
  36. #ifdef __cplusplus
  37. extern "C" {
  38. #endif
  39.  
  40. struct dirent
  41. {
  42.     long        d_ino;        /* Always zero. */
  43.     unsigned short    d_reclen;    /* Always zero. */
  44.     unsigned short    d_namlen;    /* Length of name in d_name. */
  45.     char*        d_name;        /* File name. */
  46.     /* NOTE: The name in the dirent structure points to the name in the
  47.      *       finddata_t structure in the DIR. */
  48. };
  49.  
  50. /*
  51.  * This is an internal data structure. Good programmers will not use it
  52.  * except as an argument to one of the functions below.
  53.  */
  54. typedef struct
  55. {
  56.     /* disk transfer area for this dir */
  57.     struct _finddata_t    dd_dta;
  58.  
  59.     /* dirent struct to return from dir (NOTE: this makes this thread
  60.      * safe as long as only one thread uses a particular DIR struct at
  61.      * a time) */
  62.     struct dirent        dd_dir;
  63.  
  64.     /* _findnext handle */
  65.     long            dd_handle;
  66.  
  67.     /*
  68.          * Status of search:
  69.      *   0 = not started yet (next entry to read is first entry)
  70.      *  -1 = off the end
  71.      *   positive = 0 based index of next entry
  72.      */
  73.     short            dd_stat;
  74.  
  75.     /* given path for dir with search pattern (struct is extended) */
  76.     char            dd_name[1];
  77. } DIR;
  78.  
  79.  
  80. DIR*        opendir (const char* szPath);
  81. struct dirent*    readdir (DIR* dir);
  82. int        closedir (DIR* dir);
  83. void        rewinddir (DIR* dir);
  84. long        telldir (DIR* dir);
  85. void        seekdir (DIR* dir, long lPos);
  86.  
  87. #ifdef    __cplusplus
  88. }
  89. #endif
  90.  
  91. #endif    /* Not RC_INVOKED */
  92.  
  93. #endif    /* Not _DIRENT_H_ */
  94.  
  95. #endif    /* Not __STRICT_ANSI__ */
  96.  
  97.