wsplitpath_s
errno_t __cdecl wsplitpath_s(
const wchar_t *FullPath,
wchar_t *Drive,
size_t DriveSize,
wchar_t *Dir,
size_t DirSize,
wchar_t *Filename,
size_t FilenameSize,
wchar_t *Ext,
size_t ExtSize){
wchar_t *v9;
size_t v11;
int v13;
__int64 v14;
const wchar_t *v15;
WCHAR v16;
wchar_t *v17;
WCHAR *v18;
wchar_t *v19;
unsigned __int64 v20;
unsigned __int64 v21;
unsigned __int64 v22;
unsigned __int64 v23;
v9 = (wchar_t *)FullPath;
v11 = DriveSize;
v13 = 0;
if( !FullPath )
goto LABEL_4;
if( Drive )
{
if( !DriveSize )
goto LABEL_4;
}
else if( DriveSize )
{
LABEL_4:
v13 = 1;
goto LABEL_57;
}
if( Dir )
{
if( !DirSize )
goto LABEL_4;
}
else if( DirSize )
{
goto LABEL_4;
}
if( Filename )
{
if( !FilenameSize )
goto LABEL_4;
}
else if( FilenameSize )
{
goto LABEL_4;
}
if( Ext )
{
if( !ExtSize )
goto LABEL_4;
}
else if( ExtSize )
{
goto LABEL_4;
}
v14 = 1i64;
v15 = FullPath;
do
{
if( !*v15 )
break;
++v15;
--v14;
}
while( v14 );
if( *v15 == 58 )
{
if( Drive )
{
if( DriveSize < 3 )
goto LABEL_57;
wcsncpy_s(Drive, DriveSize, (WCHAR *)FullPath, 2ui64);
}
v9 = (wchar_t *)(v15 + 1);
}
else if( Drive )
{
*Drive = 0;
}
v16 = *v9;
v17 = 0i64;
v18 = 0i64;
v19 = v9;
if( !*v9 )
goto LABEL_40;
do
{
if( v16 == 47 || v16 == 92 )
{
v17 = v19 + 1;
}
else if( v16 == 46 )
{
v18 = v19;
}
v16 = *++v19;
}
while( *v19 );
if( v17 )
{
if( Dir )
{
v20 = v17 - v9;
if( DirSize <= v20 )
goto LABEL_56;
wcsncpy_s(Dir, DirSize, v9, v20);
}
v9 = v17;
}
else
{
LABEL_40:
if( Dir )
*Dir = 0;
}
if( !v18 || v18 < v9 )
{
if( Filename )
{
v23 = v19 - v9;
if( FilenameSize <= v23 )
goto LABEL_56;
wcsncpy_s(Filename, FilenameSize, v9, v23);
}
if( Ext )
*Ext = 0;
return 0;
}
if( !Filename )
{
LABEL_47:
if( !Ext )
return 0;
v22 = v19 - v18;
if( ExtSize > v22 )
{
wcsncpy_s(Ext, ExtSize, v18, v22);
return 0;
}
goto LABEL_56;
}
v21 = v18 - v9;
if( FilenameSize > v21 )
{
wcsncpy_s(Filename, FilenameSize, v9, v21);
goto LABEL_47;
}
LABEL_56:
v13 = 0;
v11 = DriveSize;
LABEL_57:
if( Drive && v11 )
*Drive = 0;
if( Dir && DirSize )
*Dir = 0;
if( Filename && FilenameSize )
*Filename = 0;
if( Ext && ExtSize )
*Ext = 0;
if( v9 && !v13 )
return 34;
xHalTimerWatchdogStop(0i64, 0i64);
return 22;
}Referenced by:
No references.