char* tmp_ext;
tmp_drive = (char*)strchr(path,':');
- if ( tmp_drive != (char*)NULL ) {
- strncpy(drive,tmp_drive-1,1);
- *(drive+1) = 0;
+ if (drive) {
+ if (tmp_drive) {
+ strncpy(drive,tmp_drive-1,2);
+ *(drive+2) = 0;
+ } else {
+ *drive = 0;
+ }
}
- else {
- *drive = 0;
- tmp_drive = (char*)path;
+ if (!tmp_drive) {
+ tmp_drive = (char*)path - 1;
}
tmp_dir = (char*)strrchr(path,'\\');
-// if( tmp_dir != NULL && tmp_dir != tmp_drive + 1 ) {
- if( tmp_dir != NULL ) {
- strncpy(dir,tmp_drive+1,tmp_dir - tmp_drive);
- *(dir + (tmp_dir - tmp_drive)) = 0;
+ if (dir) {
+ if (tmp_dir) {
+ strncpy(dir,tmp_drive+1,tmp_dir-tmp_drive);
+ *(dir+(tmp_dir-tmp_drive)) = 0;
+ } else {
+ *dir =0;
+ }
}
- else
- *dir =0;
- tmp_ext = ( char* )strrchr(path,'.');
- if ( tmp_ext != NULL ) {
- strcpy(ext,tmp_ext);
- }
- else
- {
- *ext = 0;
- tmp_ext = (char*)path+strlen(path);
+ tmp_ext = (char*)strrchr(path,'.');
+ if (!tmp_ext) {
+ tmp_ext = (char*)path+strlen(path);
}
- if ( tmp_dir != NULL ) {
- strncpy(fname,tmp_dir+1,tmp_ext - tmp_dir - 1);
- *(fname + (tmp_ext - tmp_dir -1)) = 0;
+ if (ext) {
+ strcpy(ext,tmp_ext);
}
- 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;
}
}
wchar_t* tmp_ext;
tmp_drive = (wchar_t*)wcschr(path,L':');
- if ( tmp_drive != (wchar_t*)NULL ) {
- wcsncpy(drive,tmp_drive-1,1);
- *(drive+1) = 0;
+ if (drive) {
+ if (tmp_drive) {
+ wcsncpy(drive,tmp_drive-1,2);
+ *(drive+2) = 0;
+ } else {
+ *drive = 0;
+ }
}
- else {
- *drive = 0;
- tmp_drive = (wchar_t*)path;
+ if (!tmp_drive) {
+ tmp_drive = (wchar_t*)path - 1;
}
tmp_dir = (wchar_t*)wcsrchr(path,L'\\');
- if( tmp_dir != NULL && tmp_dir != tmp_drive + 1 ) {
- wcsncpy(dir,tmp_drive+1,tmp_dir - tmp_drive);
- *(dir + (tmp_dir - tmp_drive)) = 0;
+ if (dir) {
+ if (tmp_dir) {
+ 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'.');
- if ( tmp_ext != NULL ) {
- wcscpy(ext,tmp_ext);
+ if (!tmp_ext) {
+ tmp_ext = (wchar_t*)path+wcslen(path);
}
- else
- {
- *ext = 0;
- tmp_ext = (wchar_t*)path+wcslen(path);
+ if (ext) {
+ wcscpy(ext,tmp_ext);
}
- if ( tmp_dir != NULL ) {
- wcsncpy(fname,tmp_dir+1,tmp_ext - tmp_dir - 1);
- *(fname + (tmp_ext - tmp_dir -1)) = 0;
- }
- else
- {
- wcsncpy(fname,path,tmp_ext - path);
+ if (tmp_dir) {
+ wcsncpy(fname,tmp_dir+1,tmp_ext-tmp_dir-1);
+ *(fname+(tmp_ext-tmp_dir-1)) = 0;
+ } else {
+ wcsncpy(fname,tmp_drive+1,tmp_ext-tmp_drive-1);
*(fname+(tmp_ext-path))=0;
}
}
/*
* @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_dir;
- char *tmp_ext;
+ char* tmp_drive;
+ char* tmp_dir;
+ char* tmp_ext;
- tmp_drive = (char *)strchr(path,':');
- if ( tmp_drive != (char *)NULL ) {
- strncpy(drive,tmp_drive-1,1);
- *(drive+1) = 0;
- }
- else {
- *drive = 0;
- tmp_drive = (char *)path;
+ tmp_drive = (char*)strchr(path,':');
+ if (drive) {
+ if (tmp_drive) {
+ strncpy(drive,tmp_drive-1,2);
+ *(drive+2) = 0;
+ } else {
+ *drive = 0;
}
+ }
+ if (!tmp_drive) {
+ tmp_drive = (char*)path - 1;
+ }
- tmp_dir = (char *)strrchr(path,'\\');
-// if( tmp_dir != NULL && tmp_dir != tmp_drive + 1 )
- if( tmp_dir != NULL )
- {
- strncpy(dir,tmp_drive+1,tmp_dir - tmp_drive);
- *(dir + (tmp_dir - tmp_drive)) = 0;
+ tmp_dir = (char*)strrchr(path,'\\');
+ if (dir) {
+ if (tmp_dir) {
+ strncpy(dir,tmp_drive+1,tmp_dir-tmp_drive);
+ *(dir+(tmp_dir-tmp_drive)) = 0;
+ } else {
+ *dir =0;
}
- else
- *dir =0;
+ }
- tmp_ext = ( char *)strrchr(path,'.');
- if ( tmp_ext != NULL ) {
- strcpy(ext,tmp_ext);
- }
- else
- *ext = 0;
- 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);
+ tmp_ext = (char*)strrchr(path,'.');
+ if (!tmp_ext) {
+ tmp_ext = (char*)path+strlen(path);
+ }
+ if (ext) {
+ strcpy(ext,tmp_ext);
+ }
+ 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;
+ }
}