#include #include /* * @implemented */ void _tsplitpath(const _TCHAR* path, _TCHAR* drive, _TCHAR* dir, _TCHAR* fname, _TCHAR* ext) { _TCHAR* tmp_drive = NULL; _TCHAR* tmp_dir = NULL; _TCHAR* tmp_ext = NULL; tmp_drive = (_TCHAR*)_tcschr(path,':'); if (drive) { if (tmp_drive) { _tcsncpy(drive,tmp_drive-1,2); *(drive+2) = 0; } else { *drive = 0; } } if (!tmp_drive) { tmp_drive = (_TCHAR*)path - 1; } tmp_dir = (_TCHAR*)_tcsrchr(path,'\\'); if (dir) { if (tmp_dir) { _tcsncpy(dir,tmp_drive+1,tmp_dir-tmp_drive); *(dir+(tmp_dir-tmp_drive)) = 0; } else { *dir =0; } } /* If the dot is before the last dir separator, it's part * of a directory name, not the start of the extension */ if (!tmp_ext || tmp_ext < tmp_dir) { tmp_ext = (_TCHAR*)path+_tcslen(path); } if (ext) { _tcscpy(ext,tmp_ext); } if (fname) { if (tmp_dir) { _tcsncpy(fname,tmp_dir+1,tmp_ext-tmp_dir-1); *(fname+(tmp_ext-tmp_dir-1)) = 0; } else { _tcsncpy(fname,tmp_drive+1,tmp_ext-tmp_drive-1); *(fname+(tmp_ext-path))=0; } } }