home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 9 / FreshFishVol9-CD2.bin / bbs / gnu / libnix-0.8-src.lha / libnix-0.8 / sources / nix / extra / chdir.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-12-13  |  611 b   |  44 lines

  1. #include <proto/dos.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>
  4. #include <stabs.h>
  5.  
  6. extern void __seterrno(void);
  7.  
  8. static BPTR oldlock;
  9. static int havelock=0;
  10.  
  11. int chdir(const char *path)
  12. {
  13.   BPTR fl;
  14.   int ret;
  15.  
  16.   if ((fl=Lock((STRPTR)path,SHARED_LOCK)))
  17.   {
  18.     UnLock(CurrentDir(fl)); ret=0;
  19.   }
  20.   else
  21.   {
  22.     __seterrno(); ret=-1;
  23.   }
  24.   return ret;
  25. }
  26.  
  27. void __initchdir(void)
  28. {
  29.   BPTR fl;
  30.  
  31.   if (!(fl=Lock("",SHARED_LOCK)))
  32.     exit(20);
  33.   oldlock=CurrentDir(fl);
  34.   havelock=1;
  35. }
  36.  
  37. void __exitchdir(void)
  38. {
  39.   if (havelock) UnLock(CurrentDir(oldlock));
  40. }
  41.  
  42. ADD2INIT(__initchdir,-35);
  43. ADD2EXIT(__exitchdir,-35);
  44.