diff options
Diffstat (limited to 'code/qcommon')
| -rw-r--r-- | code/qcommon/q_shared.c | 176 | ||||
| -rw-r--r-- | code/qcommon/q_shared.h | 1 | 
2 files changed, 80 insertions, 97 deletions
| diff --git a/code/qcommon/q_shared.c b/code/qcommon/q_shared.c index bf9a341..de173d8 100644 --- a/code/qcommon/q_shared.c +++ b/code/qcommon/q_shared.c @@ -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; +}  /*  ============================================================================ diff --git a/code/qcommon/q_shared.h b/code/qcommon/q_shared.h index 9a7ddac..a18ea29 100644 --- a/code/qcommon/q_shared.h +++ b/code/qcommon/q_shared.h @@ -652,6 +652,7 @@ void SkipRestOfLine ( char **data );  void Parse1DMatrix (char **buf_p, int x, float *m);  void Parse2DMatrix (char **buf_p, int y, int x, float *m);  void Parse3DMatrix (char **buf_p, int z, int y, int x, float *m); +int Com_HexStrToInt( const char *str );  void	QDECL Com_sprintf (char *dest, int size, const char *fmt, ...) __attribute__ ((format (printf, 3, 4))); | 
