2 Copyright © 2008-2012, The AROS Development Team. All rights reserved.
6 #include "__arosc_privdata.h"
8 #include <exec/types.h>
10 #include <proto/dos.h>
11 #include <aros/symbolsets.h>
14 #include <aros/debug.h>
16 /*****************************************************************************
27 Change the current working directory to the directory given as an open
31 fd - File descriptor of the directory to change to.
34 If the current directory was changed successfully, zero is returned.
35 Otherwise, -1 is returned and errno set apropriately.
38 At program exit, the current working directory will be changed back
39 to the one that was current when the program first started. If you
40 do not desire this behaviour, use dos.library/CurrentDir() instead.
50 ******************************************************************************/
52 struct aroscbase
*aroscbase
= __GM_GetBase();
57 if ( __get_default_file(fd
, (long*) &handle
) != 0 )
63 newlock
= DupLockFromFH(handle
);
65 if( newlock
== BNULL
)
67 errno
= __arosc_ioerr2errno( IoErr() );
70 oldlock
= CurrentDir( newlock
);
72 if( aroscbase
->acb_cd_changed
)
78 aroscbase
->acb_cd_changed
= TRUE
;
79 aroscbase
->acb_cd_lock
= oldlock
;
84 if( newlock
!= BNULL
)