home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 011.lha / tool_wrapper / mkpath.c < prev    next >
C/C++ Source or Header  |  1986-11-10  |  854b  |  40 lines

  1. /* mkpath -- Makes a pathname from an AmigaDOS "lock".
  2.    M. Zellers & M. Abel, August 1986
  3. */
  4.  
  5. #include <libraries/dos.h>
  6.  
  7. #define MMOVE(from, to) { register char *fptr; \
  8.                           for (fptr = from; (*to++ = *fptr++) ; ) ;--to; }
  9.  
  10. char *mkpath(lock, result)
  11.  
  12. LONG lock, ParentDir(), Examine();
  13. void UnLock();
  14. char *result;
  15.  
  16. {
  17.    struct FileInfoBlock  myfib;
  18.    LONG                  parent;
  19.  
  20.    if (Examine(lock, &myfib)) {
  21.       parent = ParentDir(lock);
  22.       if (parent == 0) {
  23.  
  24.          MMOVE(myfib.fib_FileName, result);
  25.          *result++ = ':';
  26.          *result = '\0';
  27.          return(result);
  28.  
  29.       } else {
  30.  
  31.          result = mkpath(parent, result);
  32.          MMOVE(myfib.fib_FileName, result);
  33.          *result++ = '/';
  34.          *result = '\0';
  35.          UnLock(parent);
  36.          return(result);
  37.       }
  38.    } else exit(1);
  39. }
  40.