public: crtlib: add quotation mark support for ParseFile, required for filesystem_stdio
This commit is contained in:
parent
fc132e87f4
commit
5350d88f57
|
@ -3098,11 +3098,7 @@ handle colon separately
|
|||
*/
|
||||
char *pfnParseFile( char *data, char *token )
|
||||
{
|
||||
char *out;
|
||||
|
||||
out = _COM_ParseFileSafe( data, token, PFILE_TOKEN_MAX_LENGTH, PFILE_HANDLECOLON, NULL );
|
||||
|
||||
return out;
|
||||
return COM_ParseFileSafe( data, token, PFILE_TOKEN_MAX_LENGTH, PFILE_HANDLECOLON, NULL, NULL );
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -1224,6 +1224,11 @@ static int pfnGetRenderers( unsigned int num, char *shortName, size_t size1, cha
|
|||
return 1;
|
||||
}
|
||||
|
||||
static char *pfnParseFileSafe( char *data, char *buf, const int size, unsigned int flags, int *len )
|
||||
{
|
||||
return COM_ParseFileSafe( data, buf, size, flags, len, NULL );
|
||||
}
|
||||
|
||||
static ui_extendedfuncs_t gExtendedfuncs =
|
||||
{
|
||||
pfnEnableTextInput,
|
||||
|
@ -1232,7 +1237,7 @@ static ui_extendedfuncs_t gExtendedfuncs =
|
|||
Con_UtfMoveRight,
|
||||
pfnGetRenderers,
|
||||
Sys_DoubleTime,
|
||||
_COM_ParseFileSafe,
|
||||
pfnParseFileSafe,
|
||||
NET_AdrToString
|
||||
};
|
||||
|
||||
|
|
|
@ -103,6 +103,11 @@ static void pfnTouch_RemoveButton( const char *name )
|
|||
Touch_RemoveButton( name, true );
|
||||
}
|
||||
|
||||
static char *pfnParseFileSafe( char *data, char *buf, const int size, unsigned int flags, int *len )
|
||||
{
|
||||
return COM_ParseFileSafe( data, buf, size, flags, len, NULL );
|
||||
}
|
||||
|
||||
static mobile_engfuncs_t gpMobileEngfuncs =
|
||||
{
|
||||
MOBILITY_API_VERSION,
|
||||
|
@ -118,7 +123,7 @@ static mobile_engfuncs_t gpMobileEngfuncs =
|
|||
Sys_Warn,
|
||||
pfnGetNativeObject,
|
||||
ID_SetCustomClientID,
|
||||
_COM_ParseFileSafe
|
||||
pfnParseFileSafe
|
||||
};
|
||||
|
||||
qboolean Mobile_Init( void )
|
||||
|
|
|
@ -864,7 +864,7 @@ void CL_QuakeExecStuff( void )
|
|||
|
||||
if( !*text ) break;
|
||||
|
||||
text = _COM_ParseFileSafe( text, token, sizeof( token ), PFILE_IGNOREBRACKET, NULL );
|
||||
text = COM_ParseFileSafe( text, token, sizeof( token ), PFILE_IGNOREBRACKET, NULL, NULL );
|
||||
|
||||
if( !text ) break;
|
||||
|
||||
|
|
|
@ -647,7 +647,7 @@ void Cmd_TokenizeString( const char *text )
|
|||
if( cmd_argc == 1 )
|
||||
cmd_args = text;
|
||||
|
||||
text = _COM_ParseFileSafe( (char*)text, cmd_token, sizeof( cmd_token ), PFILE_IGNOREBRACKET, NULL );
|
||||
text = COM_ParseFileSafe( (char*)text, cmd_token, sizeof( cmd_token ), PFILE_IGNOREBRACKET, NULL, NULL );
|
||||
|
||||
if( !text ) return;
|
||||
|
||||
|
|
|
@ -1182,22 +1182,22 @@ void Test_RunCommon( void )
|
|||
|
||||
Msg( "Checking COM_ParseFile...\n" );
|
||||
|
||||
file = _COM_ParseFileSafe( file, buf, sizeof( buf ), 0, &len );
|
||||
file = COM_ParseFileSafe( file, buf, sizeof( buf ), 0, &len, NULL );
|
||||
TASSERT( !Q_strcmp( buf, "q" ) && len == 1);
|
||||
|
||||
file = _COM_ParseFileSafe( file, buf, sizeof( buf ), 0, &len );
|
||||
file = COM_ParseFileSafe( file, buf, sizeof( buf ), 0, &len, NULL );
|
||||
TASSERT( !Q_strcmp( buf, "asdf" ) && len == 4);
|
||||
|
||||
file = _COM_ParseFileSafe( file, buf, sizeof( buf ), 0, &len );
|
||||
file = COM_ParseFileSafe( file, buf, sizeof( buf ), 0, &len, NULL );
|
||||
TASSERT( !Q_strcmp( buf, "qwer" ) && len == -1);
|
||||
|
||||
file = _COM_ParseFileSafe( file, buf, sizeof( buf ), 0, &len );
|
||||
file = COM_ParseFileSafe( file, buf, sizeof( buf ), 0, &len, NULL );
|
||||
TASSERT( !Q_strcmp( buf, "f \"f" ) && len == 4);
|
||||
|
||||
file = _COM_ParseFileSafe( file, buf, sizeof( buf ), 0, &len );
|
||||
file = COM_ParseFileSafe( file, buf, sizeof( buf ), 0, &len, NULL );
|
||||
TASSERT( !Q_strcmp( buf, "meow" ) && len == -1);
|
||||
|
||||
file = _COM_ParseFileSafe( file, buf, sizeof( buf ), 0, &len );
|
||||
file = COM_ParseFileSafe( file, buf, sizeof( buf ), 0, &len, NULL );
|
||||
TASSERT( !Q_strcmp( buf, "bark" ) && len == 4);
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -889,11 +889,14 @@ COM_ParseFile
|
|||
text parser
|
||||
==============
|
||||
*/
|
||||
char *_COM_ParseFileSafe( char *data, char *token, const int size, unsigned int flags, int *plen )
|
||||
char *COM_ParseFileSafe( char *data, char *token, const int size, unsigned int flags, int *plen, qboolean *quoted )
|
||||
{
|
||||
int c, len = 0;
|
||||
qboolean overflow = false;
|
||||
|
||||
if( quoted )
|
||||
*quoted = false;
|
||||
|
||||
if( !token || !size )
|
||||
{
|
||||
if( plen ) *plen = 0;
|
||||
|
@ -927,6 +930,9 @@ skipwhite:
|
|||
// handle quoted strings specially
|
||||
if( c == '\"' )
|
||||
{
|
||||
if( quoted )
|
||||
*quoted = true;
|
||||
|
||||
data++;
|
||||
while( 1 )
|
||||
{
|
||||
|
|
|
@ -37,6 +37,7 @@ enum
|
|||
#define PFILE_IGNOREBRACKET (1<<0)
|
||||
#define PFILE_HANDLECOLON (1<<1)
|
||||
#define PFILE_TOKEN_MAX_LENGTH 1024
|
||||
#define PFILE_FS_TOKEN_MAX_LENGTH 512
|
||||
|
||||
//
|
||||
// crtlib.c
|
||||
|
@ -83,10 +84,11 @@ void COM_RemoveLineFeed( char *str );
|
|||
void COM_PathSlashFix( char *path );
|
||||
char COM_Hex2Char( uint8_t hex );
|
||||
void COM_Hex2String( uint8_t hex, char *str );
|
||||
// return 0 on empty or null string, 1 otherwise
|
||||
#define COM_CheckString( string ) ( ( !string || !*string ) ? 0 : 1 )
|
||||
#define COM_CheckStringEmpty( string ) ( ( !*string ) ? 0 : 1 )
|
||||
char *_COM_ParseFileSafe( char *data, char *token, const int size, unsigned int flags, int *len );
|
||||
#define COM_ParseFile( data, token, size ) _COM_ParseFileSafe( data, token, size, 0, NULL )
|
||||
char *COM_ParseFileSafe( char *data, char *token, const int size, unsigned int flags, int *len, qboolean *quoted );
|
||||
#define COM_ParseFile( data, token, size ) COM_ParseFileSafe( data, token, size, 0, NULL, NULL )
|
||||
int matchpattern( const char *in, const char *pattern, qboolean caseinsensitive );
|
||||
int matchpattern_with_separator( const char *in, const char *pattern, qboolean caseinsensitive, const char *separators, qboolean wildcard_least_one );
|
||||
|
||||
|
|
Loading…
Reference in New Issue