home *** CD-ROM | disk | FTP | other *** search
- /*-----------------------------------------------------------------------*
- * filename - makepath.c
- *
- * function(s)
- * _makepath - make new filename
- *-----------------------------------------------------------------------*/
-
- /*
- * C/C++ Run Time Library - Version 5.0
- *
- * Copyright (c) 1987, 1992 by Borland International
- * All Rights Reserved.
- *
- */
-
-
- #include <string.h>
-
- /*---------------------------------------------------------------------*
-
- Name _makepath - makes new file name
-
- Usage #include <stdlib.h>
- void _makepath(char *path, const char * drive, const char * dir,
- const char * name, const char * ext);
-
- Related
- functions usage void _splitpath(const char *path, char *drive, char *dir,
- char *name, char *ext);
-
- Prototype in stdlib.h
-
- Description _makepath makes a file name from its components. The
- new file's full path name is
-
- X:\DIR\SUBDIR\NAME.EXT
-
- where
-
- X is given by drive
- \DIR\SUBDIR\ is given by dir
- NAME.EXT is given by name and ext
-
- If the drive, dir, name, or ext parameters are null or empty,
- they are not inserted in the path string. Otherwise, if
- the drive doesn't end a colon, one is inserted in the path.
- If the dir doesn't end in a slash, one is inserted in the
- path. If the ext doesn't start with a dot, one is inserted
- in the path.
-
- The maximum sizes for the path string is given by the
- constant _MAX_PATH (defined in stdlib.h), which includes space
- for the null-terminator.
-
- _splitpath and _makepath are invertible; if you split a given
- path with _splitpath, then merge the resultant components
- with _makepath, you end up with path.
-
- Return value None
-
- *---------------------------------------------------------------------*/
-
- void _FARFUNC _makepath(register char *pathP,
- const char *driveP,
- const char *dirP,
- const char *nameP,
- const char *extP
- )
- {
- if (driveP && *driveP)
- {
- *pathP++ = *driveP++;
- *pathP++ = ':';
- }
- if (dirP && *dirP)
- {
- pathP = _stpcpy(pathP,dirP);
- if (*(pathP-1) != '\\' && *(pathP-1) != '/') *pathP++ = '\\';
- }
- if (nameP)
- pathP = _stpcpy(pathP,nameP);
- if (extP && *extP)
- {
- if (*extP != '.') *pathP++ = '.';
- pathP = _stpcpy(pathP,extP);
- }
- *pathP = 0;
- }
-