#include #include #include #ifdef TEST #include #endif #ifndef NULL #define NULL 0L #endif /*------------------------------------------------------------------*/ /* chdir(path): make path the current directory. Return Ok/Not */ /*------------------------------------------------------------------*/ int chdir( path ) char *path; { register struct Lock *lock; struct Lock *oldLock; #ifdef TEST fprintf( stderr, "Changing to directory \"%s\"\n\n", path ); #endif if ( *path == '\0' ) return 0; lock = Lock( path, ACCESS_READ ); if ( lock == 0L ) return (int)IoErr(); oldLock = CurrentDir( lock ); if ( oldLock ) UnLock( oldLock ); return 0; } #ifdef TEST main() { char command[108]; FILE *f; gets( command ); fprintf( stderr, "%d\n", chdir( command )); if (f = fopen("abc", "r")) { fprintf( stderr, "Opened Ok!\n"); fclose( f ); } else fprintf( stderr, "Can't open abc\n"); exit( 0 ); } #endif