[Home]
[Search]
[Contents]
direct.h
errno.h (for error messages)
Prototype
int _chdir(char *path);
Description
The _chdir function changes the current directory to the one specified in the path argument. path must be a valid directory. The function can change the current working directory on any drive; however, it cannot change the default drive itself. For example, if you specify a drive in the path argument, the current directory on that drive is changed. However, until you use the _chdrive function to change to the new drive, the default directory is the current directory on the current drive.
The path string is limited by DOS to 64 characters including the terminal '\0'.
Synonym
Function: chdir
Return Value
0 if successful. Otherwise, -1 is returned, _doserrno is set to the operating system error code, and errno is set to the corresponding standard error code.
Compatibility
DOS Windows 3.x Phar Lap DOSX Win32
See Also
Example
/* Example for _chdir */
#include <direct.h>
#include <stdio.h>
#include <stdlib.h>
void main()
{
char changeto[64];
int result;
printf ("Enter directory to change to :");
scanf ("%s", changeto);
result = _chdir(changeto);
if (result != 0)
perror ("ERROR changing directory");
else
printf ("Current directory now :%s\n",
changeto);
}
Output
Enter directory to change to :c:\windows
Current directory now :c:\windows
or
Enter directory to change to :c:\junk
ERROR changing directory: No such file or
directory
direct.h
Prototype
int _chdrive(int drive);
Description
The _chdrive function changes the current drive to the drive specified in the drive argument. To specify a drive, use an integer. Value 1 indicates drive A, 2 indicates drive B, and so on. The _chdrive function changes only the working drive; use _chdir to change the current working directory.
Return Value
If the drive is successfully changed, the function returns the value 0. Otherwise, the function returns -1.
Compatibility
DOS Windows 3.x Phar Lap DOSX Win32
See Also
_chdir
_dos_getdrive
_dos_setdrive
_getdrive
Example
/* Example for _chdrive */
#include <direct.h>
#include <stdio.h>
#include <stdlib.h>
void main()
{
if (_chdrive(2) == 0)
printf ("Changed to drive C:\n");
else
perror("ERROR changing to drive C:");
}
Output
Changed to drive C:
direct.h
Prototype
char *_getcwd(char *buffer, size_t length);
Description
The _getcwd functions get the name of the current working directory and stores the drive and path name in buffer. The length argument specifies the maximum length of the path name (including the terminating null character.) If the current directory is root, the returned string will end with a backslash. Otherwise, the string will end with the directory name, not a backslash.
If buffer is specified as NULL, _getcwd will allocate, using the malloc function, enough bytes to hold the path (including the terminating 0). At least length bytes will be allocated. To deallocate the buffer, use the free function.
Synonyom
Function: getcwd
Return Value
Both functions return a pointer to buffer. A NULL return value indicates an error and errno is set to ENOMEM (insufficient memory to allocate length bytes) or ERANGE (path name longer than length characters).
Compatibility
DOS Windows 3.x Phar Lap DOSX Win32
See Also
Example
/* Example for _getcwd */
#include <stdio.h>
#include <stdlib.h>
#include <direct.h>
void main ()
{
char path[_MAX_DIR];
_getcwd (path, _MAX_DIR);
printf ("Current directory is: %s", path);
}
Output
Current directory is: C:\SC\EXAMPLES
direct.h
Prototype
int _getdrive(void);
Description
The getdrive function returns the current drive number, where 1 represents A, 2 represents B, and so on.
Synonym
Function: getdrive
Return Value
An integer representing the current drive number. Errors are not returned.
Compatibility
DOS Windows 3.x Phar Lap DOSX Win32
See Also
_dos_getdrive
_dos_getdrive
_getdcwd
Example
/* Example for _getdrive */
#include <direct.h>
#include <stdio.h>
void main ()
{
int disk;
disk = _getdrive() + 'A' -1;
printf("The current drive is %c\n", disk);
}
Output
The current drive is C
direct.h
Prototype
int _mkdir(const char *pathname);
Description
The _mkdir function creates a new directory as specified by the pathname argument. If pathname contains more than one directory component, only the last component may be new. All preceding components must refer to existing directories.
Synonym
Function: mkdir
Return Value
Returns a 0 if the directory was created successfully. Returns -1 if an error occurred, and errno is set to EACCES (directory not created; given name already exists) or ENOENT (path name not found).
Compatibility
DOS Windows 3.x Phar Lap DOSX Win32
See Also
Example
/* Example of _mkdir */
#include <stdio.h>
#include <direct.h>
#include <stdlib.h>
void main ()
{
int result;
result = _mkdir("\\removeme");
if (result == 0)
printf("Directory \"\\removeme\"
created\n");
else
printf("Could not create directory
\"\\removeme\"\n");
}
Output
Directory "\removeme" created
direct.h
Prototype
int _rmdir(const char *pathname);
Description
The _rmdir function deletes the directory specified by the pathname argument. The directory must be empty and cannot be the root directory or the current working directory. All the intermediate directories must also exist.
Synonym
Function: rmdir
Return Value
Both functions return a 0 if the directory was deleted. A return value of -1 indicates an error and errno is set to EACCES or ENOENT.
Compatibility
DOS Windows 3.x Phar Lap DOSX Win32
See Also
Example
/* Example of _rmdir */
#include <stdio.h>
#include <direct.h>
#include <stdlib.h>
void main ()
{
int result;
char dir[_MAX_PATH];
printf ("Enter the directory name: ");
gets (dir);
result = _rmdir (dir);
if (result != 0)
{
perror ("Could not remove directory");
exit (EXIT_FAILURE);
}
printf ("Directory removed successfully\n");
}
Output
Enter the directory name: temp
Directory removed successfully
direct.h
Prototype
void fnmerge(char *path, const char *drive,
const char *dir, const char *name,
const char *ext);
Description
The fnmerge function builds a pathname by merging the components specified in the drive, dir, name, and ext arguments. The constructed pathname is stored in the location pointed to by the path argument.
The MAXPATH constant, defined as 80 in direct.h, specifies the maximum length of the constructed path.
Return Value
None
Compatibility
DOS Windows 3.x Phar Lap DOSX Win32
See Also
Example
/* Example for fnmerge
Also demonstrates fnsplit
*/
#include <direct.h>
#include <stdio.h>
#include <dos.h>
void main ()
{
char *filename,
path[MAXPATH],
drive[MAXDRIVE],
dir[MAXDIR],
file[MAXFILE],
ext[MAXEXT];
fnsplit ("c:\\sc\\bin\\sc. exe", drive, dir,
file, ext);
printf ("drive: %s\n"
"dir: %s\n"
"filename: %s\n"
"ext: %s\n",
drive, dir, file, ext);
fnmerge (path, drive, dir, file, ext);
printf (
"path: %s\n", path);
}
Output
drive: c: dir: \sc\bin\
filename: sc ext: .exe
path: c:\sc\bin\sc. exe
direct.h
Prototype
int fnsplit(const char *path, char *drive, char *dir, char *name, char *ext);
Description
The fnsplit function splits the pathname pointed to by the path
argument into its components. The function stores the pathname
components in the locations specified by the drive, dir, name,
and ext arguments. Each pathname component has a maximum
size, which is set by a constant, defined in direct.h. The constants
for the pathname components and their values are shown in the
following table. (All lengths include the space for a null terminator.)
Argument Constant Value path MAXPATH 80 drive MAXDRIVE 3 (includes the colon) dir MAXDIR 66 (includes leading and trailing backslashes) name MAXFILE 9 ext MAXEXT 5 (includes the leading dot)Return Value
An integer that uses the following five flags to indicate the components that were present in the path argument:
Compatibility
DOS Windows 3.x Phar Lap DOSX Win32
See Also
Example
See fnmerge
direct.h
Prototype
char *searchpath(const char *file);
Description
The searchpath function searches the DOS path for the file specified in the file argument. First, the current directory is searched. Then each directory specified in the DOS path is searched. When the file is found, the full pathname is returned.
Return Value
A pointer to the string containing the filename. If the file is not found, NULL is returned.
Compatibility
DOS Windows 3.x Phar Lap DOSX Win32
See Also
Example
/* Example for searchpath */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dir.h>
void main ()
{
char *res;
res = searchpath ("SC.EXE");
if (strlen (res) == 0)
printf ("SC.EXE not found\n");
else
printf ("SC.EXE found in %s\n", res);
}
Output
SC.EXE found in C:\SC\BIN\SC.EXE