home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume11 / mtools / part01 / isdir.c < prev    next >
C/C++ Source or Header  |  1987-08-27  |  917b  |  46 lines

  1. /*
  2.  * Test to see if a filename is a directory.  Subdir() has to be
  3.  * run first...  Returns 1 if true.
  4.  */
  5.  
  6. #include <stdio.h>
  7. #include "msdos.h"
  8.  
  9. extern int dir_entries;
  10.  
  11. int
  12. isdir(path)
  13. char *path;
  14. {
  15.     int entry;
  16.     char *newname, *unixname(), *strncpy(), name[9], ext[4];
  17.     struct directory *dir, *search();
  18.                     /* no path */
  19.     if (*path == NULL)
  20.         return(0);
  21.  
  22.     for (entry=0; entry<dir_entries; entry++) {
  23.         dir = search(entry);
  24.                     /* if empty */
  25.         if (dir->name[0] == NULL)
  26.             break;
  27.                     /* if erased */
  28.         if (dir->name[0] == 0xe5)
  29.             continue;
  30.                     /* skip if not a directory */
  31.         if (!(dir->attr & 0x10))
  32.             continue;
  33.         strncpy(name, dir->name, 8);
  34.         name[8] = NULL;
  35.         strncpy(ext, dir->ext, 3);
  36.         ext[3] = NULL;
  37.         newname = unixname(name, ext);
  38.         if (!strcmp(newname, path))
  39.             return(1);
  40.     }
  41.                     /* if "." or ".." fails, then root */
  42.     if (!strcmp(path, ".") || !strcmp(path, ".."))
  43.         return(1);
  44.     return(0);
  45. }
  46.