mirror of
https://github.com/reactos/reactos.git
synced 2024-10-23 14:36:11 +00:00
- Fixed _(w)splitpath.
svn path=/trunk/; revision=5451
This commit is contained in:
parent
fcd871c119
commit
0d5b332d52
|
@ -12,40 +12,41 @@ void _splitpath(const char* path, char* drive, char* dir, char* fname, char* ext
|
||||||
char* tmp_ext;
|
char* tmp_ext;
|
||||||
|
|
||||||
tmp_drive = (char*)strchr(path,':');
|
tmp_drive = (char*)strchr(path,':');
|
||||||
if ( tmp_drive != (char*)NULL ) {
|
if (drive) {
|
||||||
strncpy(drive,tmp_drive-1,1);
|
if (tmp_drive) {
|
||||||
*(drive+1) = 0;
|
strncpy(drive,tmp_drive-1,2);
|
||||||
|
*(drive+2) = 0;
|
||||||
|
} else {
|
||||||
|
*drive = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
if (!tmp_drive) {
|
||||||
*drive = 0;
|
tmp_drive = (char*)path - 1;
|
||||||
tmp_drive = (char*)path;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
tmp_dir = (char*)strrchr(path,'\\');
|
tmp_dir = (char*)strrchr(path,'\\');
|
||||||
// if( tmp_dir != NULL && tmp_dir != tmp_drive + 1 ) {
|
if (dir) {
|
||||||
if( tmp_dir != NULL ) {
|
if (tmp_dir) {
|
||||||
strncpy(dir,tmp_drive+1,tmp_dir - tmp_drive);
|
strncpy(dir,tmp_drive+1,tmp_dir-tmp_drive);
|
||||||
*(dir + (tmp_dir - tmp_drive)) = 0;
|
*(dir+(tmp_dir-tmp_drive)) = 0;
|
||||||
|
} else {
|
||||||
|
*dir =0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
*dir =0;
|
|
||||||
|
|
||||||
tmp_ext = ( char* )strrchr(path,'.');
|
tmp_ext = (char*)strrchr(path,'.');
|
||||||
if ( tmp_ext != NULL ) {
|
if (!tmp_ext) {
|
||||||
|
tmp_ext = (char*)path+strlen(path);
|
||||||
|
}
|
||||||
|
if (ext) {
|
||||||
strcpy(ext,tmp_ext);
|
strcpy(ext,tmp_ext);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
if (tmp_dir) {
|
||||||
*ext = 0;
|
strncpy(fname,tmp_dir+1,tmp_ext-tmp_dir-1);
|
||||||
tmp_ext = (char*)path+strlen(path);
|
*(fname+(tmp_ext-tmp_dir-1)) = 0;
|
||||||
}
|
} else {
|
||||||
if ( tmp_dir != NULL ) {
|
strncpy(fname,tmp_drive+1,tmp_ext-tmp_drive-1);
|
||||||
strncpy(fname,tmp_dir+1,tmp_ext - tmp_dir - 1);
|
|
||||||
*(fname + (tmp_ext - tmp_dir -1)) = 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
strncpy(fname,path,tmp_ext - path);
|
|
||||||
*(fname+(tmp_ext-path))=0;
|
*(fname+(tmp_ext-path))=0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,40 +12,40 @@ void _wsplitpath(const wchar_t* path, wchar_t* drive, wchar_t* dir, wchar_t* fna
|
||||||
wchar_t* tmp_ext;
|
wchar_t* tmp_ext;
|
||||||
|
|
||||||
tmp_drive = (wchar_t*)wcschr(path,L':');
|
tmp_drive = (wchar_t*)wcschr(path,L':');
|
||||||
if ( tmp_drive != (wchar_t*)NULL ) {
|
if (drive) {
|
||||||
wcsncpy(drive,tmp_drive-1,1);
|
if (tmp_drive) {
|
||||||
*(drive+1) = 0;
|
wcsncpy(drive,tmp_drive-1,2);
|
||||||
|
*(drive+2) = 0;
|
||||||
|
} else {
|
||||||
|
*drive = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
if (!tmp_drive) {
|
||||||
*drive = 0;
|
tmp_drive = (wchar_t*)path - 1;
|
||||||
tmp_drive = (wchar_t*)path;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
tmp_dir = (wchar_t*)wcsrchr(path,L'\\');
|
tmp_dir = (wchar_t*)wcsrchr(path,L'\\');
|
||||||
if( tmp_dir != NULL && tmp_dir != tmp_drive + 1 ) {
|
if (dir) {
|
||||||
wcsncpy(dir,tmp_drive+1,tmp_dir - tmp_drive);
|
if (tmp_dir) {
|
||||||
*(dir + (tmp_dir - tmp_drive)) = 0;
|
wcsncpy(dir,tmp_drive+1,tmp_dir-tmp_drive);
|
||||||
|
*(dir+(tmp_dir-tmp_drive)) = 0;
|
||||||
|
} else
|
||||||
|
*dir =0;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
*dir =0;
|
|
||||||
|
|
||||||
tmp_ext = (wchar_t*)wcsrchr(path,L'.');
|
tmp_ext = (wchar_t*)wcsrchr(path,L'.');
|
||||||
if ( tmp_ext != NULL ) {
|
if (!tmp_ext) {
|
||||||
|
tmp_ext = (wchar_t*)path+wcslen(path);
|
||||||
|
}
|
||||||
|
if (ext) {
|
||||||
wcscpy(ext,tmp_ext);
|
wcscpy(ext,tmp_ext);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
*ext = 0;
|
|
||||||
tmp_ext = (wchar_t*)path+wcslen(path);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( tmp_dir != NULL ) {
|
if (tmp_dir) {
|
||||||
wcsncpy(fname,tmp_dir+1,tmp_ext - tmp_dir - 1);
|
wcsncpy(fname,tmp_dir+1,tmp_ext-tmp_dir-1);
|
||||||
*(fname + (tmp_ext - tmp_dir -1)) = 0;
|
*(fname+(tmp_ext-tmp_dir-1)) = 0;
|
||||||
}
|
} else {
|
||||||
else
|
wcsncpy(fname,tmp_drive+1,tmp_ext-tmp_drive-1);
|
||||||
{
|
|
||||||
wcsncpy(fname,path,tmp_ext - path);
|
|
||||||
*(fname+(tmp_ext-path))=0;
|
*(fname+(tmp_ext-path))=0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,44 +4,49 @@
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
void _splitpath( const char *path, char *drive, char *dir, char *fname, char *ext )
|
void _splitpath(const char* path, char* drive, char* dir, char* fname, char* ext)
|
||||||
{
|
{
|
||||||
char *tmp_drive;
|
char* tmp_drive;
|
||||||
char *tmp_dir;
|
char* tmp_dir;
|
||||||
char *tmp_ext;
|
char* tmp_ext;
|
||||||
|
|
||||||
tmp_drive = (char *)strchr(path,':');
|
tmp_drive = (char*)strchr(path,':');
|
||||||
if ( tmp_drive != (char *)NULL ) {
|
if (drive) {
|
||||||
strncpy(drive,tmp_drive-1,1);
|
if (tmp_drive) {
|
||||||
*(drive+1) = 0;
|
strncpy(drive,tmp_drive-1,2);
|
||||||
}
|
*(drive+2) = 0;
|
||||||
else {
|
} else {
|
||||||
*drive = 0;
|
*drive = 0;
|
||||||
tmp_drive = (char *)path;
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
if (!tmp_drive) {
|
||||||
|
tmp_drive = (char*)path - 1;
|
||||||
|
}
|
||||||
|
|
||||||
tmp_dir = (char *)strrchr(path,'\\');
|
tmp_dir = (char*)strrchr(path,'\\');
|
||||||
// if( tmp_dir != NULL && tmp_dir != tmp_drive + 1 )
|
if (dir) {
|
||||||
if( tmp_dir != NULL )
|
if (tmp_dir) {
|
||||||
{
|
strncpy(dir,tmp_drive+1,tmp_dir-tmp_drive);
|
||||||
strncpy(dir,tmp_drive+1,tmp_dir - tmp_drive);
|
*(dir+(tmp_dir-tmp_drive)) = 0;
|
||||||
*(dir + (tmp_dir - tmp_drive)) = 0;
|
} else {
|
||||||
|
*dir =0;
|
||||||
}
|
}
|
||||||
else
|
}
|
||||||
*dir =0;
|
|
||||||
|
|
||||||
tmp_ext = ( char *)strrchr(path,'.');
|
tmp_ext = (char*)strrchr(path,'.');
|
||||||
if ( tmp_ext != NULL ) {
|
if (!tmp_ext) {
|
||||||
strcpy(ext,tmp_ext);
|
tmp_ext = (char*)path+strlen(path);
|
||||||
}
|
}
|
||||||
else
|
if (ext) {
|
||||||
*ext = 0;
|
strcpy(ext,tmp_ext);
|
||||||
if ( tmp_dir != NULL ) {
|
}
|
||||||
strncpy(fname,tmp_dir+1,tmp_ext - tmp_dir - 1);
|
|
||||||
*(fname + (tmp_ext - tmp_dir -1)) = 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
strncpy(fname,path,tmp_ext - path);
|
|
||||||
|
|
||||||
|
if (tmp_dir) {
|
||||||
|
strncpy(fname,tmp_dir+1,tmp_ext-tmp_dir-1);
|
||||||
|
*(fname+(tmp_ext-tmp_dir-1)) = 0;
|
||||||
|
} else {
|
||||||
|
strncpy(fname,tmp_drive+1,tmp_ext-tmp_drive-1);
|
||||||
|
*(fname+(tmp_ext-path))=0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue