splitpath_s
errno_t __cdecl splitpath_s(
const char *FullPath,
char *Drive,
size_t DriveSize,
char *Dir,
size_t DirSize,
char *Filename,
size_t FilenameSize,
char *Ext,
size_t ExtSize){
char *v9;
size_t v11;
int v13;
__int64 v14;
const char *v15;
CHAR v16;
char *v17;
CHAR *v18;
char *v19;
UINT64 v20;
UINT64 v21;
v9 = (char *)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;
strncpy_s(Drive, DriveSize, (PCHAR)FullPath, 2ui64);
}
v9 = (char *)(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 )
{
if( DirSize <= v17 - v9 )
goto LABEL_56;
strncpy_s(Dir, DirSize, v9, v17 - v9);
}
v9 = v17;
}
else
{
LABEL_40:
if( Dir )
*Dir = 0;
}
if( !v18 || v18 < v9 )
{
if( Filename )
{
v21 = v19 - v9;
if( FilenameSize <= v21 )
goto LABEL_56;
strncpy_s(Filename, FilenameSize, v9, v21);
}
if( Ext )
*Ext = 0;
return 0;
}
if( !Filename )
{
LABEL_47:
if( !Ext )
return 0;
v20 = v19 - v18;
if( ExtSize > v20 )
{
strncpy_s(Ext, ExtSize, v18, v20);
return 0;
}
goto LABEL_56;
}
if( FilenameSize > v18 - v9 )
{
strncpy_s(Filename, FilenameSize, v9, v18 - v9);
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.