home *** CD-ROM | disk | FTP | other *** search
-
- #include <errno.h>
- #include <memory.h>
- #include <pb.h>
- #include <aztec/shell.h>
-
- #define _DEBUG
- #include <max/debug.h>
- #ifdef TEST
- #include <stdio.h>
- #endif
-
- #ifndef NULL
- #define NULL 0L
- #endif
-
- chdir( path )
- char * path;
- {
-
- char npath[255];
- CInfoPBRec cpb;
- int err;
- register char * cp;
-
-
- /* fix name, and get volume reference number */
-
-
- cpb.ioVRefNum = hfixnam( path, npath );
-
- #ifdef TEST
- fprintf( stderr, "opendir: %s\n", npath );
- #endif
-
- cpb.ioNamePtr = ctop( npath );
- cpb.ioFDirIndex = 0;
- cpb.u.di.ioDrDirID = 0L;
- if ((err = PBGetCatInfo( &cpb, 0 )) != 0 ) {
- #ifdef TEST
- fprintf( stderr, "setdir: PBGetCatInfo %d\n", err );
- #endif
- return ENOENT;
- }
-
- /* resize handle */
-
- ptoc( npath );
- strcpy( npath, index( npath, ':' )+1 );
-
- while ((cp = index( npath, ':' )) != NULL )
- *cp = '/';
-
- #ifdef TEST
- fprintf( stderr, "chdir: setting curdir to \"%s\"\n", npath );
- #endif
-
- SetHandleSize( Sp->curdir, (long)(strlen( npath )+2));
-
- if (MemError() != 0)
- return ENOMEM;
-
- strcpy( *Sp->curdir, npath );
-
- return 0;
-
- }
-
- #ifdef TEST
- main()
- {
- char command[100];
-
- gets( command );
- fprintf( stderr, "%d\n", chdir( command ));
- }
-
- #endif
-
-