From 0efc5e82ecf790f2b8646e5c0daa59a32cf7d747 Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Tue, 20 Jul 2021 16:02:59 +0300 Subject: [PATCH] engine: fix some const qualifier lose and pointer-to-int casts --- engine/client/cl_main.c | 2 +- engine/client/console.c | 7 +++---- engine/client/keys.c | 2 +- engine/client/s_main.c | 2 +- engine/common/build.c | 6 +++--- engine/common/cfgscript.c | 2 +- engine/common/cmd.c | 8 ++++---- engine/common/common.h | 8 ++++---- engine/common/crashhandler.c | 2 +- engine/common/cvar.h | 8 ++++++-- engine/common/filesystem.c | 2 +- engine/common/net_chan.c | 2 +- engine/common/net_ws.c | 4 ++-- engine/common/net_ws.h | 4 ++-- engine/common/netchan.h | 2 +- engine/common/system.c | 2 +- engine/common/system.h | 2 +- engine/eiface.h | 2 +- engine/server/server.h | 6 +++--- engine/server/sv_client.c | 4 ++-- engine/server/sv_cmds.c | 4 ++-- engine/server/sv_save.c | 2 +- 22 files changed, 43 insertions(+), 40 deletions(-) diff --git a/engine/client/cl_main.c b/engine/client/cl_main.c index f6b39230..fc34a633 100644 --- a/engine/client/cl_main.c +++ b/engine/client/cl_main.c @@ -2535,7 +2535,7 @@ CL_ServerCommand send command to a server ==================== */ -void CL_ServerCommand( qboolean reliable, char *fmt, ... ) +void CL_ServerCommand( qboolean reliable, const char *fmt, ... ) { char string[MAX_SYSPATH]; va_list argptr; diff --git a/engine/client/console.c b/engine/client/console.c index d9596d3c..f6cefed2 100644 --- a/engine/client/console.c +++ b/engine/client/console.c @@ -990,13 +990,12 @@ void GAME_EXPORT Con_DrawStringLen( const char *pText, int *length, int *height { int curLength = 0; - if( !con.curFont ) return; - - if( height ) *height = con.curFont->charHeight; if( !length ) return; - *length = 0; + if( !con.curFont ) return; + if( height ) *height = con.curFont->charHeight; + while( *pText ) { byte c = *pText; diff --git a/engine/client/keys.c b/engine/client/keys.c index 536c36dd..de13ef3e 100644 --- a/engine/client/keys.c +++ b/engine/client/keys.c @@ -29,7 +29,7 @@ typedef struct typedef struct keyname_s { - char *name; // key name + const char *name; // key name int keynum; // key number const char *binding; // default bind } keyname_t; diff --git a/engine/client/s_main.c b/engine/client/s_main.c index 89b8da66..96c23924 100644 --- a/engine/client/s_main.c +++ b/engine/client/s_main.c @@ -1773,7 +1773,7 @@ void S_Music_f( void ) else if( c == 2 ) { string intro, main, track; - char *ext[] = { "mp3", "wav" }; + const char *ext[] = { "mp3", "wav" }; int i; Q_strncpy( track, Cmd_Argv( 1 ), sizeof( track )); diff --git a/engine/common/build.c b/engine/common/build.c index eef0454a..041f7057 100644 --- a/engine/common/build.c +++ b/engine/common/build.c @@ -15,9 +15,9 @@ GNU General Public License for more details. #include "common.h" -static char *date = __DATE__ ; -static char *mon[12] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; -static char mond[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; +static const char *date = __DATE__ ; +static const char *mon[12] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; +static const char mond[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; // returns days since Apr 1 2015 int Q_buildnum( void ) diff --git a/engine/common/cfgscript.c b/engine/common/cfgscript.c index 3ff96b5e..f426640f 100644 --- a/engine/common/cfgscript.c +++ b/engine/common/cfgscript.c @@ -25,7 +25,7 @@ typedef enum T_COUNT } cvartype_t; -char *cvartypes[] = { NULL, "BOOL" , "NUMBER", "LIST", "STRING" }; +const char *cvartypes[] = { NULL, "BOOL", "NUMBER", "LIST", "STRING" }; typedef struct parserstate_s { diff --git a/engine/common/cmd.c b/engine/common/cmd.c index 8e7b0a57..267180ff 100644 --- a/engine/common/cmd.c +++ b/engine/common/cmd.c @@ -463,7 +463,7 @@ typedef struct cmd_s } cmd_t; static int cmd_argc; -static char *cmd_args = NULL; +static const char *cmd_args = NULL; static char *cmd_argv[MAX_CMD_TOKENS]; static char cmd_tokenized[MAX_CMD_BUFFER]; // will have 0 bytes inserted static cmd_t *cmd_functions; // possible commands to execute @@ -560,7 +560,7 @@ are inserted in the apropriate place, The argv array will point into this temporary buffer. ============ */ -void Cmd_TokenizeString( char *text ) +void Cmd_TokenizeString( const char *text ) { char cmd_token[MAX_CMD_BUFFER]; int i; @@ -577,7 +577,7 @@ void Cmd_TokenizeString( char *text ) while( 1 ) { // skip whitespace up to a /n - while( *text && ((byte)*text) <= ' ' && *text != '\r' && *text != '\n' ) + while( *text && *text <= ' ' && *text != '\r' && *text != '\n' ) text++; if( *text == '\n' || *text == '\r' ) @@ -885,7 +885,7 @@ Cmd_ExecuteString A complete command line has been parsed, so try to execute it ============ */ -void Cmd_ExecuteString( char *text ) +void Cmd_ExecuteString( const char *text ) { cmd_t *cmd = NULL; cmdalias_t *a = NULL; diff --git a/engine/common/common.h b/engine/common/common.h index 5448a619..7470877e 100644 --- a/engine/common/common.h +++ b/engine/common/common.h @@ -498,8 +498,8 @@ int Cmd_ListMaps( search_t *t , char *lastmapname, size_t len ); qboolean Cmd_GetMapList( const char *s, char *completedname, int length ); qboolean Cmd_GetDemoList( const char *s, char *completedname, int length ); qboolean Cmd_GetMovieList( const char *s, char *completedname, int length ); -void Cmd_TokenizeString( char *text ); -void Cmd_ExecuteString( char *text ); +void Cmd_TokenizeString( const char *text ); +void Cmd_ExecuteString( const char *text ); void Cmd_ForwardToServer( void ); // @@ -869,14 +869,14 @@ void SV_CreateDecal( sizebuf_t *msg, const float *origin, int decalIndex, int en void Log_Printf( const char *fmt, ... ) _format( 1 ); void SV_BroadcastCommand( const char *fmt, ... ) _format( 1 ); qboolean SV_RestoreCustomDecal( struct decallist_s *entry, edict_t *pEdict, qboolean adjacent ); -void SV_BroadcastPrintf( struct sv_client_s *ignore, char *fmt, ... ) _format( 2 ); +void SV_BroadcastPrintf( struct sv_client_s *ignore, const char *fmt, ... ) _format( 2 ); int R_CreateDecalList( struct decallist_s *pList ); void R_ClearAllDecals( void ); void CL_ClearStaticEntities( void ); qboolean S_StreamGetCurrentState( char *currentTrack, char *loopTrack, int *position ); struct cl_entity_s *CL_GetEntityByIndex( int index ); struct player_info_s *CL_GetPlayerInfo( int playerIndex ); -void CL_ServerCommand( qboolean reliable, char *fmt, ... ) _format( 2 ); +void CL_ServerCommand( qboolean reliable, const char *fmt, ... ) _format( 2 ); void CL_HudMessage( const char *pMessage ); const char *CL_MsgInfo( int cmd ); void SV_DrawDebugTriangles( void ); diff --git a/engine/common/crashhandler.c b/engine/common/crashhandler.c index 1048b510..525237c3 100644 --- a/engine/common/crashhandler.c +++ b/engine/common/crashhandler.c @@ -285,7 +285,7 @@ struct sigaction oldFilter; #define STACK_BACKTRACE_STR "Stack backtrace:\n" #define STACK_DUMP_STR_LEN 12 #define STACK_DUMP_STR "Stack dump:\n" -#define ALIGN( x, y ) (((int) (x) + ((y)-1)) & ~((y)-1)) +#define ALIGN( x, y ) (((uintptr_t) (x) + ((y)-1)) & ~((y)-1)) static void Sys_Crash( int signal, siginfo_t *si, void *context) { diff --git a/engine/common/cvar.h b/engine/common/cvar.h index 1eb5b1ee..ff9e48cc 100644 --- a/engine/common/cvar.h +++ b/engine/common/cvar.h @@ -18,8 +18,12 @@ GNU General Public License for more details. #include "cvardef.h" +#ifdef XASH_64BIT +#define CVAR_SENTINEL 0xDEADBEEFDEADBEEF +#else #define CVAR_SENTINEL 0xDEADBEEF -#define CVAR_CHECK_SENTINEL( cv ) ((uint)(cv)->next == CVAR_SENTINEL) +#endif +#define CVAR_CHECK_SENTINEL( cv ) ((uintptr_t)(cv)->next == CVAR_SENTINEL) // NOTE: if this is changed, it must be changed in cvardef.h too typedef struct convar_s @@ -46,7 +50,7 @@ typedef struct convar_s #define FCVAR_LOCALONLY (1<<22) // can be set only from local buffers #define CVAR_DEFINE( cv, cvname, cvstr, cvflags, cvdesc ) \ - convar_t cv = { cvname, cvstr, cvflags, 0.0f, (void *)CVAR_SENTINEL, cvdesc, NULL } + convar_t cv = { (char*)cvname, (char*)cvstr, cvflags, 0.0f, (void *)CVAR_SENTINEL, (char*)cvdesc, NULL } #define CVAR_DEFINE_AUTO( cv, cvstr, cvflags, cvdesc ) \ CVAR_DEFINE( cv, #cv, cvstr, cvflags, cvdesc ) diff --git a/engine/common/filesystem.c b/engine/common/filesystem.c index 2c2cff7d..c0fe69cd 100644 --- a/engine/common/filesystem.c +++ b/engine/common/filesystem.c @@ -74,7 +74,7 @@ typedef struct stringlist_s typedef struct wadtype_s { - char *ext; + const char *ext; signed char type; } wadtype_t; diff --git a/engine/common/net_chan.c b/engine/common/net_chan.c index ea65e1ea..93177df1 100644 --- a/engine/common/net_chan.c +++ b/engine/common/net_chan.c @@ -517,7 +517,7 @@ Netchan_OutOfBandPrint Sends a text message in an out-of-band datagram ================ */ -void Netchan_OutOfBandPrint( int net_socket, netadr_t adr, char *format, ... ) +void Netchan_OutOfBandPrint( int net_socket, netadr_t adr, const char *format, ... ) { char string[MAX_PRINT_MSG]; va_list argptr; diff --git a/engine/common/net_ws.c b/engine/common/net_ws.c index ba94b444..edf0095a 100644 --- a/engine/common/net_ws.c +++ b/engine/common/net_ws.c @@ -536,7 +536,7 @@ static int NET_StringToSockaddr( const char *s, struct sockaddr *sadr, qboolean NET_AdrToString ==================== */ -char *NET_AdrToString( const netadr_t a ) +const char *NET_AdrToString( const netadr_t a ) { if( a.type == NA_LOOPBACK ) return "loopback"; @@ -548,7 +548,7 @@ char *NET_AdrToString( const netadr_t a ) NET_BaseAdrToString ==================== */ -char *NET_BaseAdrToString( const netadr_t a ) +const char *NET_BaseAdrToString( const netadr_t a ) { if( a.type == NA_LOOPBACK ) return "loopback"; diff --git a/engine/common/net_ws.h b/engine/common/net_ws.h index 18a0d9ce..ede8f0b1 100644 --- a/engine/common/net_ws.h +++ b/engine/common/net_ws.h @@ -53,8 +53,8 @@ qboolean NET_IsActive( void ); qboolean NET_IsConfigured( void ); void NET_Config( qboolean net_enable ); qboolean NET_IsLocalAddress( netadr_t adr ); -char *NET_AdrToString( const netadr_t a ); -char *NET_BaseAdrToString( const netadr_t a ); +const char *NET_AdrToString( const netadr_t a ); +const char *NET_BaseAdrToString( const netadr_t a ); qboolean NET_IsReservedAdr( netadr_t a ); qboolean NET_CompareClassBAdr( netadr_t a, netadr_t b ); qboolean NET_StringToAdr( const char *string, netadr_t *adr ); diff --git a/engine/common/netchan.h b/engine/common/netchan.h index f3205795..c2138acd 100644 --- a/engine/common/netchan.h +++ b/engine/common/netchan.h @@ -297,7 +297,7 @@ int Netchan_CreateFileFragments( netchan_t *chan, const char *filename ); void Netchan_Transmit( netchan_t *chan, int lengthInBytes, byte *data ); void Netchan_TransmitBits( netchan_t *chan, int lengthInBits, byte *data ); void Netchan_OutOfBand( int net_socket, netadr_t adr, int length, byte *data ); -void Netchan_OutOfBandPrint( int net_socket, netadr_t adr, char *format, ... ) _format( 3 ); +void Netchan_OutOfBandPrint( int net_socket, netadr_t adr, const char *format, ... ) _format( 3 ); qboolean Netchan_Process( netchan_t *chan, sizebuf_t *msg ); void Netchan_UpdateProgress( netchan_t *chan ); qboolean Netchan_IncomingReady( netchan_t *chan ); diff --git a/engine/common/system.c b/engine/common/system.c index aaa600e4..ff62096a 100644 --- a/engine/common/system.c +++ b/engine/common/system.c @@ -118,7 +118,7 @@ Sys_GetCurrentUser returns username for current profile ================ */ -char *Sys_GetCurrentUser( void ) +const char *Sys_GetCurrentUser( void ) { #if XASH_WIN32 static string s_userName; diff --git a/engine/common/system.h b/engine/common/system.h index 2096e6e0..32b83053 100644 --- a/engine/common/system.h +++ b/engine/common/system.h @@ -48,7 +48,7 @@ writes into struct by offsets not names void Sys_Sleep( int msec ); double Sys_DoubleTime( void ); char *Sys_GetClipboardData( void ); -char *Sys_GetCurrentUser( void ); +const char *Sys_GetCurrentUser( void ); int Sys_CheckParm( const char *parm ); void Sys_Warn( const char *format, ... ) _format( 1 ); void Sys_Error( const char *error, ... ) _format( 1 ); diff --git a/engine/eiface.h b/engine/eiface.h index 3e1032e1..ddea7f96 100644 --- a/engine/eiface.h +++ b/engine/eiface.h @@ -384,7 +384,7 @@ typedef enum _fieldtypes typedef struct { FIELDTYPE fieldType; - char *fieldName; + const char *fieldName; int fieldOffset; short fieldSize; short flags; diff --git a/engine/server/server.h b/engine/server/server.h index cb068f51..4e35c77f 100644 --- a/engine/server/server.h +++ b/engine/server/server.h @@ -510,7 +510,7 @@ void SV_WaterMove( edict_t *ent ); // sv_send.c // void SV_SendClientMessages( void ); -void SV_ClientPrintf( sv_client_t *cl, char *fmt, ... ) _format( 2 ); +void SV_ClientPrintf( sv_client_t *cl, const char *fmt, ... ) _format( 2 ); void SV_BroadcastCommand( const char *fmt, ... ) _format( 1 ); // @@ -532,7 +532,7 @@ void SV_ClientThink( sv_client_t *cl, usercmd_t *cmd ); void SV_ExecuteClientMessage( sv_client_t *cl, sizebuf_t *msg ); void SV_ConnectionlessPacket( netadr_t from, sizebuf_t *msg ); edict_t *SV_FakeConnect( const char *netname ); -void SV_ExecuteClientCommand( sv_client_t *cl, char *s ); +void SV_ExecuteClientCommand( sv_client_t *cl, const char *s ); void SV_RunCmd( sv_client_t *cl, usercmd_t *ucmd, int random_seed ); void SV_BuildReconnect( sizebuf_t *msg ); qboolean SV_IsPlayerIndex( int idx ); @@ -540,7 +540,7 @@ int SV_CalcPing( sv_client_t *cl ); void SV_InitClientMove( void ); void SV_UpdateServerInfo( void ); void SV_EndRedirect( void ); -void SV_RejectConnection( netadr_t from, char *fmt, ... ) _format( 2 ); +void SV_RejectConnection( netadr_t from, const char *fmt, ... ) _format( 2 ); // // sv_cmds.c diff --git a/engine/server/sv_client.c b/engine/server/sv_client.c index 3fdee269..f23c098b 100644 --- a/engine/server/sv_client.c +++ b/engine/server/sv_client.c @@ -137,7 +137,7 @@ SV_RejectConnection Rejects connection request and sends back a message ================ */ -void SV_RejectConnection( netadr_t from, char *fmt, ... ) +void SV_RejectConnection( netadr_t from, const char *fmt, ... ) { char text[1024]; va_list argptr; @@ -2118,7 +2118,7 @@ ucmd_t ucmds[] = SV_ExecuteUserCommand ================== */ -void SV_ExecuteClientCommand( sv_client_t *cl, char *s ) +void SV_ExecuteClientCommand( sv_client_t *cl, const char *s ) { ucmd_t *u; diff --git a/engine/server/sv_cmds.c b/engine/server/sv_cmds.c index 7d785ae3..8f694ca0 100644 --- a/engine/server/sv_cmds.c +++ b/engine/server/sv_cmds.c @@ -25,7 +25,7 @@ SV_ClientPrintf Sends text across to be displayed if the level passes ================= */ -void SV_ClientPrintf( sv_client_t *cl, char *fmt, ... ) +void SV_ClientPrintf( sv_client_t *cl, const char *fmt, ... ) { char string[MAX_SYSPATH]; va_list argptr; @@ -48,7 +48,7 @@ SV_BroadcastPrintf Sends text to all active clients ================= */ -void SV_BroadcastPrintf( sv_client_t *ignore, char *fmt, ... ) +void SV_BroadcastPrintf( sv_client_t *ignore, const char *fmt, ... ) { char string[MAX_SYSPATH]; va_list argptr; diff --git a/engine/server/sv_save.c b/engine/server/sv_save.c index 8fdc2b9b..0052ba73 100644 --- a/engine/server/sv_save.c +++ b/engine/server/sv_save.c @@ -810,7 +810,7 @@ static char *StoreHashTable( SAVERESTOREDATA *pSaveData ) { for( i = 0; i < pSaveData->tokenCount; i++ ) { - char *pszToken = pSaveData->pTokens[i] ? pSaveData->pTokens[i] : ""; + const char *pszToken = pSaveData->pTokens[i] ? pSaveData->pTokens[i] : ""; // just copy the token byte-by-byte while( *pszToken )