Fixed bug in _makepath().

Patch by Hartmut Birr.

svn path=/trunk/; revision=2073
This commit is contained in:
Eric Kohl 2001-07-19 18:41:09 +00:00
parent e6063f185b
commit 20a0131534
2 changed files with 54 additions and 74 deletions

View file

@ -1,30 +1,34 @@
#include <crtdll/stdlib.h> #include <crtdll/stdlib.h>
#include <crtdll/string.h> #include <crtdll/string.h>
void _makepath( char *path, const char *drive, const char *dir, const char *fname, const char *ext ) void _makepath(char *path, const char *drive, const char *dir, const char *fname, const char *ext)
{ {
int dir_len; int dir_len;
if ( drive != NULL && (*drive)) {
strcpy(path,drive);
strcat(path,":");
}
else
(*path)=0;
if ( dir != NULL ) { if ((drive != NULL) && (*drive))
strcat(path,dir); {
if ( *dir != '\\' ) strcpy(path, drive);
strcat(path,"\\"); strcat(path, ":");
dir_len = strlen(dir); }
if ( dir_len && *(dir + dir_len - 1) != '\\' ) else
strcat(path,"\\"); (*path)=0;
}
if ( fname != NULL ) { if (dir != NULL)
strcat(path,fname); {
if ( ext != NULL ) { strcat(path, dir);
if ( *ext != '.') dir_len = strlen(dir);
strcat(path,"."); if (dir_len && *(dir + dir_len - 1) != '\\')
strcat(path,ext); strcat(path, "\\");
} }
if (fname != NULL)
{
strcat(path, fname);
if (ext != NULL)
{
if (*ext != '.')
strcat(path, ".");
strcat(path, ext);
} }
}
} }

View file

@ -1,58 +1,34 @@
#include <msvcrt/stdlib.h> #include <msvcrt/stdlib.h>
#include <msvcrt/string.h> #include <msvcrt/string.h>
void _makepath( char *path, const char *drive, const char *dir, const char *fname, const char *ext ) void _makepath(char *path, const char *drive, const char *dir, const char *fname, const char *ext)
{ {
int dir_len; int dir_len;
if ( drive != NULL && (*drive)) {
strcpy(path,drive);
strcat(path,":");
}
else
(*path)=0;
if ( dir != NULL ) { if ((drive != NULL) && (*drive))
strcat(path,dir); {
if ( *dir != '\\' ) strcpy(path, drive);
strcat(path,"\\"); strcat(path, ":");
dir_len = strlen(dir); }
if ( dir_len && *(dir + dir_len - 1) != '\\' ) else
strcat(path,"\\"); (*path)=0;
}
if ( fname != NULL ) { if (dir != NULL)
strcat(path,fname); {
if ( ext != NULL ) { strcat(path, dir);
if ( *ext != '.') dir_len = strlen(dir);
strcat(path,"."); if (dir_len && *(dir + dir_len - 1) != '\\')
strcat(path,ext); strcat(path, "\\");
} }
}
} if (fname != NULL)
{
void _wmakepath( wchar_t *path, const wchar_t *drive, const wchar_t *dir, const wchar_t *fname, const wchar_t *ext ) strcat(path, fname);
{ if (ext != NULL)
int dir_len; {
if ( drive != NULL && (*drive)) { if (*ext != '.')
wcscpy(path,drive); strcat(path, ".");
wcscat(path,L":"); strcat(path, ext);
}
else
(*path)=0;
if ( dir != NULL ) {
wcscat(path,dir);
if ( *dir != L'\\' )
wcscat(path,L"\\");
dir_len = wcslen(dir);
if ( dir_len && *(dir + dir_len - 1) != L'\\' )
wcscat(path,L"\\");
}
if ( fname != NULL ) {
wcscat(path,fname);
if ( ext != NULL ) {
if ( *ext != L'.')
wcscat(path,L".");
wcscat(path,ext);
}
} }
}
} }