| /* Chdir for the Macintosh. |
| Public domain by Guido van Rossum, CWI, Amsterdam (July 1987). |
| Pathnames must be Macintosh paths, with colons as separators. */ |
| |
| #include "macdefs.h" |
| |
| #ifdef __MWERKS__ |
| /* XXXX All compilers should use this, really */ |
| #include <LowMem.h> |
| #else |
| /* Last directory used by Standard File */ |
| #define SFSaveDisk (*(short *)0x214) |
| #define CurDirStore (*(long *)0x398) |
| #endif |
| |
| /* Change current directory. */ |
| |
| int |
| chdir(path) |
| char *path; |
| { |
| WDPBRec pb; |
| |
| pb.ioNamePtr= (StringPtr) Pstring(path); |
| pb.ioVRefNum= 0; |
| pb.ioWDDirID= 0; |
| if (PBHSetVol(&pb, FALSE) != noErr) { |
| errno= ENOENT; |
| return -1; |
| } |
| if (PBHGetVol(&pb, FALSE) == noErr) { |
| /* Set the Standard File directory */ |
| #ifdef __MWERKS__ |
| LMSetSFSaveDisk(-pb.ioWDVRefNum); |
| LMSetCurDirStore(pb.ioWDDirID); |
| #else |
| SFSaveDisk= -pb.ioWDVRefNum; |
| CurDirStore= pb.ioWDDirID; |
| #endif |
| } |
| return 0; |
| } |