home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / win3 / nt / source.exe / POSIX / BSDPSX / TELLDIR.C < prev    next >
C/C++ Source or Header  |  1993-08-14  |  1KB  |  53 lines

  1. #include <sys/types.h>
  2. #include <dirent.h>
  3.  
  4. //Added by TimC
  5. #include <unistd.h>
  6.  
  7. long telldir(DIR *dirp)
  8. {
  9.     char
  10.         origDirName[NAME_MAX+1];
  11.     long
  12.         direntSize,
  13.         offset;
  14.  
  15.     struct dirent 
  16.         *origDirEntry,    
  17.         *varDirEntry;
  18.  
  19. puts("in telldir");
  20.     origDirEntry = readdir(dirp);
  21.     strcpy(origDirName, origDirEntry->d_name);
  22.     rewinddir(dirp);
  23.     
  24.     varDirEntry = readdir(dirp);
  25.     direntSize = sizeof(struct dirent);     
  26.     offset = 0;
  27.  
  28.     if(origDirEntry == NULL) { 
  29. puts("in origDirEntry");
  30.         while(varDirEntry != NULL){ //End of directory
  31.             varDirEntry = readdir(dirp);
  32.             offset += direntSize;
  33.         }
  34.     }                    
  35.     else {
  36. //puts("in else origDirEntry");
  37. //printf("orig X%sX var X%sX\n", origDirName, varDirEntry->d_name);
  38.         while(strcmp(origDirName, varDirEntry->d_name) &&
  39.             varDirEntry != NULL) {
  40. //printf("orig X%sX var X%sX\n", origDirName, varDirEntry->d_name);
  41.             varDirEntry = readdir(dirp);
  42.             offset += direntSize;
  43.         }
  44.     }
  45.     
  46.     if(offset > 0) //Do if telldir points to current dir obj.
  47.         offset -= direntSize;
  48. printf("offset = X%dX\n", offset);
  49.  
  50.     seekdir(dirp, offset);    
  51.     return(offset);
  52. }
  53.