* Add Com_HexStrToInt
* Fixed some whacky indentation in q_shared.c * Allow single character keys e.g. 'c' to be used in cl_consoleKeys in addition to ASCII characters * Experimental code to ignore dead keys
This commit is contained in:
parent
b6b19caadd
commit
b2d87c4b2a
6 changed files with 137 additions and 156 deletions
|
@ -361,48 +361,48 @@ int COM_Compress( char *data_p ) {
|
|||
in++;
|
||||
if ( *in )
|
||||
in += 2;
|
||||
// record when we hit a newline
|
||||
} else if ( c == '\n' || c == '\r' ) {
|
||||
newline = qtrue;
|
||||
in++;
|
||||
// record when we hit whitespace
|
||||
} else if ( c == ' ' || c == '\t') {
|
||||
whitespace = qtrue;
|
||||
in++;
|
||||
// an actual token
|
||||
// record when we hit a newline
|
||||
} else if ( c == '\n' || c == '\r' ) {
|
||||
newline = qtrue;
|
||||
in++;
|
||||
// record when we hit whitespace
|
||||
} else if ( c == ' ' || c == '\t') {
|
||||
whitespace = qtrue;
|
||||
in++;
|
||||
// an actual token
|
||||
} else {
|
||||
// if we have a pending newline, emit it (and it counts as whitespace)
|
||||
if (newline) {
|
||||
*out++ = '\n';
|
||||
newline = qfalse;
|
||||
whitespace = qfalse;
|
||||
} if (whitespace) {
|
||||
*out++ = ' ';
|
||||
whitespace = qfalse;
|
||||
}
|
||||
|
||||
// copy quoted strings unmolested
|
||||
if (c == '"') {
|
||||
*out++ = c;
|
||||
in++;
|
||||
while (1) {
|
||||
c = *in;
|
||||
if (c && c != '"') {
|
||||
*out++ = c;
|
||||
in++;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (c == '"') {
|
||||
*out++ = c;
|
||||
in++;
|
||||
}
|
||||
} else {
|
||||
*out = c;
|
||||
out++;
|
||||
in++;
|
||||
}
|
||||
// if we have a pending newline, emit it (and it counts as whitespace)
|
||||
if (newline) {
|
||||
*out++ = '\n';
|
||||
newline = qfalse;
|
||||
whitespace = qfalse;
|
||||
} if (whitespace) {
|
||||
*out++ = ' ';
|
||||
whitespace = qfalse;
|
||||
}
|
||||
|
||||
// copy quoted strings unmolested
|
||||
if (c == '"') {
|
||||
*out++ = c;
|
||||
in++;
|
||||
while (1) {
|
||||
c = *in;
|
||||
if (c && c != '"') {
|
||||
*out++ = c;
|
||||
in++;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (c == '"') {
|
||||
*out++ = c;
|
||||
in++;
|
||||
}
|
||||
} else {
|
||||
*out = c;
|
||||
out++;
|
||||
in++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -512,62 +512,6 @@ char *COM_ParseExt( char **data_p, qboolean allowLineBreaks )
|
|||
return com_token;
|
||||
}
|
||||
|
||||
|
||||
#if 0
|
||||
// no longer used
|
||||
/*
|
||||
===============
|
||||
COM_ParseInfos
|
||||
===============
|
||||
*/
|
||||
int COM_ParseInfos( char *buf, int max, char infos[][MAX_INFO_STRING] ) {
|
||||
char *token;
|
||||
int count;
|
||||
char key[MAX_TOKEN_CHARS];
|
||||
|
||||
count = 0;
|
||||
|
||||
while ( 1 ) {
|
||||
token = COM_Parse( &buf );
|
||||
if ( !token[0] ) {
|
||||
break;
|
||||
}
|
||||
if ( strcmp( token, "{" ) ) {
|
||||
Com_Printf( "Missing { in info file\n" );
|
||||
break;
|
||||
}
|
||||
|
||||
if ( count == max ) {
|
||||
Com_Printf( "Max infos exceeded\n" );
|
||||
break;
|
||||
}
|
||||
|
||||
infos[count][0] = 0;
|
||||
while ( 1 ) {
|
||||
token = COM_ParseExt( &buf, qtrue );
|
||||
if ( !token[0] ) {
|
||||
Com_Printf( "Unexpected end of info file\n" );
|
||||
break;
|
||||
}
|
||||
if ( !strcmp( token, "}" ) ) {
|
||||
break;
|
||||
}
|
||||
Q_strncpyz( key, token, sizeof( key ) );
|
||||
|
||||
token = COM_ParseExt( &buf, qfalse );
|
||||
if ( !token[0] ) {
|
||||
strcpy( token, "<NULL>" );
|
||||
}
|
||||
Info_SetValueForKey( infos[count], key, token );
|
||||
}
|
||||
count++;
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
==================
|
||||
COM_MatchToken
|
||||
|
@ -669,6 +613,44 @@ void Parse3DMatrix (char **buf_p, int z, int y, int x, float *m) {
|
|||
COM_MatchToken( buf_p, ")" );
|
||||
}
|
||||
|
||||
/*
|
||||
===================
|
||||
Com_HexStrToInt
|
||||
===================
|
||||
*/
|
||||
int Com_HexStrToInt( const char *str )
|
||||
{
|
||||
if ( !str || !str[ 0 ] )
|
||||
return -1;
|
||||
|
||||
// check for hex code
|
||||
if( str[ 0 ] == '0' && str[ 1 ] == 'x' )
|
||||
{
|
||||
int i, n = 0;
|
||||
|
||||
for( i = 2; i < strlen( str ); i++ )
|
||||
{
|
||||
char digit;
|
||||
|
||||
n *= 16;
|
||||
|
||||
digit = tolower( str[ i ] );
|
||||
|
||||
if( digit >= '0' && digit <= '9' )
|
||||
digit -= '0';
|
||||
else if( digit >= 'a' && digit <= 'f' )
|
||||
digit = digit - 'a' + 10;
|
||||
else
|
||||
return -1;
|
||||
|
||||
n += digit;
|
||||
}
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
/*
|
||||
============================================================================
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue