home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume18 / vtree / direct.c < prev    next >
Encoding:
C/C++ Source or Header  |  1989-04-19  |  1.0 KB  |  51 lines

  1. /* direct.c
  2.   
  3.    SCCS ID    @(#)direct.c    1.6    7/9/87
  4.   
  5.  *
  6.  *    My own substitution for the berkeley reading routines,
  7.  *    for use on System III machines that don't have any other
  8.  *    alternative.
  9.  */
  10.  
  11. #define NAMELENGTH    14
  12. #ifdef    SYS_III
  13.     FILE    *opendir(name)    { return (fopen(name,"r") ); }
  14. #else
  15.     #define opendir(name)    fopen(name, "r")
  16. #endif
  17. #define closedir(fp)    fclose(fp)
  18.  
  19. struct dir_entry {        /* What the system uses internally. */
  20.     ino_t           d_ino;
  21.     char            d_name[NAMELENGTH];
  22. };
  23.  
  24. struct direct {            /* What these routines return. */
  25.     ino_t           d_ino;
  26.     char            d_name[NAMELENGTH];
  27.     char            terminator;
  28. };
  29.  
  30.  
  31.  /*
  32.   * Read a directory, returning the next (non-empty) slot. 
  33.   */
  34.  
  35. READ           *
  36. readdir(dp)
  37.     OPEN           *dp;
  38. {
  39.     static READ     direct;
  40.  
  41.     /* This read depends on direct being similar to dir_entry. */
  42.  
  43.     while (fread(&direct, sizeof(struct dir_entry), 1, dp) != 0) {
  44.     direct.terminator = '\0';
  45.     if (INO(direct) != 0)
  46.         return &direct;
  47.     };
  48.  
  49.     return (READ *) NULL;
  50. }
  51.