home *** CD-ROM | disk | FTP | other *** search
/ Shareware 1 2 the Maxx / sw_1.zip / sw_1 / PROGRAM / DJLSR106.ZIP / LIBSRC / C / DOS / DIR.C < prev    next >
C/C++ Source or Header  |  1992-03-02  |  949b  |  55 lines

  1. #include <string.h>
  2. #include <dir.h>
  3. #include <dirent.h>
  4.  
  5. DIR *opendir(char *name)
  6. {
  7.   DIR *dir = (DIR *)malloc(sizeof(DIR));
  8.   dir->num_read = 0;
  9.   dir->name = (char *)malloc(strlen(name)+5);
  10.   strcpy(dir->name, name);
  11.   strcat(dir->name, "/*.*");
  12.   return dir;
  13. }
  14.  
  15. struct dirent *readdir(DIR *dir)
  16. {
  17.   int done;
  18.   if (dir->num_read)
  19.     done = findnext(&dir->ff);
  20.   else
  21.     done = findfirst(dir->name, &dir->ff, FA_ARCH|FA_RDONLY|FA_DIREC);
  22.   if (done)
  23.     return 0;
  24.   dir->num_read ++;
  25.   dir->de.d_namlen = strlen(dir->ff.ff_name);
  26.   strcpy(dir->de.d_name,dir->ff.ff_name);
  27.   strlwr(dir->de.d_name);
  28.   return &dir->de;
  29. }
  30.  
  31. long telldir(DIR *dir)
  32. {
  33.   return dir->num_read;
  34. }
  35.  
  36. void seekdir(DIR *dir, long loc)
  37. {
  38.   int i;
  39.   rewinddir(dir);
  40.   for (i=0; i<loc; i++)
  41.     readdir(dir);
  42. }
  43.  
  44. void rewinddir(DIR *dir)
  45. {
  46.   dir->num_read = 0;
  47. }
  48.  
  49. int closedir(DIR *dir)
  50. {
  51.   free(dir->name);
  52.   free(dir);
  53. }
  54.  
  55.