mirror of
https://github.com/FWGS/xash3d-fwgs.git
synced 2026-08-05 03:24:56 +08:00
public: add new features to ParseFileSafe, such as disabling interpreting certain characters as separate tokens, or instead forcing them to be separate tokens
This commit is contained in:
@@ -666,14 +666,23 @@ interpert this character as single
|
||||
*/
|
||||
static int COM_IsSingleChar( unsigned int flags, char c )
|
||||
{
|
||||
if( c == '{' || c == '}' || c == '\'' || c == ',' )
|
||||
return true;
|
||||
|
||||
if( !FBitSet( flags, PFILE_IGNOREBRACKET ) && ( c == ')' || c == '(' ))
|
||||
return true;
|
||||
|
||||
if( FBitSet( flags, PFILE_HANDLECOLON ) && c == ':' )
|
||||
switch( c )
|
||||
{
|
||||
case '}':
|
||||
case '{':
|
||||
return true;
|
||||
case ',':
|
||||
return !FBitSet( flags, PFILE_NO_COMMA_AS_TOKEN );
|
||||
case '\'':
|
||||
return !FBitSet( flags, PFILE_NO_SINGLE_QUOTE_AS_TOKEN );
|
||||
case '(':
|
||||
case ')':
|
||||
return !FBitSet( flags, PFILE_NO_BRACKETS_AS_TOKEN );
|
||||
case ':':
|
||||
return FBitSet( flags, PFILE_COLON_AS_TOKEN );
|
||||
case '\n':
|
||||
return FBitSet( flags, PFILE_NEWLINE_AS_TOKEN );
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
@@ -707,6 +716,9 @@ char *COM_ParseFileSafe( char *data, char *token, const int size, unsigned int f
|
||||
skipwhite:
|
||||
while(( c = ((byte)*data)) <= ' ' )
|
||||
{
|
||||
if( FBitSet( flags, PFILE_NEWLINE_AS_TOKEN ) && c == '\n' )
|
||||
break;
|
||||
|
||||
if( c == 0 )
|
||||
{
|
||||
if( plen ) *plen = overflow ? -1 : len;
|
||||
@@ -716,7 +728,7 @@ skipwhite:
|
||||
}
|
||||
|
||||
// skip // or #, if requested, comments
|
||||
if(( c == '/' && data[1] == '/' ) || ( c == '#' && FBitSet( flags, PFILE_IGNOREHASHCMT )))
|
||||
if(( c == '/' && data[1] == '/' ) || ( c == '#' && FBitSet( flags, PFILE_HASH_AS_COMMENT )))
|
||||
{
|
||||
while( *data && *data != '\n' )
|
||||
data++;
|
||||
@@ -724,7 +736,7 @@ skipwhite:
|
||||
}
|
||||
|
||||
// handle quoted strings specially
|
||||
if( c == '\"' )
|
||||
if( c == '\"' && !FBitSet( flags, PFILE_NO_QUOTED_TOKENS ))
|
||||
{
|
||||
if( quoted )
|
||||
*quoted = true;
|
||||
|
||||
Reference in New Issue
Block a user