Guido van Rossum | d4d7728 | 1994-08-19 10:51:31 +0000 | [diff] [blame] | 1 | /* Chdir for the Macintosh. |
| 2 | Public domain by Guido van Rossum, CWI, Amsterdam (July 1987). |
| 3 | Pathnames must be Macintosh paths, with colons as separators. */ |
| 4 | |
| 5 | #include "macdefs.h" |
| 6 | |
Guido van Rossum | bcf3b56 | 1995-02-20 23:41:35 +0000 | [diff] [blame] | 7 | /* Last directory used by Standard File */ |
| 8 | #define SFSaveDisk (*(short *)0x214) |
| 9 | #define CurDirStore (*(long *)0x398) |
| 10 | |
Guido van Rossum | d4d7728 | 1994-08-19 10:51:31 +0000 | [diff] [blame] | 11 | /* Change current directory. */ |
| 12 | |
| 13 | int |
| 14 | chdir(path) |
| 15 | char *path; |
| 16 | { |
| 17 | WDPBRec pb; |
Guido van Rossum | d4d7728 | 1994-08-19 10:51:31 +0000 | [diff] [blame] | 18 | |
Jack Jansen | 67132b3 | 1995-01-18 13:55:41 +0000 | [diff] [blame] | 19 | pb.ioNamePtr= (StringPtr) Pstring(path); |
Guido van Rossum | d4d7728 | 1994-08-19 10:51:31 +0000 | [diff] [blame] | 20 | pb.ioVRefNum= 0; |
| 21 | pb.ioWDDirID= 0; |
| 22 | if (PBHSetVol(&pb, FALSE) != noErr) { |
| 23 | errno= ENOENT; |
| 24 | return -1; |
| 25 | } |
Guido van Rossum | bcf3b56 | 1995-02-20 23:41:35 +0000 | [diff] [blame] | 26 | if (PBHGetVol(&pb, FALSE) == noErr) { |
| 27 | /* Set the Standard File directory */ |
| 28 | SFSaveDisk= -pb.ioWDVRefNum; |
| 29 | CurDirStore= pb.ioWDDirID; |
| 30 | } |
Guido van Rossum | d4d7728 | 1994-08-19 10:51:31 +0000 | [diff] [blame] | 31 | return 0; |
| 32 | } |