home *** CD-ROM | disk | FTP | other *** search
/ The Fred Fish Collection 1.5 / ffcollection-1-5-1992-11.iso / ff_disks / 300-399 / ff384.lzh / NorthC / Example2.LZH / Script / dirs.c < prev    next >
C/C++ Source or Header  |  1990-09-10  |  2KB  |  75 lines

  1. /*  (c) 1990 S.Hawtin.
  2.   Permission is granted to copy this file provided
  3.    1) It is not used for commercial gain
  4.    2) This notice is included in all copies
  5.    3) Altered copies are marked as such
  6.  
  7.   No liability is accepted for the contents of the file.
  8.  
  9. */
  10.  
  11. #include <stdio.h>
  12. #include <libraries/dos.h>
  13.  
  14. typedef void *lockPtr;
  15.  
  16. extern lockPtr CurrentDir();
  17. extern lockPtr Lock();
  18.  
  19. static struct FileInfoBlock mydata;
  20.  
  21. findDirs(dir,disk,length)
  22.     char *dir;
  23.     char *disk;
  24.     int  length;
  25.    {/* Work out the name of the current directory */
  26.  
  27.     lockPtr current;
  28.     lockPtr parent,wasparent;
  29.     int first;
  30.  
  31.     *dir = '\0';
  32.     first = 1;
  33.     parent = Lock("/",ACCESS_READ);
  34.     while(parent!=NULL)
  35.        {
  36.         wasparent = CurrentDir(parent);
  37.  
  38.         Examine(wasparent,&mydata);
  39.         strcpy(disk,dir);
  40.         strcpy(dir,mydata.fib_FileName);
  41.         strcat(dir,"/");
  42.         strcat(dir,disk);
  43.  
  44.         if(first)
  45.            {current = wasparent;
  46.             first = 0;
  47.             }
  48.           else
  49.            {
  50.             UnLock(wasparent);
  51.             }
  52.         parent = Lock("/",ACCESS_READ);
  53.         }
  54.  
  55.     /* We must be at the root of the disk */
  56.     if(first)
  57.        {/* We were at the root of the disk already! */
  58.         wasparent = Lock(":",ACCESS_READ);
  59.         }
  60.       else
  61.         wasparent = CurrentDir(current);
  62.  
  63.     Examine(wasparent,&mydata);
  64.  
  65.     strcpy(disk,dir);
  66.     strcpy(dir,mydata.fib_FileName);
  67.     strcat(dir,":");
  68.     strcat(dir,disk);
  69.     strcpy(disk,mydata.fib_FileName);
  70.     strcat(disk,":");
  71.  
  72.     UnLock(wasparent);
  73.     }
  74.  
  75.