ref: ed82668431413cf8d5389a631cad56a6c4d2d6da
parent: 9e8fb5bd060cfe44303744978ceab8ab23ee5ae6
author: Konstantinn Bonnet <qu7uux@gmail.com>
date: Tue Jun 2 22:56:38 EDT 2015
misc fixes and cleanup - fix/implement Sys_ConsoleInput, NET_Sleep, NET_AdrToString - nuke Q_strcasecmp et al - remove some redundant definitions of variables, move some where they belong - fix CL_Setenv_f (is this function useful for anything anyway?) - minor cleanups
--- a/README
+++ b/README
@@ -1,28 +1,35 @@
qk2 - (9) quake 2
=================
- - game data dirs are stored in $home/lib/quake2/, e.g. $home/lib/quake2/dicks/
- - 386 and amd64 only
+ - installation
+ . mk install
+ . mkdir -p $home/lib/quake2/baseq2
+ . dircp /n/quake2cd/baseq2 $home/lib/quake2/baseq2
+ - game dir for gamemode "dicks" is stored in $home/lib/quake2/dicks/
+ - tested on 386 and amd64 only
-
horrors
-------
- - #pragma pack on set globally!!!
- - rendering glitches and fault reads on resolutions not originally supported
- (4:3 and SXGA)
+ - rendering glitches and fault reads on resolutions not originally
+ supported (anything other than 4:3)
- edict_t definitions merged without much looking
- - q_sh9: stupid posixish glob stuff
- - net_udp mostly horrid
+ - plan9/misc.c: stupid posixish glob stuff
+ - plan9/udp.c mostly horrid
- portme: cd_9
- garbled stdout (Sys_ConsoleOutput): \r instead of \n
- - dedicated 1: input not working (Sys_ConsoleInput)
- - race between mproc and IN_Commands
- cinematic palette is fucked up if you resize during playback
- - sound only works thanks to shitty workarounds
- - bad/unsafe rename() implementation
+ - sound only (sortof) works thanks to shitty workarounds
- ctf is untouched, so are rogue, xatrix
+differences with linux/x11 quake2
+---------------------------------
+ - mouse wheel up and down recognized and useable (but parsing is ugly)
+ - mouse buttons have (correct) plan9 names
+ - arbitrary resolutions up to 4096x4096 allowed (ref/r_local.h) and
+ resize by dragging window edges
+ - no dynamic linking → "modules" are statically linked
legal
-----
Quake 2, hence qk2, is licensed under the GPLv2. See COPYING for details.
-All of the Q2 data files remain copyrighted and licensed under the original terms.
+All of the Q2 data files remain copyrighted and licensed under the original
+terms.
--- a/client/cl_input.c
+++ b/client/cl_input.c
@@ -26,7 +26,6 @@
cvar_t *cl_nodelta;
-extern unsigned sys_frame_time;
unsigned frame_msec;
unsigned old_sys_frame_time;
--- a/client/cl_inv.c
+++ b/client/cl_inv.c
@@ -120,7 +120,7 @@
Com_sprintf (binding, sizeof(binding), "use %s", cl.configstrings[CS_ITEMS+item]);
bind = "";
for (j=0 ; j<256 ; j++)
- if (keybindings[j] && !Q_strcasecmp (keybindings[j], binding))
+ if (keybindings[j] && !cistrcmp (keybindings[j], binding))
{
bind = Key_KeynumToString(j);
break;
--- a/client/cl_main.c
+++ b/client/cl_main.c
@@ -24,8 +24,6 @@
#include <stdio.h>
#include "../q_shared.h"
-cvar_t *freelook;
-
cvar_t *adr0;
cvar_t *adr1;
cvar_t *adr2;
@@ -63,15 +61,6 @@
cvar_t *cl_paused;
cvar_t *cl_timedemo;
-cvar_t *lookspring;
-cvar_t *lookstrafe;
-cvar_t *sensitivity;
-
-cvar_t *m_pitch;
-cvar_t *m_yaw;
-cvar_t *m_forward;
-cvar_t *m_side;
-
cvar_t *cl_lightlevel;
//
@@ -304,37 +293,31 @@
}
}
-void CL_Setenv_f( void )
+void
+CL_Setenv_f(void)
{
int i, l = 0, argc;
- char name[1024], val[1024] = {0}, *env;
+ char name[1024], val[1024], *env;
argc = Cmd_Argc();
- if (argc > 2)
- {
+ if(argc > 2){
strncpy(name, Cmd_Argv(1), sizeof name);
- for (i = 2; i < argc; i++)
- {
- strncpy (val+l, Cmd_Argv(i), sizeof name - l - 2);
- strcat (val, " ");
- l = strlen (val);
+ for(i = 2; i < argc; i++){
+ strncpy(val+l, Cmd_Argv(i), sizeof(name) - l - 2);
+ val[sizeof(val)-2] = 0;
+ strcat(val, " ");
+ l = strlen(val);
}
- putenv (name, val);
+ putenv(name, val);
+ }else if(argc == 2){
+ env = getenv(Cmd_Argv(1));
+ if(env){
+ Com_Printf("%s=%s\n", Cmd_Argv(1), env);
+ free(env);
+ }else
+ Com_Printf("%s undefined\n", Cmd_Argv(1), env);
}
- else if (argc == 2)
- {
- env = getenv (Cmd_Argv(1));
- if (env)
- {
- Com_Printf ("%s=%s\n", Cmd_Argv(1), env);
- free (env);
- }
- else
- {
- Com_Printf ("%s undefined\n", Cmd_Argv(1), env);
- }
- }
}
@@ -1064,9 +1047,9 @@
strncpy(sk, skin->string, sizeof(sk) - 1);
if ((p = strchr(sk, '/')) != NULL)
*p = 0;
- if (Q_strcasecmp(sk, "male") == 0 || Q_strcasecmp(sk, "cyborg") == 0)
+ if (cistrcmp(sk, "male") == 0 || cistrcmp(sk, "cyborg") == 0)
Cvar_Set ("gender", "male");
- else if (Q_strcasecmp(sk, "female") == 0 || Q_strcasecmp(sk, "crackhor") == 0)
+ else if (cistrcmp(sk, "female") == 0 || cistrcmp(sk, "crackhor") == 0)
Cvar_Set ("gender", "female");
else
Cvar_Set ("gender", "none");
@@ -1443,16 +1426,7 @@
cl_anglespeedkey = Cvar_Get ("cl_anglespeedkey", "1.5", 0);
cl_run = Cvar_Get ("cl_run", "0", CVAR_ARCHIVE);
- freelook = Cvar_Get( "freelook", "0", CVAR_ARCHIVE );
- lookspring = Cvar_Get ("lookspring", "0", CVAR_ARCHIVE);
- lookstrafe = Cvar_Get ("lookstrafe", "0", CVAR_ARCHIVE);
- sensitivity = Cvar_Get ("sensitivity", "3", CVAR_ARCHIVE);
- m_pitch = Cvar_Get ("m_pitch", "0.022", CVAR_ARCHIVE);
- m_yaw = Cvar_Get ("m_yaw", "0.022", 0);
- m_forward = Cvar_Get ("m_forward", "1", 0);
- m_side = Cvar_Get ("m_side", "1", 0);
-
cl_shownet = Cvar_Get ("cl_shownet", "0", 0);
cl_showmiss = Cvar_Get ("cl_showmiss", "0", 0);
cl_showclamp = Cvar_Get ("showclamp", "0", 0);
@@ -1775,7 +1749,9 @@
*/
void CL_Init (void)
{
- if (dedicated->value)
+ IN_Init();
+
+ if(dedicated->value)
return; // nothing running on the client
// all archived variables will now be loaded
@@ -1796,12 +1772,10 @@
CDAudio_Init ();
CL_InitLocal ();
- IN_Init ();
// Cbuf_AddText ("exec autoexec.cfg\n");
FS_ExecAutoexec ();
Cbuf_Execute ();
-
}
--- a/client/cl_newfx.c
+++ b/client/cl_newfx.c
@@ -27,7 +27,6 @@
extern cparticle_t *active_particles, *free_particles;
extern cparticle_t particles[MAX_PARTICLES];
extern int cl_numparticles;
-extern cvar_t *vid_ref;
extern void MakeNormalVectors (vec3_t forward, vec3_t right, vec3_t up);
--- a/client/cl_parse.c
+++ b/client/cl_parse.c
@@ -192,7 +192,8 @@
S_EndRegistration ();
}
-void rename (char *old, char *new) /* FIXME: unsafe impl. */
+static void
+rename(char *old, char *new)
{
char *p;
Dir d;
@@ -456,7 +457,7 @@
// if we don't have the skin and the model wasn't male,
// see if the male has it (this is for CTF's skins)
- if (!ci->skin && Q_strcasecmp(model_name, "male"))
+ if (!ci->skin && cistrcmp(model_name, "male"))
{
// change model to male
strcpy(model_name, "male");
--- a/client/client.h
+++ b/client/client.h
@@ -21,8 +21,6 @@
//#define PARANOID // speed sapping error checking
-#pragma pack off
-
//=============================================================================
typedef struct
{
@@ -257,17 +255,6 @@
extern cvar_t *cl_showmiss;
extern cvar_t *cl_showclamp;
-extern cvar_t *lookspring;
-extern cvar_t *lookstrafe;
-extern cvar_t *sensitivity;
-
-extern cvar_t *m_pitch;
-extern cvar_t *m_yaw;
-extern cvar_t *m_forward;
-extern cvar_t *m_side;
-
-extern cvar_t *freelook;
-
extern cvar_t *cl_lightlevel; // FIXME HACK
extern cvar_t *cl_paused;
@@ -566,5 +553,3 @@
void x86_TimerInit( unsigned long smallest, unsigned longest );
unsigned long *x86_TimerGetHistogram( void );
#endif
-
-#pragma pack on
--- a/client/input.h
+++ b/client/input.h
@@ -19,6 +19,13 @@
*/
// input.h -- external (non-keyboard) input devices
+extern cvar_t *in_joystick;
+extern cvar_t *lookspring;
+extern cvar_t *lookstrafe;
+extern cvar_t *sensitivity;
+extern cvar_t *freelook;
+extern cvar_t *m_pitch;
+
void IN_Init (void);
void IN_Shutdown (void);
--- a/client/keys.c
+++ b/client/keys.c
@@ -462,7 +462,7 @@
for (kn=keynames ; kn->name ; kn++)
{
- if (!Q_strcasecmp(str,kn->name))
+ if (!cistrcmp(str,kn->name))
return kn->keynum;
}
return -1;
--- a/client/menu.c
+++ b/client/menu.c
@@ -1014,7 +1014,6 @@
=======================================================================
*/
static cvar_t *win_noalttab;
-extern cvar_t *in_joystick;
static menuframework_s s_options_menu;
static menuaction_s s_options_defaults_action;
@@ -2255,7 +2254,7 @@
index = ( menuaction_s * ) self - s_joinserver_server_actions;
- if ( Q_strcasecmp( local_server_names[index], NO_SERVER_STRING ) == 0 )
+ if ( cistrcmp( local_server_names[index], NO_SERVER_STRING ) == 0 )
return;
if (index >= m_num_servers)
@@ -2473,21 +2472,21 @@
spot = NULL;
if (s_rules_box.curvalue == 1) // PGM
{
- if(Q_strcasecmp(startmap, "bunk1") == 0)
+ if(cistrcmp(startmap, "bunk1") == 0)
spot = "start";
- else if(Q_strcasecmp(startmap, "mintro") == 0)
+ else if(cistrcmp(startmap, "mintro") == 0)
spot = "start";
- else if(Q_strcasecmp(startmap, "fact1") == 0)
+ else if(cistrcmp(startmap, "fact1") == 0)
spot = "start";
- else if(Q_strcasecmp(startmap, "power1") == 0)
+ else if(cistrcmp(startmap, "power1") == 0)
spot = "pstart";
- else if(Q_strcasecmp(startmap, "biggun") == 0)
+ else if(cistrcmp(startmap, "biggun") == 0)
spot = "bstart";
- else if(Q_strcasecmp(startmap, "hangar1") == 0)
+ else if(cistrcmp(startmap, "hangar1") == 0)
spot = "unitstart";
- else if(Q_strcasecmp(startmap, "city1") == 0)
+ else if(cistrcmp(startmap, "city1") == 0)
spot = "unitstart";
- else if(Q_strcasecmp(startmap, "boss1") == 0)
+ else if(cistrcmp(startmap, "boss1") == 0)
spot = "bosstart";
}
@@ -3651,7 +3650,7 @@
for ( i = 0; i < s_numplayermodels; i++ )
{
s_pmnames[i] = s_pmi[i].displayname;
- if ( Q_strcasecmp( s_pmi[i].directory, currentdirectory ) == 0 )
+ if ( cistrcmp( s_pmi[i].directory, currentdirectory ) == 0 )
{
int j;
@@ -3659,7 +3658,7 @@
for ( j = 0; j < s_pmi[i].nskins; j++ )
{
- if ( Q_strcasecmp( s_pmi[i].skindisplaynames[j], currentskin ) == 0 )
+ if ( cistrcmp( s_pmi[i].skindisplaynames[j], currentskin ) == 0 )
{
currentskinindex = j;
break;
--- a/client/ref.h
+++ b/client/ref.h
@@ -220,3 +220,6 @@
// this is the only function actually exported at the linker level
typedef refexport_t (*GetRefAPI_t) (refimport_t);
+
+extern cvar_t *vid_fullscreen;
+extern cvar_t *vid_gamma;
--- a/ctf/g_cmds.c
+++ b/ctf/g_cmds.c
@@ -178,12 +178,12 @@
name = gi.args();
- if (Q_strcasecmp(name, "all") == 0)
+ if (cistrcmp(name, "all") == 0)
give_all = true;
else
give_all = false;
- if (give_all || Q_strcasecmp(gi.argv(1), "health") == 0)
+ if (give_all || cistrcmp(gi.argv(1), "health") == 0)
{
if (gi.argc() == 3)
ent->health = atoi(gi.argv(2));
@@ -193,7 +193,7 @@
return;
}
- if (give_all || Q_strcasecmp(name, "weapons") == 0)
+ if (give_all || cistrcmp(name, "weapons") == 0)
{
for (i=0 ; i<game.num_items ; i++)
{
@@ -208,7 +208,7 @@
return;
}
- if (give_all || Q_strcasecmp(name, "ammo") == 0)
+ if (give_all || cistrcmp(name, "ammo") == 0)
{
for (i=0 ; i<game.num_items ; i++)
{
@@ -223,7 +223,7 @@
return;
}
- if (give_all || Q_strcasecmp(name, "armor") == 0)
+ if (give_all || cistrcmp(name, "armor") == 0)
{
gitem_armor_t *info;
@@ -241,7 +241,7 @@
return;
}
- if (give_all || Q_strcasecmp(name, "Power Shield") == 0)
+ if (give_all || cistrcmp(name, "Power Shield") == 0)
{
it = FindItem("Power Shield");
it_ent = G_Spawn();
@@ -448,7 +448,7 @@
char *s;
//ZOID--special case for tech powerups
- if (Q_strcasecmp(gi.args(), "tech") == 0 && (it = CTFWhat_Tech(ent)) != NULL) {
+ if (cistrcmp(gi.args(), "tech") == 0 && (it = CTFWhat_Tech(ent)) != NULL) {
it->drop (ent, it);
return;
}
@@ -962,27 +962,27 @@
cmd = gi.argv(0);
- if (Q_strcasecmp (cmd, "players") == 0)
+ if (cistrcmp (cmd, "players") == 0)
{
Cmd_Players_f (ent);
return;
}
- if (Q_strcasecmp (cmd, "say") == 0)
+ if (cistrcmp (cmd, "say") == 0)
{
Cmd_Say_f (ent, false, false);
return;
}
- if (Q_strcasecmp (cmd, "say_team") == 0 || Q_strcasecmp (cmd, "steam") == 0)
+ if (cistrcmp (cmd, "say_team") == 0 || cistrcmp (cmd, "steam") == 0)
{
CTFSay_Team(ent, gi.args());
return;
}
- if (Q_strcasecmp (cmd, "score") == 0)
+ if (cistrcmp (cmd, "score") == 0)
{
Cmd_Score_f (ent);
return;
}
- if (Q_strcasecmp (cmd, "help") == 0)
+ if (cistrcmp (cmd, "help") == 0)
{
Cmd_Help_f (ent);
return;
@@ -991,75 +991,75 @@
if (level.intermissiontime)
return;
- if (Q_strcasecmp (cmd, "use") == 0)
+ if (cistrcmp (cmd, "use") == 0)
Cmd_Use_f (ent);
- else if (Q_strcasecmp (cmd, "drop") == 0)
+ else if (cistrcmp (cmd, "drop") == 0)
Cmd_Drop_f (ent);
- else if (Q_strcasecmp (cmd, "give") == 0)
+ else if (cistrcmp (cmd, "give") == 0)
Cmd_Give_f (ent);
- else if (Q_strcasecmp (cmd, "god") == 0)
+ else if (cistrcmp (cmd, "god") == 0)
Cmd_God_f (ent);
- else if (Q_strcasecmp (cmd, "notarget") == 0)
+ else if (cistrcmp (cmd, "notarget") == 0)
Cmd_Notarget_f (ent);
- else if (Q_strcasecmp (cmd, "noclip") == 0)
+ else if (cistrcmp (cmd, "noclip") == 0)
Cmd_Noclip_f (ent);
- else if (Q_strcasecmp (cmd, "inven") == 0)
+ else if (cistrcmp (cmd, "inven") == 0)
Cmd_Inven_f (ent);
- else if (Q_strcasecmp (cmd, "invnext") == 0)
+ else if (cistrcmp (cmd, "invnext") == 0)
SelectNextItem (ent, -1);
- else if (Q_strcasecmp (cmd, "invprev") == 0)
+ else if (cistrcmp (cmd, "invprev") == 0)
SelectPrevItem (ent, -1);
- else if (Q_strcasecmp (cmd, "invnextw") == 0)
+ else if (cistrcmp (cmd, "invnextw") == 0)
SelectNextItem (ent, IT_WEAPON);
- else if (Q_strcasecmp (cmd, "invprevw") == 0)
+ else if (cistrcmp (cmd, "invprevw") == 0)
SelectPrevItem (ent, IT_WEAPON);
- else if (Q_strcasecmp (cmd, "invnextp") == 0)
+ else if (cistrcmp (cmd, "invnextp") == 0)
SelectNextItem (ent, IT_POWERUP);
- else if (Q_strcasecmp (cmd, "invprevp") == 0)
+ else if (cistrcmp (cmd, "invprevp") == 0)
SelectPrevItem (ent, IT_POWERUP);
- else if (Q_strcasecmp (cmd, "invuse") == 0)
+ else if (cistrcmp (cmd, "invuse") == 0)
Cmd_InvUse_f (ent);
- else if (Q_strcasecmp (cmd, "invdrop") == 0)
+ else if (cistrcmp (cmd, "invdrop") == 0)
Cmd_InvDrop_f (ent);
- else if (Q_strcasecmp (cmd, "weapprev") == 0)
+ else if (cistrcmp (cmd, "weapprev") == 0)
Cmd_WeapPrev_f (ent);
- else if (Q_strcasecmp (cmd, "weapnext") == 0)
+ else if (cistrcmp (cmd, "weapnext") == 0)
Cmd_WeapNext_f (ent);
- else if (Q_strcasecmp (cmd, "weaplast") == 0)
+ else if (cistrcmp (cmd, "weaplast") == 0)
Cmd_WeapLast_f (ent);
- else if (Q_strcasecmp (cmd, "kill") == 0)
+ else if (cistrcmp (cmd, "kill") == 0)
Cmd_Kill_f (ent);
- else if (Q_strcasecmp (cmd, "putaway") == 0)
+ else if (cistrcmp (cmd, "putaway") == 0)
Cmd_PutAway_f (ent);
- else if (Q_strcasecmp (cmd, "wave") == 0)
+ else if (cistrcmp (cmd, "wave") == 0)
Cmd_Wave_f (ent);
//ZOID
- else if (Q_strcasecmp (cmd, "team") == 0)
+ else if (cistrcmp (cmd, "team") == 0)
{
CTFTeam_f (ent);
- } else if (Q_strcasecmp(cmd, "id") == 0) {
+ } else if (cistrcmp(cmd, "id") == 0) {
CTFID_f (ent);
- } else if (Q_strcasecmp(cmd, "yes") == 0) {
+ } else if (cistrcmp(cmd, "yes") == 0) {
CTFVoteYes(ent);
- } else if (Q_strcasecmp(cmd, "no") == 0) {
+ } else if (cistrcmp(cmd, "no") == 0) {
CTFVoteNo(ent);
- } else if (Q_strcasecmp(cmd, "ready") == 0) {
+ } else if (cistrcmp(cmd, "ready") == 0) {
CTFReady(ent);
- } else if (Q_strcasecmp(cmd, "notready") == 0) {
+ } else if (cistrcmp(cmd, "notready") == 0) {
CTFNotReady(ent);
- } else if (Q_strcasecmp(cmd, "ghost") == 0) {
+ } else if (cistrcmp(cmd, "ghost") == 0) {
CTFGhost(ent);
- } else if (Q_strcasecmp(cmd, "admin") == 0) {
+ } else if (cistrcmp(cmd, "admin") == 0) {
CTFAdmin(ent);
- } else if (Q_strcasecmp(cmd, "stats") == 0) {
+ } else if (cistrcmp(cmd, "stats") == 0) {
CTFStats(ent);
- } else if (Q_strcasecmp(cmd, "warp") == 0) {
+ } else if (cistrcmp(cmd, "warp") == 0) {
CTFWarp(ent);
- } else if (Q_strcasecmp(cmd, "boot") == 0) {
+ } else if (cistrcmp(cmd, "boot") == 0) {
CTFBoot(ent);
- } else if (Q_strcasecmp(cmd, "playerlist") == 0) {
+ } else if (cistrcmp(cmd, "playerlist") == 0) {
CTFPlayerList(ent);
- } else if (Q_strcasecmp(cmd, "observer") == 0) {
+ } else if (cistrcmp(cmd, "observer") == 0) {
CTFObserver(ent);
}
//ZOID
--- a/ctf/g_ctf.c
+++ b/ctf/g_ctf.c
@@ -1535,9 +1535,9 @@
return;
}
- if (Q_strcasecmp(t, "red") == 0)
+ if (cistrcmp(t, "red") == 0)
desired_team = CTF_TEAM1;
- else if (Q_strcasecmp(t, "blue") == 0)
+ else if (cistrcmp(t, "blue") == 0)
desired_team = CTF_TEAM2;
else {
gi.cprintf(ent, PRINT_HIGH, "Unknown team %s.\n", t);
@@ -3128,10 +3128,10 @@
}
if (ctf_forcejoin->string && *ctf_forcejoin->string) {
- if (stricmp(ctf_forcejoin->string, "red") == 0) {
+ if(!cistrcmp(ctf_forcejoin->string, "red")){
joinmenu[jmenu_blue].text = NULL;
joinmenu[jmenu_blue].SelectFunc = NULL;
- } else if (stricmp(ctf_forcejoin->string, "blue") == 0) {
+ }else if(!cistrcmp(ctf_forcejoin->string, "blue")){
joinmenu[jmenu_red].text = NULL;
joinmenu[jmenu_red].SelectFunc = NULL;
}
@@ -3948,7 +3948,7 @@
token = strtok(mlist, seps);
while (token != NULL) {
- if (Q_strcasecmp(token, gi.argv(1)) == 0)
+ if (cistrcmp(token, gi.argv(1)) == 0)
break;
token = strtok(NULL, seps);
}
--- a/ctf/g_func.c
+++ b/ctf/g_func.c
@@ -860,7 +860,7 @@
while ((t = G_Find (t, FOFS(targetname), self->target)))
{
- if (Q_strcasecmp(t->classname, "func_areaportal") == 0)
+ if (cistrcmp(t->classname, "func_areaportal") == 0)
{
gi.SetAreaPortalState (t->style, open);
}
--- a/ctf/g_items.c
+++ b/ctf/g_items.c
@@ -86,7 +86,7 @@
{
if (!it->classname)
continue;
- if (!Q_strcasecmp(it->classname, classname))
+ if (!cistrcmp(it->classname, classname))
return it;
}
@@ -109,7 +109,7 @@
{
if (!it->pickup_name)
continue;
- if (!Q_strcasecmp(it->pickup_name, pickup_name))
+ if (!cistrcmp(it->pickup_name, pickup_name))
return it;
}
--- a/ctf/g_main.c
+++ b/ctf/g_main.c
@@ -213,7 +213,7 @@
f = NULL;
t = strtok(s, seps);
while (t != NULL) {
- if (Q_strcasecmp(t, level.mapname) == 0) {
+ if (cistrcmp(t, level.mapname) == 0) {
// it's in the list, go to the next one
t = strtok(NULL, seps);
if (t == NULL) { // end of list, go to first one
--- a/ctf/g_spawn.c
+++ b/ctf/g_spawn.c
@@ -385,7 +385,7 @@
for (f=fields ; f->name ; f++)
{
- if (!Q_strcasecmp(f->name, key))
+ if (!cistrcmp(f->name, key))
{ // found it
if (f->flags & FFL_SPAWNTEMP)
b = (byte *)&st;
@@ -588,7 +588,7 @@
entities = ED_ParseEdict (entities, ent);
// yet another map hack
- if (!stricmp(level.mapname, "command") && !stricmp(ent->classname, "trigger_once") && !stricmp(ent->model, "*27"))
+ if(!cistrcmp(level.mapname, "command") && !cistrcmp(ent->classname, "trigger_once") && !cistrcmp(ent->model, "*27"))
ent->spawnflags &= ~SPAWNFLAG_NOT_HARD;
// remove things (except the world) from different skill levels or deathmatch
--- a/ctf/g_svcmds.c
+++ b/ctf/g_svcmds.c
@@ -41,7 +41,7 @@
char *cmd;
cmd = gi.argv(1);
- if (Q_strcasecmp (cmd, "test") == 0)
+ if (cistrcmp (cmd, "test") == 0)
Svcmd_Test_f ();
else
gi.cprintf (NULL, PRINT_HIGH, "Unknown server command \"%s\"\n", cmd);
--- a/ctf/g_target.c
+++ b/ctf/g_target.c
@@ -178,7 +178,7 @@
ent->svflags = SVF_NOCLIENT;
level.total_secrets++;
// map bug hack
- if (!stricmp(level.mapname, "mine3") && ent->s.origin[0] == 280 && ent->s.origin[1] == -2048 && ent->s.origin[2] == -624)
+ if (!cistrcmp(level.mapname, "mine3") && ent->s.origin[0] == 280 && ent->s.origin[1] == -2048 && ent->s.origin[2] == -624)
ent->message = "You have found a secret area.";
}
@@ -311,7 +311,7 @@
}
// ugly hack because *SOMEBODY* screwed up their map
- if((stricmp(level.mapname, "fact1") == 0) && (stricmp(ent->map, "fact3") == 0))
+ if((cistrcmp(level.mapname, "fact1") == 0) && (cistrcmp(ent->map, "fact3") == 0))
ent->map = "fact3$secret1";
ent->use = use_target_changelevel;
--- a/ctf/g_utils.c
+++ b/ctf/g_utils.c
@@ -59,7 +59,7 @@
s = *(char **) ((byte *)from + fieldofs);
if (!s)
continue;
- if (!Q_strcasecmp (s, match))
+ if (!cistrcmp (s, match))
return from;
}
@@ -235,8 +235,8 @@
while ((t = G_Find (t, FOFS(targetname), ent->target)))
{
// doors fire area portals in a specific way
- if (!Q_strcasecmp(t->classname, "func_areaportal") &&
- (!Q_strcasecmp(ent->classname, "func_door") || !Q_strcasecmp(ent->classname, "func_door_rotating")))
+ if (!cistrcmp(t->classname, "func_areaportal") &&
+ (!cistrcmp(ent->classname, "func_door") || !cistrcmp(ent->classname, "func_door_rotating")))
continue;
if (t == ent)
--- a/ctf/p_client.c
+++ b/ctf/p_client.c
@@ -55,7 +55,7 @@
VectorSubtract(self->s.origin, spot->s.origin, d);
if (VectorLength(d) < 384)
{
- if ((!self->targetname) || stricmp(self->targetname, spot->targetname) != 0)
+ if ((!self->targetname) || cistrcmp(self->targetname, spot->targetname) != 0)
{
// gi.dprintf("FixCoopSpots changed %s at %s targetname from %s to %s\n", self->classname, vtos(self->s.origin), self->targetname, spot->targetname);
self->targetname = spot->targetname;
@@ -73,7 +73,7 @@
{
edict_t *spot;
- if(stricmp(level.mapname, "security") == 0)
+ if(cistrcmp(level.mapname, "security") == 0)
{
spot = G_Spawn();
spot->classname = "info_player_coop";
@@ -111,7 +111,7 @@
{
if (!coop->value)
return;
- if(stricmp(level.mapname, "security") == 0)
+ if(cistrcmp(level.mapname, "security") == 0)
{
// invoke one of our gross, ugly, disgusting hacks
self->think = SP_CreateCoopSpots;
@@ -144,20 +144,20 @@
return;
}
- if((stricmp(level.mapname, "jail2") == 0) ||
- (stricmp(level.mapname, "jail4") == 0) ||
- (stricmp(level.mapname, "mine1") == 0) ||
- (stricmp(level.mapname, "mine2") == 0) ||
- (stricmp(level.mapname, "mine3") == 0) ||
- (stricmp(level.mapname, "mine4") == 0) ||
- (stricmp(level.mapname, "lab") == 0) ||
- (stricmp(level.mapname, "boss1") == 0) ||
- (stricmp(level.mapname, "fact3") == 0) ||
- (stricmp(level.mapname, "biggun") == 0) ||
- (stricmp(level.mapname, "space") == 0) ||
- (stricmp(level.mapname, "command") == 0) ||
- (stricmp(level.mapname, "power2") == 0) ||
- (stricmp(level.mapname, "strike") == 0))
+ if((cistrcmp(level.mapname, "jail2") == 0) ||
+ (cistrcmp(level.mapname, "jail4") == 0) ||
+ (cistrcmp(level.mapname, "mine1") == 0) ||
+ (cistrcmp(level.mapname, "mine2") == 0) ||
+ (cistrcmp(level.mapname, "mine3") == 0) ||
+ (cistrcmp(level.mapname, "mine4") == 0) ||
+ (cistrcmp(level.mapname, "lab") == 0) ||
+ (cistrcmp(level.mapname, "boss1") == 0) ||
+ (cistrcmp(level.mapname, "fact3") == 0) ||
+ (cistrcmp(level.mapname, "biggun") == 0) ||
+ (cistrcmp(level.mapname, "space") == 0) ||
+ (cistrcmp(level.mapname, "command") == 0) ||
+ (cistrcmp(level.mapname, "power2") == 0) ||
+ (cistrcmp(level.mapname, "strike") == 0))
{
// invoke one of our gross, ugly, disgusting hacks
self->think = SP_FixCoopSpots;
@@ -882,7 +882,7 @@
target = spot->targetname;
if (!target)
target = "";
- if ( Q_strcasecmp(game.spawnpoint, target) == 0 )
+ if ( cistrcmp(game.spawnpoint, target) == 0 )
{ // this is a coop spawn point for one of the clients here
index--;
if (!index)
@@ -927,7 +927,7 @@
if (!game.spawnpoint[0] || !spot->targetname)
continue;
- if (Q_strcasecmp(game.spawnpoint, spot->targetname) == 0)
+ if (cistrcmp(game.spawnpoint, spot->targetname) == 0)
break;
}
--- a/ctf/p_weapon.c
+++ b/ctf/p_weapon.c
@@ -554,12 +554,12 @@
fire_frames, fire);
// run the weapon frame again if hasted
- if (stricmp(ent->client->pers.weapon->pickup_name, "Grapple") == 0 &&
+ if (cistrcmp(ent->client->pers.weapon->pickup_name, "Grapple") == 0 &&
ent->client->weaponstate == WEAPON_FIRING)
return;
if ((CTFApplyHaste(ent) ||
- (Q_strcasecmp(ent->client->pers.weapon->pickup_name, "Grapple") == 0 &&
+ (cistrcmp(ent->client->pers.weapon->pickup_name, "Grapple") == 0 &&
ent->client->weaponstate != WEAPON_FIRING))
&& oldstate == ent->client->weaponstate) {
Weapon_Generic2 (ent, FRAME_ACTIVATE_LAST, FRAME_FIRE_LAST,
--- a/ctf/q_shared.c
+++ b/ctf/q_shared.c
@@ -26,10 +26,6 @@
//============================================================================
-#ifdef _WIN32
-#pragma optimize( "", off )
-#endif
-
void RotatePointAroundVector( vec3_t dst, const vec3_t dir, const vec3_t point, float degrees )
{
float m[3][3];
@@ -85,12 +81,6 @@
}
}
-#ifdef _WIN32
-#pragma optimize( "", on )
-#endif
-
-
-
void AngleVectors (vec3_t angles, vec3_t forward, vec3_t right, vec3_t up)
{
float angle;
@@ -251,31 +241,16 @@
float Q_fabs (float f)
{
-#if 0
+ /*
if (f >= 0)
return f;
return -f;
-#else
+ */
int tmp = * ( int * ) &f;
tmp &= 0x7FFFFFFF;
return * ( float * ) &tmp;
-#endif
}
-#if defined _M_IX86 && !defined C_ONLY
-#pragma warning (disable:4035)
-//__declspec( naked ) long Q_ftol( float f )
-long Q_ftol( float f )
-{
- static int tmp;
- __asm fld dword ptr [esp+4]
- __asm fistp tmp
- __asm mov eax, tmp
- __asm ret
-}
-#pragma warning (default:4035)
-#endif
-
/*
===============
LerpAngle
@@ -347,7 +322,6 @@
Returns 1, 2, or 1 + 2
==================
*/
-//#if !id386
int BoxOnPlaneSide (vec3_t emins, vec3_t emaxs, struct cplane_s *p)
{
float dist1, dist2;
@@ -414,244 +388,7 @@
return sides;
}
-//#else
-#pragma warning( disable: 4035 )
-/*
-//__declspec( naked ) int BoxOnPlaneSide (vec3_t emins, vec3_t emaxs, struct cplane_s *p)
-int BoxOnPlaneSide (vec3_t emins, vec3_t emaxs, struct cplane_s *p)
-{
- static int bops_initialized;
- static int Ljmptab[8];
-
- __asm {
-
- push ebx
-
- cmp bops_initialized, 1
- je initialized
- mov bops_initialized, 1
-
- mov Ljmptab[0*4], offset Lcase0
- mov Ljmptab[1*4], offset Lcase1
- mov Ljmptab[2*4], offset Lcase2
- mov Ljmptab[3*4], offset Lcase3
- mov Ljmptab[4*4], offset Lcase4
- mov Ljmptab[5*4], offset Lcase5
- mov Ljmptab[6*4], offset Lcase6
- mov Ljmptab[7*4], offset Lcase7
-
-initialized:
-
- mov edx,ds:dword ptr[4+12+esp]
- mov ecx,ds:dword ptr[4+4+esp]
- xor eax,eax
- mov ebx,ds:dword ptr[4+8+esp]
- mov al,ds:byte ptr[17+edx]
- cmp al,8
- jge Lerror
- fld ds:dword ptr[0+edx]
- fld st(0)
- jmp dword ptr[Ljmptab+eax*4]
-Lcase0:
- fmul ds:dword ptr[ebx]
- fld ds:dword ptr[0+4+edx]
- fxch st(2)
- fmul ds:dword ptr[ecx]
- fxch st(2)
- fld st(0)
- fmul ds:dword ptr[4+ebx]
- fld ds:dword ptr[0+8+edx]
- fxch st(2)
- fmul ds:dword ptr[4+ecx]
- fxch st(2)
- fld st(0)
- fmul ds:dword ptr[8+ebx]
- fxch st(5)
- faddp st(3),st(0)
- fmul ds:dword ptr[8+ecx]
- fxch st(1)
- faddp st(3),st(0)
- fxch st(3)
- faddp st(2),st(0)
- jmp LSetSides
-Lcase1:
- fmul ds:dword ptr[ecx]
- fld ds:dword ptr[0+4+edx]
- fxch st(2)
- fmul ds:dword ptr[ebx]
- fxch st(2)
- fld st(0)
- fmul ds:dword ptr[4+ebx]
- fld ds:dword ptr[0+8+edx]
- fxch st(2)
- fmul ds:dword ptr[4+ecx]
- fxch st(2)
- fld st(0)
- fmul ds:dword ptr[8+ebx]
- fxch st(5)
- faddp st(3),st(0)
- fmul ds:dword ptr[8+ecx]
- fxch st(1)
- faddp st(3),st(0)
- fxch st(3)
- faddp st(2),st(0)
- jmp LSetSides
-Lcase2:
- fmul ds:dword ptr[ebx]
- fld ds:dword ptr[0+4+edx]
- fxch st(2)
- fmul ds:dword ptr[ecx]
- fxch st(2)
- fld st(0)
- fmul ds:dword ptr[4+ecx]
- fld ds:dword ptr[0+8+edx]
- fxch st(2)
- fmul ds:dword ptr[4+ebx]
- fxch st(2)
- fld st(0)
- fmul ds:dword ptr[8+ebx]
- fxch st(5)
- faddp st(3),st(0)
- fmul ds:dword ptr[8+ecx]
- fxch st(1)
- faddp st(3),st(0)
- fxch st(3)
- faddp st(2),st(0)
- jmp LSetSides
-Lcase3:
- fmul ds:dword ptr[ecx]
- fld ds:dword ptr[0+4+edx]
- fxch st(2)
- fmul ds:dword ptr[ebx]
- fxch st(2)
- fld st(0)
- fmul ds:dword ptr[4+ecx]
- fld ds:dword ptr[0+8+edx]
- fxch st(2)
- fmul ds:dword ptr[4+ebx]
- fxch st(2)
- fld st(0)
- fmul ds:dword ptr[8+ebx]
- fxch st(5)
- faddp st(3),st(0)
- fmul ds:dword ptr[8+ecx]
- fxch st(1)
- faddp st(3),st(0)
- fxch st(3)
- faddp st(2),st(0)
- jmp LSetSides
-Lcase4:
- fmul ds:dword ptr[ebx]
- fld ds:dword ptr[0+4+edx]
- fxch st(2)
- fmul ds:dword ptr[ecx]
- fxch st(2)
- fld st(0)
- fmul ds:dword ptr[4+ebx]
- fld ds:dword ptr[0+8+edx]
- fxch st(2)
- fmul ds:dword ptr[4+ecx]
- fxch st(2)
- fld st(0)
- fmul ds:dword ptr[8+ecx]
- fxch st(5)
- faddp st(3),st(0)
- fmul ds:dword ptr[8+ebx]
- fxch st(1)
- faddp st(3),st(0)
- fxch st(3)
- faddp st(2),st(0)
- jmp LSetSides
-Lcase5:
- fmul ds:dword ptr[ecx]
- fld ds:dword ptr[0+4+edx]
- fxch st(2)
- fmul ds:dword ptr[ebx]
- fxch st(2)
- fld st(0)
- fmul ds:dword ptr[4+ebx]
- fld ds:dword ptr[0+8+edx]
- fxch st(2)
- fmul ds:dword ptr[4+ecx]
- fxch st(2)
- fld st(0)
- fmul ds:dword ptr[8+ecx]
- fxch st(5)
- faddp st(3),st(0)
- fmul ds:dword ptr[8+ebx]
- fxch st(1)
- faddp st(3),st(0)
- fxch st(3)
- faddp st(2),st(0)
- jmp LSetSides
-Lcase6:
- fmul ds:dword ptr[ebx]
- fld ds:dword ptr[0+4+edx]
- fxch st(2)
- fmul ds:dword ptr[ecx]
- fxch st(2)
- fld st(0)
- fmul ds:dword ptr[4+ecx]
- fld ds:dword ptr[0+8+edx]
- fxch st(2)
- fmul ds:dword ptr[4+ebx]
- fxch st(2)
- fld st(0)
- fmul ds:dword ptr[8+ecx]
- fxch st(5)
- faddp st(3),st(0)
- fmul ds:dword ptr[8+ebx]
- fxch st(1)
- faddp st(3),st(0)
- fxch st(3)
- faddp st(2),st(0)
- jmp LSetSides
-Lcase7:
- fmul ds:dword ptr[ecx]
- fld ds:dword ptr[0+4+edx]
- fxch st(2)
- fmul ds:dword ptr[ebx]
- fxch st(2)
- fld st(0)
- fmul ds:dword ptr[4+ecx]
- fld ds:dword ptr[0+8+edx]
- fxch st(2)
- fmul ds:dword ptr[4+ebx]
- fxch st(2)
- fld st(0)
- fmul ds:dword ptr[8+ecx]
- fxch st(5)
- faddp st(3),st(0)
- fmul ds:dword ptr[8+ebx]
- fxch st(1)
- faddp st(3),st(0)
- fxch st(3)
- faddp st(2),st(0)
-LSetSides:
- faddp st(2),st(0)
- fcomp ds:dword ptr[12+edx]
- xor ecx,ecx
- fnstsw ax
- fcomp ds:dword ptr[12+edx]
- and ah,1
- xor ah,1
- add cl,ah
- fnstsw ax
- and ah,1
- add ah,ah
- add cl,ah
- pop ebx
- mov eax,ecx
- ret
-Lerror:
- int 3
- }
-}
-#pragma warning( default: 4035 )
-//#endif
-*/
-
void ClearBounds (vec3_t mins, vec3_t maxs)
{
mins[0] = mins[1] = mins[2] = 99999;
@@ -1171,49 +908,6 @@
for (i=size-1 ; i>0 ; i-=4096)
paged_total += buffer[i];
}
-
-
-
-/*
-============================================================================
-
- LIBRARY REPLACEMENT FUNCTIONS
-
-============================================================================
-*/
-
-int Q_strncasecmp (char *s1, char *s2, int n)
-{
- int c1, c2;
-
- do
- {
- c1 = *s1++;
- c2 = *s2++;
-
- if (!n--)
- return 0; // strings are equal until end point
-
- if (c1 != c2)
- {
- if (c1 >= 'a' && c1 <= 'z')
- c1 -= ('a' - 'A');
- if (c2 >= 'a' && c2 <= 'z')
- c2 -= ('a' - 'A');
- if (c1 != c2)
- return -1; // strings not equal
- }
- } while (c1);
-
- return 0; // strings are equal
-}
-
-int Q_strcasecmp (char *s1, char *s2)
-{
- return Q_strncasecmp (s1, s2, 99999);
-}
-
-
void Com_sprintf (char *dest, int size, char *fmt, ...)
{
--- a/game/g_cmds.c
+++ b/game/g_cmds.c
@@ -169,12 +169,12 @@
name = gi.args();
- if (Q_strcasecmp(name, "all") == 0)
+ if (cistrcmp(name, "all") == 0)
give_all = true;
else
give_all = false;
- if (give_all || Q_strcasecmp(gi.argv(1), "health") == 0)
+ if (give_all || cistrcmp(gi.argv(1), "health") == 0)
{
if (gi.argc() == 3)
ent->health = atoi(gi.argv(2));
@@ -184,7 +184,7 @@
return;
}
- if (give_all || Q_strcasecmp(name, "weapons") == 0)
+ if (give_all || cistrcmp(name, "weapons") == 0)
{
for (i=0 ; i<game.num_items ; i++)
{
@@ -199,7 +199,7 @@
return;
}
- if (give_all || Q_strcasecmp(name, "ammo") == 0)
+ if (give_all || cistrcmp(name, "ammo") == 0)
{
for (i=0 ; i<game.num_items ; i++)
{
@@ -214,7 +214,7 @@
return;
}
- if (give_all || Q_strcasecmp(name, "armor") == 0)
+ if (give_all || cistrcmp(name, "armor") == 0)
{
gitem_armor_t *info;
@@ -232,7 +232,7 @@
return;
}
- if (give_all || Q_strcasecmp(name, "Power Shield") == 0)
+ if (give_all || cistrcmp(name, "Power Shield") == 0)
{
it = FindItem("Power Shield");
it_ent = G_Spawn();
@@ -917,27 +917,27 @@
cmd = gi.argv(0);
- if (Q_strcasecmp (cmd, "players") == 0)
+ if (cistrcmp (cmd, "players") == 0)
{
Cmd_Players_f (ent);
return;
}
- if (Q_strcasecmp (cmd, "say") == 0)
+ if (cistrcmp (cmd, "say") == 0)
{
Cmd_Say_f (ent, false, false);
return;
}
- if (Q_strcasecmp (cmd, "say_team") == 0)
+ if (cistrcmp (cmd, "say_team") == 0)
{
Cmd_Say_f (ent, true, false);
return;
}
- if (Q_strcasecmp (cmd, "score") == 0)
+ if (cistrcmp (cmd, "score") == 0)
{
Cmd_Score_f (ent);
return;
}
- if (Q_strcasecmp (cmd, "help") == 0)
+ if (cistrcmp (cmd, "help") == 0)
{
Cmd_Help_f (ent);
return;
@@ -946,49 +946,49 @@
if (level.intermissiontime)
return;
- if (Q_strcasecmp (cmd, "use") == 0)
+ if (cistrcmp (cmd, "use") == 0)
Cmd_Use_f (ent);
- else if (Q_strcasecmp (cmd, "drop") == 0)
+ else if (cistrcmp (cmd, "drop") == 0)
Cmd_Drop_f (ent);
- else if (Q_strcasecmp (cmd, "give") == 0)
+ else if (cistrcmp (cmd, "give") == 0)
Cmd_Give_f (ent);
- else if (Q_strcasecmp (cmd, "god") == 0)
+ else if (cistrcmp (cmd, "god") == 0)
Cmd_God_f (ent);
- else if (Q_strcasecmp (cmd, "notarget") == 0)
+ else if (cistrcmp (cmd, "notarget") == 0)
Cmd_Notarget_f (ent);
- else if (Q_strcasecmp (cmd, "noclip") == 0)
+ else if (cistrcmp (cmd, "noclip") == 0)
Cmd_Noclip_f (ent);
- else if (Q_strcasecmp (cmd, "inven") == 0)
+ else if (cistrcmp (cmd, "inven") == 0)
Cmd_Inven_f (ent);
- else if (Q_strcasecmp (cmd, "invnext") == 0)
+ else if (cistrcmp (cmd, "invnext") == 0)
SelectNextItem (ent, -1);
- else if (Q_strcasecmp (cmd, "invprev") == 0)
+ else if (cistrcmp (cmd, "invprev") == 0)
SelectPrevItem (ent, -1);
- else if (Q_strcasecmp (cmd, "invnextw") == 0)
+ else if (cistrcmp (cmd, "invnextw") == 0)
SelectNextItem (ent, IT_WEAPON);
- else if (Q_strcasecmp (cmd, "invprevw") == 0)
+ else if (cistrcmp (cmd, "invprevw") == 0)
SelectPrevItem (ent, IT_WEAPON);
- else if (Q_strcasecmp (cmd, "invnextp") == 0)
+ else if (cistrcmp (cmd, "invnextp") == 0)
SelectNextItem (ent, IT_POWERUP);
- else if (Q_strcasecmp (cmd, "invprevp") == 0)
+ else if (cistrcmp (cmd, "invprevp") == 0)
SelectPrevItem (ent, IT_POWERUP);
- else if (Q_strcasecmp (cmd, "invuse") == 0)
+ else if (cistrcmp (cmd, "invuse") == 0)
Cmd_InvUse_f (ent);
- else if (Q_strcasecmp (cmd, "invdrop") == 0)
+ else if (cistrcmp (cmd, "invdrop") == 0)
Cmd_InvDrop_f (ent);
- else if (Q_strcasecmp (cmd, "weapprev") == 0)
+ else if (cistrcmp (cmd, "weapprev") == 0)
Cmd_WeapPrev_f (ent);
- else if (Q_strcasecmp (cmd, "weapnext") == 0)
+ else if (cistrcmp (cmd, "weapnext") == 0)
Cmd_WeapNext_f (ent);
- else if (Q_strcasecmp (cmd, "weaplast") == 0)
+ else if (cistrcmp (cmd, "weaplast") == 0)
Cmd_WeapLast_f (ent);
- else if (Q_strcasecmp (cmd, "kill") == 0)
+ else if (cistrcmp (cmd, "kill") == 0)
Cmd_Kill_f (ent);
- else if (Q_strcasecmp (cmd, "putaway") == 0)
+ else if (cistrcmp (cmd, "putaway") == 0)
Cmd_PutAway_f (ent);
- else if (Q_strcasecmp (cmd, "wave") == 0)
+ else if (cistrcmp (cmd, "wave") == 0)
Cmd_Wave_f (ent);
- else if (Q_strcasecmp(cmd, "playerlist") == 0)
+ else if (cistrcmp(cmd, "playerlist") == 0)
Cmd_PlayerList_f(ent);
else // anything that doesn't match a command will be a chat
Cmd_Say_f (ent, false, true);
--- a/game/g_func.c
+++ b/game/g_func.c
@@ -861,7 +861,7 @@
while ((t = G_Find (t, FOFS(targetname), self->target)))
{
- if (Q_strcasecmp(t->classname, "func_areaportal") == 0)
+ if (cistrcmp(t->classname, "func_areaportal") == 0)
{
gi.SetAreaPortalState (t->style, open);
}
--- a/game/g_items.c
+++ b/game/g_items.c
@@ -87,7 +87,7 @@
{
if (!it->classname)
continue;
- if (!Q_strcasecmp(it->classname, classname))
+ if (!cistrcmp(it->classname, classname))
return it;
}
@@ -110,7 +110,7 @@
{
if (!it->pickup_name)
continue;
- if (!Q_strcasecmp(it->pickup_name, pickup_name))
+ if (!cistrcmp(it->pickup_name, pickup_name))
return it;
}
--- a/game/g_main.c
+++ b/game/g_main.c
@@ -209,7 +209,7 @@
f = NULL;
t = strtok(s, seps);
while (t != NULL) {
- if (Q_strcasecmp(t, level.mapname) == 0) {
+ if (cistrcmp(t, level.mapname) == 0) {
// it's in the list, go to the next one
t = strtok(NULL, seps);
if (t == NULL) { // end of list, go to first one
--- a/game/g_spawn.c
+++ b/game/g_spawn.c
@@ -366,7 +366,7 @@
for (f=fields ; f->name ; f++)
{
- if (!(f->flags & FFL_NOSPAWN) && !Q_strcasecmp(f->name, key))
+ if (!(f->flags & FFL_NOSPAWN) && !cistrcmp(f->name, key))
{ // found it
if (f->flags & FFL_SPAWNTEMP)
b = (byte *)&st;
@@ -569,7 +569,7 @@
entities = ED_ParseEdict (entities, ent);
// yet another map hack
- if (!Q_strcasecmp(level.mapname, "command") && !Q_strcasecmp(ent->classname, "trigger_once") && !Q_strcasecmp(ent->model, "*27"))
+ if (!cistrcmp(level.mapname, "command") && !cistrcmp(ent->classname, "trigger_once") && !cistrcmp(ent->model, "*27"))
ent->spawnflags &= ~SPAWNFLAG_NOT_HARD;
// remove things (except the world) from different skill levels or deathmatch
--- a/game/g_svcmds.c
+++ b/game/g_svcmds.c
@@ -286,15 +286,15 @@
char *cmd;
cmd = gi.argv(1);
- if (Q_strcasecmp (cmd, "test") == 0)
+ if (cistrcmp (cmd, "test") == 0)
Svcmd_Test_f ();
- else if (Q_strcasecmp (cmd, "addip") == 0)
+ else if (cistrcmp (cmd, "addip") == 0)
SVCmd_AddIP_f ();
- else if (Q_strcasecmp (cmd, "removeip") == 0)
+ else if (cistrcmp (cmd, "removeip") == 0)
SVCmd_RemoveIP_f ();
- else if (Q_strcasecmp (cmd, "listip") == 0)
+ else if (cistrcmp (cmd, "listip") == 0)
SVCmd_ListIP_f ();
- else if (Q_strcasecmp (cmd, "writeip") == 0)
+ else if (cistrcmp (cmd, "writeip") == 0)
SVCmd_WriteIP_f ();
else
gi.cprintf (NULL, PRINT_HIGH, "Unknown server command \"%s\"\n", cmd);
--- a/game/g_target.c
+++ b/game/g_target.c
@@ -179,7 +179,7 @@
ent->svflags = SVF_NOCLIENT;
level.total_secrets++;
// map bug hack
- if (!Q_strcasecmp(level.mapname, "mine3") && ent->s.origin[0] == 280 && ent->s.origin[1] == -2048 && ent->s.origin[2] == -624)
+ if (!cistrcmp(level.mapname, "mine3") && ent->s.origin[0] == 280 && ent->s.origin[1] == -2048 && ent->s.origin[2] == -624)
ent->message = "You have found a secret area.";
}
@@ -312,7 +312,7 @@
}
// ugly hack because *SOMEBODY* screwed up their map
- if((Q_strcasecmp(level.mapname, "fact1") == 0) && (Q_strcasecmp(ent->map, "fact3") == 0))
+ if((cistrcmp(level.mapname, "fact1") == 0) && (cistrcmp(ent->map, "fact3") == 0))
ent->map = "fact3$secret1";
ent->use = use_target_changelevel;
--- a/game/g_utils.c
+++ b/game/g_utils.c
@@ -60,7 +60,7 @@
s = *(char **) ((byte *)from + fieldofs);
if (!s)
continue;
- if (!Q_strcasecmp (s, match))
+ if (!cistrcmp (s, match))
return from;
}
@@ -234,8 +234,8 @@
while ((t = G_Find (t, FOFS(targetname), ent->target)))
{
// doors fire area portals in a specific way
- if (!Q_strcasecmp(t->classname, "func_areaportal") &&
- (!Q_strcasecmp(ent->classname, "func_door") || !Q_strcasecmp(ent->classname, "func_door_rotating")))
+ if (!cistrcmp(t->classname, "func_areaportal") &&
+ (!cistrcmp(ent->classname, "func_door") || !cistrcmp(ent->classname, "func_door_rotating")))
continue;
if (t == ent)
--- a/game/m_flyer.c
+++ b/game/m_flyer.c
@@ -574,7 +574,7 @@
}
// fix a map bug in jail5.bsp
- if (!Q_strcasecmp(level.mapname, "jail5") && (self->s.origin[2] == -104))
+ if (!cistrcmp(level.mapname, "jail5") && (self->s.origin[2] == -104))
{
self->targetname = self->target;
self->target = NULL;
--- a/game/p_client.c
+++ b/game/p_client.c
@@ -56,7 +56,7 @@
VectorSubtract(self->s.origin, spot->s.origin, d);
if (VectorLength(d) < 384)
{
- if ((!self->targetname) || Q_strcasecmp(self->targetname, spot->targetname) != 0)
+ if ((!self->targetname) || cistrcmp(self->targetname, spot->targetname) != 0)
{
// gi.dprintf("FixCoopSpots changed %s at %s targetname from %s to %s\n", self->classname, vtos(self->s.origin), self->targetname, spot->targetname);
self->targetname = spot->targetname;
@@ -74,7 +74,7 @@
{
edict_t *spot;
- if(Q_strcasecmp(level.mapname, "security") == 0)
+ if(cistrcmp(level.mapname, "security") == 0)
{
spot = G_Spawn();
spot->classname = "info_player_coop";
@@ -112,7 +112,7 @@
{
if (!coop->value)
return;
- if(Q_strcasecmp(level.mapname, "security") == 0)
+ if(cistrcmp(level.mapname, "security") == 0)
{
// invoke one of our gross, ugly, disgusting hacks
self->think = SP_CreateCoopSpots;
@@ -145,20 +145,20 @@
return;
}
- if((Q_strcasecmp(level.mapname, "jail2") == 0) ||
- (Q_strcasecmp(level.mapname, "jail4") == 0) ||
- (Q_strcasecmp(level.mapname, "mine1") == 0) ||
- (Q_strcasecmp(level.mapname, "mine2") == 0) ||
- (Q_strcasecmp(level.mapname, "mine3") == 0) ||
- (Q_strcasecmp(level.mapname, "mine4") == 0) ||
- (Q_strcasecmp(level.mapname, "lab") == 0) ||
- (Q_strcasecmp(level.mapname, "boss1") == 0) ||
- (Q_strcasecmp(level.mapname, "fact3") == 0) ||
- (Q_strcasecmp(level.mapname, "biggun") == 0) ||
- (Q_strcasecmp(level.mapname, "space") == 0) ||
- (Q_strcasecmp(level.mapname, "command") == 0) ||
- (Q_strcasecmp(level.mapname, "power2") == 0) ||
- (Q_strcasecmp(level.mapname, "strike") == 0))
+ if((cistrcmp(level.mapname, "jail2") == 0) ||
+ (cistrcmp(level.mapname, "jail4") == 0) ||
+ (cistrcmp(level.mapname, "mine1") == 0) ||
+ (cistrcmp(level.mapname, "mine2") == 0) ||
+ (cistrcmp(level.mapname, "mine3") == 0) ||
+ (cistrcmp(level.mapname, "mine4") == 0) ||
+ (cistrcmp(level.mapname, "lab") == 0) ||
+ (cistrcmp(level.mapname, "boss1") == 0) ||
+ (cistrcmp(level.mapname, "fact3") == 0) ||
+ (cistrcmp(level.mapname, "biggun") == 0) ||
+ (cistrcmp(level.mapname, "space") == 0) ||
+ (cistrcmp(level.mapname, "command") == 0) ||
+ (cistrcmp(level.mapname, "power2") == 0) ||
+ (cistrcmp(level.mapname, "strike") == 0))
{
// invoke one of our gross, ugly, disgusting hacks
self->think = SP_FixCoopSpots;
@@ -853,7 +853,7 @@
target = spot->targetname;
if (!target)
target = "";
- if ( Q_strcasecmp(game.spawnpoint, target) == 0 )
+ if ( cistrcmp(game.spawnpoint, target) == 0 )
{ // this is a coop spawn point for one of the clients here
index--;
if (!index)
@@ -890,7 +890,7 @@
if (!game.spawnpoint[0] || !spot->targetname)
continue;
- if (Q_strcasecmp(game.spawnpoint, spot->targetname) == 0)
+ if (cistrcmp(game.spawnpoint, spot->targetname) == 0)
break;
}
--- a/game/q_shared.c
+++ b/game/q_shared.c
@@ -28,10 +28,6 @@
//============================================================================
-#ifdef _WIN32
-#pragma optimize( "", off )
-#endif
-
void RotatePointAroundVector( vec3_t dst, const vec3_t dir, const vec3_t point, float degrees )
{
float m[3][3];
@@ -87,12 +83,6 @@
}
}
-#ifdef _WIN32
-#pragma optimize( "", on )
-#endif
-
-
-
void AngleVectors (vec3_t angles, vec3_t forward, vec3_t right, vec3_t up)
{
float angle;
@@ -919,50 +909,6 @@
for (i=size-1 ; i>0 ; i-=4096)
paged_total += buffer[i];
}
-
-
-
-/*
-============================================================================
-
- LIBRARY REPLACEMENT FUNCTIONS
-
-============================================================================
-*/
-
-
-int Q_strncasecmp (char *s1, char *s2, int n)
-{
- int c1, c2;
-
- do
- {
- c1 = *s1++;
- c2 = *s2++;
-
- if (!n--)
- return 0; // strings are equal until end point
-
- if (c1 != c2)
- {
- if (c1 >= 'a' && c1 <= 'z')
- c1 -= ('a' - 'A');
- if (c2 >= 'a' && c2 <= 'z')
- c2 -= ('a' - 'A');
- if (c1 != c2)
- return -1; // strings not equal
- }
- } while (c1);
-
- return 0; // strings are equal
-}
-
-int Q_strcasecmp (char *s1, char *s2)
-{
- return Q_strncasecmp (s1, s2, 99999);
-}
-
-
void Com_sprintf (char *dest, int size, char *fmt, ...)
{
--- a/mkfile
+++ b/mkfile
@@ -48,7 +48,6 @@
plan9/menu.$O\
plan9/misc.$O\
plan9/snd.$O\
- plan9/so.$O\
plan9/sys.$O\
plan9/udp.$O\
plan9/vid.$O\
--- a/plan9/cd.c
+++ b/plan9/cd.c
@@ -203,13 +203,13 @@
command = Cmd_Argv (1);
- if (Q_strcasecmp(command, "on") == 0)
+ if (cistrcmp(command, "on") == 0)
{
enabled = true;
return;
}
- if (Q_strcasecmp(command, "off") == 0)
+ if (cistrcmp(command, "off") == 0)
{
if (playing)
CDAudio_Stop();
@@ -217,7 +217,7 @@
return;
}
- if (Q_strcasecmp(command, "reset") == 0)
+ if (cistrcmp(command, "reset") == 0)
{
enabled = true;
if (playing)
@@ -228,7 +228,7 @@
return;
}
- if (Q_strcasecmp(command, "remap") == 0)
+ if (cistrcmp(command, "remap") == 0)
{
ret = Cmd_Argc() - 2;
if (ret <= 0)
@@ -243,7 +243,7 @@
return;
}
- if (Q_strcasecmp(command, "close") == 0)
+ if (cistrcmp(command, "close") == 0)
{
CDAudio_CloseDoor();
return;
@@ -259,37 +259,37 @@
}
}
- if (Q_strcasecmp(command, "play") == 0)
+ if (cistrcmp(command, "play") == 0)
{
CDAudio_Play((byte)atoi(Cmd_Argv (2)), false);
return;
}
- if (Q_strcasecmp(command, "loop") == 0)
+ if (cistrcmp(command, "loop") == 0)
{
CDAudio_Play((byte)atoi(Cmd_Argv (2)), true);
return;
}
- if (Q_strcasecmp(command, "stop") == 0)
+ if (cistrcmp(command, "stop") == 0)
{
CDAudio_Stop();
return;
}
- if (Q_strcasecmp(command, "pause") == 0)
+ if (cistrcmp(command, "pause") == 0)
{
CDAudio_Pause();
return;
}
- if (Q_strcasecmp(command, "resume") == 0)
+ if (cistrcmp(command, "resume") == 0)
{
CDAudio_Resume();
return;
}
- if (Q_strcasecmp(command, "eject") == 0)
+ if (cistrcmp(command, "eject") == 0)
{
if (playing)
CDAudio_Stop();
@@ -298,7 +298,7 @@
return;
}
- if (Q_strcasecmp(command, "info") == 0)
+ if (cistrcmp(command, "info") == 0)
{
Com_Printf("%u tracks\n", maxTrack);
if (playing)
--- a/plan9/in.c
+++ b/plan9/in.c
@@ -7,23 +7,28 @@
#include <keyboard.h>
#include "../q_shared.h"
-cvar_t *in_mouse;
-cvar_t *in_joystick;
-cvar_t *m_filter;
-cvar_t *m_windowed;
-cvar_t *sensitivity;
-cvar_t *lookstrafe;
-cvar_t *m_side;
-cvar_t *m_yaw;
-cvar_t *m_pitch;
-cvar_t *m_forward;
-cvar_t *freelook;
+extern int resized; /* vid.c */
+extern Point center;
+extern Channel *fuckchan, *tchan; /* sys.c */
-qboolean mouseon;
-qboolean mlooking;
-int dx, dy;
-int oldmwin;
+cvar_t *in_joystick;
+cvar_t *sensitivity;
+cvar_t *lookstrafe;
+cvar_t *lookspring;
+cvar_t *freelook;
+cvar_t *m_pitch;
+static cvar_t *m_filter;
+static cvar_t *m_windowed;
+static cvar_t *m_yaw;
+static cvar_t *m_side;
+static cvar_t *m_forward;
+
+static int mouseon;
+static int mlooking;
+static int dx, dy;
+static int oldmwin;
+
typedef struct Kev Kev;
struct Kev{
int key;
@@ -30,19 +35,36 @@
int down;
};
enum{
- Nbuf = 64,
- ITHGRP = 2
+ Nbuf = 64
};
-Channel *kchan;
-Channel *mchan;
+static Channel *kchan, *mchan;
+static int iop = -1, pfd[2];
+static QLock killock;
-/* rw_9.c */
-extern int resized;
-extern Point center;
-extern refimport_t ri;
-void IN_Grabm(int on)
+char *
+Sys_ConsoleInput(void)
{
+ static char buf[256];
+ int n;
+
+ if(dedicated != nil && dedicated->value && iop >= 0){
+ if(flen(pfd[1]) < 1) /* only poll for input */
+ return nil;
+ if((n = read(pfd[1], buf, sizeof buf)) < 0)
+ sysfatal("Sys_ConsoleInput:read: %r");
+ if(n == 0){
+ iop = -1;
+ return nil;
+ }
+ return buf;
+ }
+ return nil;
+}
+
+void
+IN_Grabm(int on)
+{
static char nocurs[2*4+2*2*16];
static int fd = -1;
@@ -60,12 +82,14 @@
}
}
-void IN_Commands (void)
+void
+IN_Commands(void)
{
/* joystick stuff */
}
-void btnev (int btn, ulong msec)
+void
+btnev(int btn, ulong msec)
{
static int oldb;
int i, b;
@@ -88,7 +112,8 @@
}
}
-void KBD_Update (void)
+void
+KBD_Update(void)
{
int r;
Kev ev;
@@ -111,9 +136,11 @@
sysfatal("KBD_Update:nbrecv: %r\n");
}
-void IN_Move (usercmd_t *cmd)
+void
+IN_Move(usercmd_t *cmd)
{
- static int mx, my, oldmx, oldmy;
+ static int oldmx, oldmy;
+ int mx, my;
if(!mouseon)
return;
@@ -145,32 +172,38 @@
}
/* called on focus/unfocus in win32 */
-void IN_Activate (qboolean)
+void
+IN_Activate(qboolean)
{
}
/* called every frame even if not generating commands */
-void IN_Frame (void)
+void
+IN_Frame(void)
{
}
-void IN_ForceCenterView (void)
+void
+IN_ForceCenterView(void)
{
cl.viewangles[PITCH] = 0;
}
-void IN_MLookDown (void)
+void
+IN_MLookDown(void)
{
mlooking = true;
}
-void IN_MLookUp (void)
+void
+IN_MLookUp(void)
{
mlooking = false;
IN_CenterView();
}
-int runetokey (Rune r)
+static int
+runetokey(Rune r)
{
int k = 0;
@@ -213,18 +246,20 @@
return k;
}
-void kproc (void *)
+static void
+kproc(void *)
{
int n, k, fd;
- char buf[128], kdown[128] = {0}, *s;
+ char buf[128], kdown[128], *s;
Rune r;
Kev ev;
- if(threadsetgrp(ITHGRP) < 0)
+ if(threadsetgrp(THin) < 0)
sysfatal("kproc:threadsetgrp: %r");
if((fd = open("/dev/kbd", OREAD)) < 0)
sysfatal("open /dev/kbd: %r");
+ kdown[0] = kdown[1] = 0;
while((n = read(fd, buf, sizeof buf)) > 0){
buf[n-1] = 0;
switch(*buf){
@@ -266,13 +301,14 @@
close(fd);
}
-void mproc (void *)
+static void
+mproc(void *)
{
int n, nerr = 0, fd;
char buf[1+5*12];
Mouse m;
- if(threadsetgrp(ITHGRP) < 0)
+ if(threadsetgrp(THin) < 0)
sysfatal("mproc:threadsetgrp: %r");
if((fd = open("/dev/mouse", ORDWR)) < 0)
sysfatal("open /dev/mouse: %r");
@@ -309,10 +345,66 @@
close(fd);
}
-void IN_Shutdown (void)
+static void
+tproc(void *) /* stupid select() timeout bullshit */
{
+ int t, ms, n, r;
+
+ threadsetgrp(THin);
+
+ t = ms = 0;
+ for(;;){
+ sleep(1);
+ t++;
+
+ if((r = nbrecv(tchan, &n)) < 0)
+ sysfatal("tproc:nbrecv: %r");
+ if(r == 0){
+ if(t == ms && nbsend(fuckchan, nil) < 0)
+ sysfatal("tproc:nbsend: %r");
+ continue;
+ }
+ if(n <= 0)
+ ms = 0;
+ else{
+ ms = n;
+ t = 0;
+ }
+ }
+}
+
+static void
+iproc(void *)
+{
+ int n;
+ char s[256];
+
+ threadsetgrp(THin);
+
+ if((iop = pipe(pfd)) < 0)
+ sysfatal("iproc:pipe: %r");
+ for(;;){
+ if((n = read(0, s, sizeof s)) <= 0)
+ break;
+ s[n-1] = 0;
+ if((write(pfd[0], s, n)) != n)
+ break;
+ if(nbsend(fuckchan, nil) < 0)
+ sysfatal("iproc:nbsend: %r");
+ }
+ fprint(2, "iproc %d: %r\n", threadpid(threadid()));
+ iop = -1;
+}
+
+void
+IN_Shutdown(void)
+{
+ qlock(&killock); /* there can be only one */
IN_Grabm(0);
- threadkillgrp(ITHGRP);
+ threadkillgrp(THin);
+ iop = -1;
+ close(pfd[0]);
+ close(pfd[1]);
if(kchan != nil){
chanfree(kchan);
kchan = nil;
@@ -321,25 +413,35 @@
chanfree(mchan);
mchan = nil;
}
+ qunlock(&killock);
}
-void IN_Init (void)
+void
+IN_Init(void)
{
- in_mouse = ri.Cvar_Get("in_mouse", "1", CVAR_ARCHIVE);
- in_joystick = ri.Cvar_Get("in_joystick", "0", CVAR_ARCHIVE);
- m_windowed = ri.Cvar_Get("m_windowed", "0", CVAR_ARCHIVE);
- m_filter = ri.Cvar_Get("m_filter", "0", 0);
- freelook = ri.Cvar_Get("freelook", "0", 0);
- lookstrafe = ri.Cvar_Get("lookstrafe", "0", 0);
- sensitivity = ri.Cvar_Get("sensitivity", "3", 0);
- m_pitch = ri.Cvar_Get("m_pitch", "0.022", 0);
- m_yaw = ri.Cvar_Get("m_yaw", "0.022", 0);
- m_forward = ri.Cvar_Get("m_forward", "1", 0);
- m_side = ri.Cvar_Get("m_side", "0.8", 0);
+ if(dedicated->value){
+ if(proccreate(iproc, nil, 8192) < 0)
+ sysfatal("proccreate iproc: %r");
+ if(proccreate(tproc, nil, 8192) < 0)
+ sysfatal("proccreate tproc: %r");
+ return;
+ }
+ in_joystick = Cvar_Get("in_joystick", "0", CVAR_ARCHIVE);
+ sensitivity = Cvar_Get("sensitivity", "3", CVAR_ARCHIVE);
+ freelook = Cvar_Get("freelook", "0", CVAR_ARCHIVE);
+ lookspring = Cvar_Get("lookspring", "0", CVAR_ARCHIVE);
+ lookstrafe = Cvar_Get("lookstrafe", "0", CVAR_ARCHIVE);
+ m_pitch = Cvar_Get("m_pitch", "0.022", CVAR_ARCHIVE);
- ri.Cmd_AddCommand("+mlook", IN_MLookDown);
- ri.Cmd_AddCommand("-mlook", IN_MLookUp);
- ri.Cmd_AddCommand("force_centerview", IN_ForceCenterView);
+ m_yaw = Cvar_Get("m_yaw", "0.022", 0);
+ m_forward = Cvar_Get("m_forward", "1", 0);
+ m_side = Cvar_Get("m_side", "0.8", 0);
+ m_windowed = Cvar_Get("m_windowed", "0", CVAR_ARCHIVE);
+ m_filter = Cvar_Get("m_filter", "0", 0);
+
+ Cmd_AddCommand("+mlook", IN_MLookDown);
+ Cmd_AddCommand("-mlook", IN_MLookUp);
+ Cmd_AddCommand("force_centerview", IN_ForceCenterView);
if((kchan = chancreate(sizeof(Kev), Nbuf)) == nil)
sysfatal("chancreate kchan: %r");
--- a/plan9/menu.c
+++ b/plan9/menu.c
@@ -3,37 +3,35 @@
#include <stdio.h>
#include "../q_shared.h"
-extern cvar_t *vid_fullscreen;
-extern cvar_t *vid_gamma;
-extern cvar_t *scr_viewsize;
-
extern void M_PopMenu(void);
-menuframework_s vmenu;
-menuslider_s ssizeslide;
-menuslider_s gammaslide;
-menulist_s fullscrbox;
-menuaction_s applyaction;
-menuaction_s defaultsaction;
+static menuframework_s vmenu;
+static menuslider_s ssizeslide, gammaslide;
+static menulist_s fullscrbox;
+static menuaction_s applyaction, defaultsaction;
-void vmssize (void *s)
+void
+vmssize(void *s)
{
Cvar_SetValue("viewsize", ((menuslider_s *)s)->curvalue * 10);
}
-void vmgamma (void *s)
+void
+vmgamma(void *s)
{
// invert sense so greater = brighter, and scale to a range of 0.5 to 1.3
Cvar_SetValue("vid_gamma", 0.8 - (((menuslider_s *)s)->curvalue/10.0 - 0.5) + 0.5);
}
-void vmreset (void *)
+void
+vmreset(void *)
{
VID_MenuInit();
}
-void vmapply (void *)
+void
+vmapply(void *)
{
Cvar_SetValue("vid_gamma", 0.8 - (gammaslide.curvalue/10.0 - 0.5) + 0.5);
Cvar_SetValue("vid_fullscreen", fullscrbox.curvalue);
@@ -40,7 +38,8 @@
M_ForceMenuOff();
}
-void VID_MenuInit (void)
+void
+VID_MenuInit(void)
{
static char *yesno[] = {"no", "yes", nil};
@@ -97,12 +96,13 @@
vmenu.x -= 8;
}
-void VID_MenuDraw (void)
+void
+VID_MenuDraw(void)
{
int w, h;
- re.DrawGetPicSize(&w, &h, "m_banner_video");
- re.DrawPic(vid.width/2 - w/2, vid.height/2 - 110, "m_banner_video");
+ Draw_GetPicSize(&w, &h, "m_banner_video");
+ Draw_Pic(vid.width/2 - w/2, vid.height/2 - 110, "m_banner_video");
Menu_AdjustCursor(&vmenu, 1); // starting position
Menu_Draw(&vmenu);
}
--- a/plan9/misc.c
+++ b/plan9/misc.c
@@ -3,19 +3,20 @@
#include <stdio.h>
#include "../q_shared.h"
-byte *membase;
-int maxhunksize;
-int curhunksize;
int curtime;
-char findbase[MAX_OSPATH], findpath[MAX_OSPATH], findpattern[MAX_OSPATH];
-long dirn, di;
-Dir *dirs;
-int glob_match(char *, char *);
+static uchar *membase;
+static int maxhunksize, curhunksize;
+static char findbase[MAX_OSPATH], findpath[MAX_OSPATH], findpattern[MAX_OSPATH];
+static Dir *dirs;
+static long dirn, di;
+static int glob_match(char *, char *);
+
/* Like glob_match, but match PATTERN against any final segment of TEXT. */
-int glob_match_after_star(char *pattern, char *text)
+static int
+glob_match_after_star(char *pattern, char *text)
{
char *p = pattern, *t = text;
char c, c1;
@@ -41,7 +42,8 @@
}
/* Return nonzero if PATTERN has any special globbing chars in it. */
-int glob_pattern_p(char *pattern)
+static int
+glob_pattern_p(char *pattern)
{
char *p = pattern;
char c;
@@ -87,7 +89,8 @@
and match the character exactly, precede it with a `\'.
*/
-int glob_match(char *pattern, char *text)
+static int
+glob_match(char *pattern, char *text)
{
char *p = pattern, *t = text;
char c, c1, cstart, cend;
@@ -176,7 +179,8 @@
return *t == '\0';
}
-void *Hunk_Begin (int maxsize)
+void *
+Hunk_Begin(int maxsize)
{
// reserve a huge chunk of memory, but don't commit any yet
maxhunksize = maxsize;
@@ -186,7 +190,8 @@
return membase;
}
-void *Hunk_Alloc (int size)
+void *
+Hunk_Alloc(int size)
{
byte *buf;
@@ -199,7 +204,8 @@
return buf;
}
-int Hunk_End (void)
+int
+Hunk_End(void)
{
if(realloc(membase, curhunksize) != membase)
sysfatal("Hunk_End:realloc: %r");
@@ -206,13 +212,15 @@
return curhunksize;
}
-void Hunk_Free (void *base)
+void
+Hunk_Free(void *base)
{
if(base != nil)
free(base);
}
-int Sys_Milliseconds (void)
+int
+Sys_Milliseconds(void)
{
static long msbase;
@@ -222,7 +230,8 @@
return curtime;
}
-void Sys_Mkdir (char *path)
+void
+Sys_Mkdir(char *path)
{
int d;
@@ -232,7 +241,8 @@
close(d);
}
-qboolean CompareAttributes (ulong m, uint musthave, uint canthave)
+static qboolean
+CompareAttributes(ulong m, uint musthave, uint canthave)
{
if(m & DMDIR && canthave & SFF_SUBDIR)
return false;
@@ -241,7 +251,8 @@
return true;
}
-char *Sys_FindFirst (char *path, uint musthave, uint canhave)
+char *
+Sys_FindFirst(char *path, uint musthave, uint canhave)
{
char *p;
int fd;
@@ -279,7 +290,8 @@
return Sys_FindNext (musthave, canhave);
}
-char *Sys_FindNext (uint musthave, uint canhave)
+char *
+Sys_FindNext(uint musthave, uint canhave)
{
int i;
@@ -298,7 +310,8 @@
return nil;
}
-void Sys_FindClose (void)
+void
+Sys_FindClose(void)
{
if(dirs != nil){
free(dirs);
--- a/plan9/snd.c
+++ b/plan9/snd.c
@@ -4,41 +4,44 @@
#include <thread.h>
#include "../q_shared.h"
-int sndon;
+static cvar_t *sndbits;
+static cvar_t *sndspeed;
+static cvar_t *sndchannels;
+static cvar_t *snddev;
+static int afd, sndon, wpos;
enum{
Nbuf = 32
};
-int audio_fd;
-int wpos;
-int stid = -1;
-Channel *schan;
+static Channel *schan;
+static QLock sndlock;
-cvar_t *sndbits;
-cvar_t *sndspeed;
-cvar_t *sndchannels;
-cvar_t *snddevice;
-
-void sproc (void *)
+static void
+sproc(void *)
{
int n;
+ threadsetgrp(THsnd);
+
for(;;){
if(recv(schan, nil) < 0){
fprint(2, "sproc:recv %r\n");
break;
}
- if((n = write(audio_fd, dma.buffer, dma.samplebits/8 * dma.samples)) < 0){
+ if((n = write(afd, dma.buffer, dma.samplebits/8 * dma.samples)) < 0){
fprint(2, "sproc:write %r\n");
break;
}
+ qlock(&sndlock);
wpos += n;
+ qunlock(&sndlock);
}
- stid = -1;
+ fprint(2, "sproc %d: %r\n", threadpid(threadid()));
}
-qboolean SNDDMA_Init(void)
+qboolean
+SNDDMA_Init(void)
{
if(sndon)
return false;
@@ -46,14 +49,14 @@
if(COM_CheckParm("-nosound"))
return false;
- if(!snddevice){
+ if(snddev == nil){
sndbits = Cvar_Get("sndbits", "16", CVAR_ARCHIVE);
sndspeed = Cvar_Get("sndspeed", "44100", CVAR_ARCHIVE);
sndchannels = Cvar_Get("sndchannels", "2", CVAR_ARCHIVE);
- snddevice = Cvar_Get("snddevice", "/dev/audio", CVAR_ARCHIVE);
+ snddev = Cvar_Get("snddev", "/dev/audio", CVAR_ARCHIVE);
}
- if((audio_fd = open(snddevice->string, OWRITE)) < 0){
+ if((afd = open(snddev->string, OWRITE)) < 0){
fprint(2, "SNDDMA_Init:open %r\n");
return false;
}
@@ -73,10 +76,10 @@
sysfatal("SNDDMA_Init:mallocz: %r\n");
dma.samplepos = 0;
sndon = 1;
+ wpos = 0;
schan = chancreate(sizeof(int), Nbuf);
- if((stid = proccreate(sproc, nil, 8192)) < 0){
- stid = -1;
+ if(proccreate(sproc, nil, 8192) < 0){
SNDDMA_Shutdown();
sysfatal("SNDDMA_Init:proccreate: %r\n");
}
@@ -83,32 +86,35 @@
return true;
}
-int SNDDMA_GetDMAPos(void)
+int
+SNDDMA_GetDMAPos(void)
{
if(!sndon)
return 0;
+ qlock(&sndlock);
dma.samplepos = wpos / (dma.samplebits/8);
+ qunlock(&sndlock);
return dma.samplepos;
}
-void SNDDMA_Shutdown(void)
+void
+SNDDMA_Shutdown(void)
{
if(!sndon)
return;
- if(stid != -1){
- threadkill(stid);
- stid = -1;
- }
+
+ threadkillgrp(THsnd);
+ close(afd);
if(schan != nil){
chanfree(schan);
schan = nil;
}
free(dma.buffer);
- close(audio_fd);
sndon = 0;
}
-void SNDDMA_Submit(void)
+void
+SNDDMA_Submit(void)
{
if(nbsend(schan, nil) < 0){
fprint(2, "SNDDMA_Submit:nbsend: %r\n");
@@ -116,6 +122,7 @@
}
}
-void SNDDMA_BeginPainting (void)
+void
+SNDDMA_BeginPainting(void)
{
}
--- a/plan9/so.c
+++ /dev/null
@@ -1,77 +1,0 @@
-#include <u.h>
-#include <libc.h>
-#include <stdio.h>
-#include "../q_shared.h"
-
-refexport_t GetRefAPI(refimport_t);
-
-cvar_t *vid_gamma;
-cvar_t *vid_ref; // Name of Refresh DLL loaded
-cvar_t *vid_xpos; // X coordinate of window position
-cvar_t *vid_ypos; // Y coordinate of window position
-cvar_t *vid_fullscreen;
-refexport_t re; /* exported functions from refresh DLL */
-
-
-void VID_Printf (int print_level, char *fmt, ...)
-{
- va_list argptr;
- char msg[4096];
-
- va_start(argptr, fmt);
- vsprintf(msg, fmt, argptr);
- va_end(argptr);
- if(print_level == PRINT_ALL)
- Com_Printf("%s", msg);
- else
- Com_DPrintf("%s", msg);
-}
-
-void VID_Error (int err_level, char *fmt, ...)
-{
- va_list argptr;
- char msg[4096];
-
- va_start(argptr, fmt);
- vsprintf(msg, fmt, argptr);
- va_end(argptr);
- Com_Error(err_level, "%s", msg);
-}
-
-void VID_CheckChanges (void)
-{
-}
-
-void VID_Shutdown (void)
-{
- re.Shutdown();
-}
-
-void VID_Init (void)
-{
- refimport_t ri;
-
- vid_ref = Cvar_Get("vid_ref", "libdraw", CVAR_ARCHIVE);
- vid_xpos = Cvar_Get("vid_xpos", "3", CVAR_ARCHIVE);
- vid_ypos = Cvar_Get("vid_ypos", "22", CVAR_ARCHIVE);
- vid_fullscreen = Cvar_Get("vid_fullscreen", "0", CVAR_ARCHIVE);
- vid_gamma = Cvar_Get("vid_gamma", "1", CVAR_ARCHIVE);
-
- ri.Cmd_AddCommand = Cmd_AddCommand;
- ri.Cmd_RemoveCommand = Cmd_RemoveCommand;
- ri.Cmd_Argc = Cmd_Argc;
- ri.Cmd_Argv = Cmd_Argv;
- ri.Cmd_ExecuteText = Cbuf_ExecuteText;
- ri.Con_Printf = VID_Printf;
- ri.Sys_Error = VID_Error;
- ri.FS_LoadFile = FS_LoadFile;
- ri.FS_FreeFile = FS_FreeFile;
- ri.FS_Gamedir = FS_Gamedir;
- ri.Cvar_Get = Cvar_Get;
- ri.Cvar_Set = Cvar_Set;
- ri.Cvar_SetValue = Cvar_SetValue;
- ri.Vid_MenuInit = VID_MenuInit;
-
- re = GetRefAPI(ri);
- re.Init(nil, nil);
-}
--- a/plan9/sys.c
+++ b/plan9/sys.c
@@ -5,39 +5,27 @@
#include <thread.h>
#include "../q_shared.h"
-mainstacksize = 512*1024; /* FIXME */
-
+mainstacksize = 512*1024;
uint sys_frame_time;
-qboolean stdin_active = true;
+Channel *fuckchan, *tchan;
void KBD_Update(void);
/* prints to "debugging console" */
-void Sys_ConsoleOutput (char *string)
+void
+Sys_ConsoleOutput(char *s)
{
- write(1, string, strlen(string));
+ write(1, s, strlen(s));
}
-void Sys_Quit (void)
-{
- CL_Shutdown();
- Qcommon_Shutdown();
- threadexitsall(nil);
-}
-
-void Sys_Init(void)
-{
- //Sys_SetFPCW();
-}
-
-void Sys_Error (char *error, ...)
+void
+Sys_Error(char *error, ...)
{
char buf[1024], *out;
va_list arg;
CL_Shutdown();
- Qcommon_Shutdown();
va_start(arg, error);
out = vseprint(buf, buf+sizeof(buf), error, arg);
@@ -47,62 +35,79 @@
sysfatal("ending.");
}
-int Sys_FileTime (char *path)
+vlong
+flen(int fd)
{
- uchar sb[1024];
+ uchar bs[1024];
- if(stat(path, sb, sizeof sb) < 0){
- fprint(2, "Sys_FileTime:stat: %r\n");
+ if(fstat(fd, bs, sizeof bs) < 0){
+ fprint(2, "flen:fstat: %r\n");
return -1;
}
- return *((int *)(sb+25));
+ return *((vlong *)(bs+2+2+4+1+4+8+4+4+4)); /* length[8] */
}
-char *Sys_ConsoleInput(void)
+int
+Sys_FileTime(char *path)
{
- static char text[256];
- int n;
+ uchar sb[1024];
- if(!dedicated || !dedicated->value || !stdin_active)
- return nil;
-
- if((n = read(0, text, sizeof(text))) < 0)
- return nil;
- if(n == 0){
- stdin_active = false;
- return nil;
+ if(stat(path, sb, sizeof sb) < 0){
+ fprint(2, "Sys_FileTime:stat: %r\n");
+ return -1;
}
- text[n-1] = '\0'; /* rip off \n */
- return text;
+ return *((int *)(sb+25));
}
-void Sys_UnloadGame (void)
+void
+Sys_UnloadGame(void)
{
}
-void Sys_AppActivate (void)
+void
+Sys_AppActivate(void)
{
}
-void Sys_SendKeyEvents (void)
+void
+Sys_SendKeyEvents(void)
{
-#ifndef DEDICATED_ONLY
KBD_Update();
-#endif
sys_frame_time = Sys_Milliseconds(); // grab frame time
}
-char *Sys_GetClipboardData (void)
+char *
+Sys_GetClipboardData(void)
{
return nil;
}
-void Sys_CopyProtect (void)
+void
+Sys_CopyProtect(void)
{
}
-void croak (void *, char *note)
+void
+Sys_Quit(void)
{
+ chanfree(fuckchan);
+ chanfree(tchan);
+ threadexitsall(nil);
+}
+
+void
+Sys_Init(void)
+{
+ //Sys_SetFPCW();
+ if((fuckchan = chancreate(sizeof(int), 1)) == nil)
+ sysfatal("chancreate fuckchan: %r");
+ if((tchan = chancreate(sizeof(int), 16)) == nil)
+ sysfatal("chancreate tchan: %r");
+}
+
+void
+croak(void *, char *note)
+{
if(!strncmp(note, "sys:", 4)){
IN_Shutdown();
SNDDMA_Shutdown();
@@ -111,7 +116,8 @@
noted(NDFLT);
}
-void threadmain (int argc, char *argv[])
+void
+threadmain(int argc, char *argv[])
{
int time, oldtime, newtime;
--- a/plan9/udp.c
+++ b/plan9/udp.c
@@ -9,11 +9,13 @@
/* FIXME: this shit SUCKS, and ipv4 only because of other code */
-cvar_t *svport; /* server port and copy of string value */
-char srv[6];
-cvar_t *clport; /* "client" port and copy */
-char clsrv[6];
+extern Channel *fuckchan, *tchan;
+static cvar_t *svport; /* server port and copy of string value */
+static char srv[6];
+static cvar_t *clport; /* "client" port and copy */
+static char clsrv[6];
+
typedef struct Loopmsg Loopmsg;
typedef struct Loopback Loopback;
typedef struct Conmsg Conmsg;
@@ -20,11 +22,10 @@
typedef struct Conlist Conlist;
enum{
+ Hdrsz = 16+16+16+2+2, /* sizeof Udphdr w/o padding */
+ Bufsz = MAX_MSGLEN,
+ Nbuf = 64,
MAX_LOOPBACK = 4,
- HDRSZ = 16+16+16+2+2, /* sizeof Udphdr w/o padding */
- BUFSZ = MAX_MSGLEN,
- NBUF = 64,
- DTHGRP = 1,
CLPORT = 27909
};
struct Loopmsg{
@@ -36,7 +37,7 @@
int get;
int send;
};
-Loopback loopbacks[2];
+static Loopback loopbacks[2];
struct Conlist{
Conlist *p;
@@ -46,28 +47,29 @@
Udphdr h;
int src; /* q2 assumes broadcast replies are received on NS_CLIENT */
};
-Conlist *cnroot;
+static Conlist *cnroot;
struct Conmsg{
Conlist *p;
int n;
- uchar buf[BUFSZ];
+ uchar buf[Bufsz];
};
-Channel *udpchan;
-Channel *clchan;
+static Channel *udpchan, *clchan;
-netadr_t laddr; /* 0.0.0.0:0 */
-int cfd = -1, ufd = -1, clfd = -1, cldfd = -1;
-QLock cnlock;
+static netadr_t laddr; /* 0.0.0.0:0 */
+static int cfd = -1, ufd = -1, clfd = -1, cldfd = -1;
+static QLock cnlock;
-qboolean NET_CompareAdr (netadr_t a, netadr_t b)
+qboolean
+NET_CompareAdr(netadr_t a, netadr_t b)
{
- return (a.ip[0] == b.ip[0] && a.ip[1] == b.ip[1] && a.ip[2] == b.ip[2] && a.ip[3] == b.ip[3] && a.port == b.port);
+ return(a.ip[0] == b.ip[0] && a.ip[1] == b.ip[1] && a.ip[2] == b.ip[2] && a.ip[3] == b.ip[3] && a.port == b.port);
}
/* compares without the port */
-qboolean NET_CompareBaseAdr (netadr_t a, netadr_t b)
+qboolean
+NET_CompareBaseAdr(netadr_t a, netadr_t b)
{
if(a.type != b.type)
return false;
@@ -83,7 +85,8 @@
}
}
-char *NET_AdrToString (netadr_t a)
+char *
+NET_AdrToString(netadr_t a)
{
static char s[256];
@@ -91,7 +94,8 @@
return s;
}
-char *NET_BaseAdrToString (netadr_t a)
+char *
+NET_BaseAdrToString(netadr_t a)
{
static char s[256];
@@ -110,12 +114,12 @@
192.246.40.70:28000
=============
*/
-qboolean NET_StringToAdr (char *addr, netadr_t *a) /* assumes IPv4 */
+qboolean
+NET_StringToAdr(char *addr, netadr_t *a) /* assumes IPv4 */
{
int i;
char s[256], *p, *pp;
- Ndb *db;
- Ndbtuple *nt;
+ Ndbtuple *t, *nt;
if(!strcmp(addr, "localhost")){
memset(a, 0, sizeof *a);
@@ -126,24 +130,25 @@
strncpy(s, addr, sizeof s);
s[sizeof(s)-1] = 0;
+ /* FIXME: arbitrary length strings */
if((p = strrchr(s, ':')) != nil){
*p++ = '\0';
a->port = BigShort(atoi(p));
}
- if((db = ndbopen(nil)) == nil){
- fprint(2, "NET_StringToAdr:ndbopen: %r\n");
- return false;
+ if((t = dnsquery(nil, s, "ip")) == nil){
+ fprint(2, "NET_StringToAdr:dnsquery %s: %r\n", s);
+ return 0;
}
- if((nt = ndbgetipaddr(db, s)) == nil){
- ndbclose(db);
- fprint(2, "NET_StringToAdr:ndbgetipaddr: %r\n");
- return false;
- }
- strncpy(s, nt->val, sizeof(s)-1); /* just look at first value found */
- ndbfree(nt);
- ndbclose(db);
+ for(nt = t; nt != nil; nt = nt->entry)
+ if(!strcmp(nt->attr, "ip")){
+ strncpy(s, nt->val, sizeof(s)-1);
+ break;
+ }
+ ndbfree(t);
+
+ /* FIXMEGASHIT */
for(i = 0, pp = s; i < IPv4addrlen; i++){
if((p = strchr(pp, '.')) != nil)
*p++ = '\0';
@@ -154,12 +159,14 @@
return true;
}
-qboolean NET_IsLocalAddress (netadr_t adr)
+qboolean
+NET_IsLocalAddress(netadr_t adr)
{
return NET_CompareAdr(adr, laddr);
}
-qboolean looprecv (netsrc_t sock, netadr_t *net_from, sizebuf_t *d)
+static int
+looprecv(netsrc_t sock, netadr_t *net_from, sizebuf_t *d)
{
int i;
Loopback *l;
@@ -168,7 +175,7 @@
if(l->send - l->get > MAX_LOOPBACK)
l->get = l->send - MAX_LOOPBACK;
if(l->get >= l->send)
- return false;
+ return 0;
i = l->get & (MAX_LOOPBACK-1);
l->get++;
@@ -175,10 +182,11 @@
memcpy(d->data, l->msgs[i].data, l->msgs[i].datalen);
d->cursize = l->msgs[i].datalen;
*net_from = laddr;
- return true;
+ return 1;
}
-void loopsend (netsrc_t sock, int length, void *data, netadr_t /*to*/)
+static void
+loopsend(netsrc_t sock, int length, void *data, netadr_t /*to*/)
{
Loopback *l;
int i;
@@ -190,7 +198,8 @@
l->msgs[i].datalen = length;
}
-void cninit (void)
+static void
+cninit(void)
{
if(cnroot != nil)
return;
@@ -202,7 +211,8 @@
cnroot->dfd = -1;
}
-Conlist *cnins (int fd, char *addr, uchar *u, Udphdr *h, int src)
+static Conlist *
+cnins(int fd, char *addr, uchar *u, Udphdr *h, int src)
{
Conlist *p, *l;
@@ -221,7 +231,8 @@
return p;
}
-Conlist *cnfind (char *raddr)
+static Conlist *
+cnfind(char *raddr)
{
Conlist *p = cnroot->p;
@@ -233,7 +244,8 @@
return nil;
}
-void cndel (Conlist *p)
+static void
+cndel(Conlist *p)
{
Conlist *l = cnroot;
@@ -248,7 +260,8 @@
free(p);
}
-void cnnuke (void)
+static void
+cnnuke(void)
{
Conlist *p, *l = cnroot;
@@ -264,7 +277,8 @@
cnroot = nil;
}
-void dproc (void *me)
+static void
+dproc(void *me)
{
int n, fd;
Conmsg m;
@@ -271,8 +285,7 @@
Conlist *p;
Channel *c;
- if(threadsetgrp(DTHGRP) < 0)
- sysfatal("dproc:threadsetgrp: %r");
+ threadsetgrp(THnet);
m.p = p = me;
c = p->src == NS_CLIENT ? clchan : udpchan;
@@ -283,23 +296,25 @@
break;
m.n = n;
if(send(c, &m) < 0)
- sysfatal("uproc:send: %r\n");
+ sysfatal("uproc:send: %r");
+ if(nbsend(fuckchan, nil) < 0)
+ sysfatal("uproc:nbsend; %r");
}
fprint(2, "dproc %d: %r\n", threadpid(threadid()));
cndel(me);
}
-void uproc (void *c)
+static void
+uproc(void *c)
{
int n, fd;
- uchar udpbuf[BUFSZ+HDRSZ], u[IPaddrlen+2];
+ uchar udpbuf[Bufsz+Hdrsz], u[IPaddrlen+2];
char a[IPaddrlen*2+8+6];
Udphdr h;
Conmsg m;
Conlist *p;
- if(threadsetgrp(DTHGRP) < 0)
- sysfatal("uproc:threadsetgrp: %r");
+ threadsetgrp(THnet);
fd = ufd;
if(c == clchan)
@@ -306,8 +321,8 @@
fd = cldfd;
for(;;){
if((n = read(fd, udpbuf, sizeof udpbuf)) <= 0)
- sysfatal("uproc:read: %r\n");
- memcpy(&h, udpbuf, HDRSZ);
+ sysfatal("uproc:read: %r");
+ memcpy(&h, udpbuf, Hdrsz);
memcpy(u, h.raddr, IPaddrlen);
memcpy(u+IPaddrlen, h.rport, 2);
@@ -318,19 +333,22 @@
qunlock(&cnlock);
m.p = p;
- if(n - HDRSZ < 0){ /* FIXME */
+ if(n - Hdrsz < 0){ /* FIXME */
m.n = n;
memcpy(m.buf, udpbuf, m.n);
}else{
- m.n = n - HDRSZ;
- memcpy(m.buf, udpbuf+HDRSZ, m.n);
+ m.n = n - Hdrsz;
+ memcpy(m.buf, udpbuf+Hdrsz, m.n);
}
if(send(c, &m) < 0)
- sysfatal("uproc:send: %r\n");
+ sysfatal("uproc:send: %r");
+ if(nbsend(fuckchan, nil) < 0)
+ sysfatal("uproc:nbsend: %r");
}
}
-qboolean NET_GetPacket (netsrc_t src, netadr_t *from, sizebuf_t *d)
+qboolean
+NET_GetPacket(netsrc_t src, netadr_t *from, sizebuf_t *d)
{
int n;
Conmsg m;
@@ -357,11 +375,12 @@
return true;
}
-void NET_SendPacket (netsrc_t src, int length, void *data, netadr_t to)
+void
+NET_SendPacket(netsrc_t src, int length, void *data, netadr_t to)
{
int fd;
char *addr, *s, *lport;
- uchar b[BUFSZ+HDRSZ], u[IPaddrlen+2];
+ uchar b[Bufsz+Hdrsz], u[IPaddrlen+2];
Conlist *p;
switch(to.type){
@@ -393,9 +412,9 @@
if(p != nil){
fd = p->dfd;
if(fd == ufd || fd == cldfd){
- memcpy(b, &p->h, HDRSZ);
- memcpy(b+HDRSZ, data, length);
- write(fd, b, length+HDRSZ);
+ memcpy(b, &p->h, Hdrsz);
+ memcpy(b+Hdrsz, data, length);
+ write(fd, b, length+Hdrsz);
break;
}
}else{
@@ -425,17 +444,23 @@
}
}
-/* sleeps msec or until data is read from dfd */
-void NET_Sleep (int msec)
+void
+NET_Sleep(int ms) /* sleep for ms, or wakeup for stdio or incoming packets */
{
if(cfd == -1 || dedicated != nil && !dedicated->value)
return; // we're not a server, just run full speed
- /* FIXME */
- print("NET_Sleep %d: PORTME\n", msec);
+ if(send(tchan, &ms) < 0)
+ sysfatal("NET_Sleep:send: %r");
+ if(recv(fuckchan, nil) < 0)
+ sysfatal("NET_Sleep:recv: %r");
+ ms = -1;
+ if(nbsend(tchan, &ms) < 0) /* stop timer */
+ sysfatal("NET_Sleep:nbsend: %r");
}
-int openname (char *port, int *dfd, Channel **c)
+static int
+openname(char *port, int *dfd, Channel **c)
{
int fd;
char data[64], adir[40];
@@ -447,14 +472,15 @@
snprint(data, sizeof data, "%s/data", adir);
if((*dfd = open(data, ORDWR)) < 0)
sysfatal("openname:open %r");
- if((*c = chancreate(sizeof(Conmsg), NBUF)) == nil)
+ if((*c = chancreate(sizeof(Conmsg), Nbuf)) == nil)
sysfatal("openname:chancreate: %r");
- if(proccreate(uproc, *c, 8196) < 0)
+ if(proccreate(uproc, *c, 8192) < 0)
sysfatal("openname:proccreate: %r");
return fd;
}
-void openudp (void)
+static void
+openudp(void)
{
if(cfd != -1)
return;
@@ -476,10 +502,11 @@
}
/* a single player game will only use the loopback code */
-void NET_Config (qboolean multiplayer)
+void
+NET_Config(qboolean multiplayer)
{
if(!multiplayer){ /* shut down existing udp connections */
- threadkillgrp(DTHGRP);
+ threadkillgrp(THnet);
cnnuke();
if(udpchan != nil){
chanfree(udpchan);
@@ -511,13 +538,15 @@
}
}
-void NET_Shutdown (void)
+void
+NET_Shutdown(void)
{
NET_Config(false);
}
-void NET_Init (void)
+void
+NET_Init(void)
{
- svport = Cvar_Get("port", va("%d", PORT_SERVER), CVAR_NOSET);
- clport = Cvar_Get("clport", va("%hud", CLPORT), CVAR_NOSET);
+ svport = Cvar_Get("port", va("%hu", PORT_SERVER), CVAR_NOSET);
+ clport = Cvar_Get("clport", va("%hu", CLPORT), CVAR_NOSET);
}
--- a/plan9/vid.c
+++ b/plan9/vid.c
@@ -5,20 +5,25 @@
#include <ctype.h>
#include "../q_shared.h"
-qboolean rwon;
-uchar *framebuf;
-Image *fbim;
+refexport_t re; /* exported functions from refresh DLL */
int resized;
Point center;
typedef ulong PIXEL;
-PIXEL st2d_8to24table[256];
-int shiftmask_fl;
-int r_shift, g_shift, b_shift;
-uint r_mask, g_mask, b_mask;
+static int rwon;
+static uchar *framebuf;
+static Image *fbim;
+static PIXEL st2d_8to24table[256];
+static int shiftmask_fl;
+static int r_shift, g_shift, b_shift;
+static uint r_mask, g_mask, b_mask;
-void shiftmask_init (void)
+refexport_t GetRefAPI(refimport_t);
+
+
+static void
+shiftmask_init(void)
{
uint x;
@@ -34,7 +39,8 @@
shiftmask_fl = 1;
}
-PIXEL rgb24 (int r, int g, int b)
+static PIXEL
+rgb24(int r, int g, int b)
{
PIXEL p = 0;
@@ -62,7 +68,8 @@
return p;
}
-void st3_fixup (void)
+static void
+st3_fixup(void)
{
int x, y;
uchar *src;
@@ -90,7 +97,8 @@
}
}
-void resetfb (void)
+static void
+resetfb(void)
{
vid.width = Dx(screen->r);
vid.height = Dy(screen->r);
@@ -112,7 +120,8 @@
sw_mode->modified = true; /* make ref_soft refresh its shit */
}
-int SWimp_Init (void */*hInstance*/, void */*wndProc*/)
+int
+SWimp_Init(void *, void *)
{
srand(getpid());
@@ -119,12 +128,13 @@
if(initdraw(nil, nil, "quake2") < 0)
sysfatal("VID_Init:initdraw: %r\n");
resetfb();
- rwon = true;
- return true;
+ rwon = 1;
+ return 1;
}
/* copy backbuffer to front buffer */
-void SWimp_EndFrame (void)
+void
+SWimp_EndFrame(void)
{
if(resized){ /* skip frame if window resizes */
resized = 0;
@@ -139,13 +149,15 @@
flushimage(display, 1);
}
-rserr_t SWimp_SetMode (int */*pwidth*/, int */*pheight*/, int /*mode*/, qboolean /*fullscreen*/)
+rserr_t
+SWimp_SetMode(int */*pwidth*/, int */*pheight*/, int /*mode*/, qboolean /*fullscreen*/)
{
return rserr_ok;
}
/* nil palette == use existing; palette is expected to be in padded 4-byte xRGB format */
-void SWimp_SetPalette (uchar *palette)
+void
+SWimp_SetPalette(uchar *palette)
{
int i;
@@ -157,7 +169,8 @@
st2d_8to24table[i] = rgb24(palette[i*4], palette[i*4+1], palette[i*4+2]);
}
-void SWimp_Shutdown (void)
+void
+SWimp_Shutdown(void)
{
if(!rwon)
return;
@@ -165,9 +178,72 @@
free(framebuf);
if(fbim != nil)
freeimage(fbim);
- rwon = false;
+ rwon = 0;
}
-void SWimp_AppActivate (qboolean /*active*/)
+void
+SWimp_AppActivate(qboolean /*active*/)
{
+}
+
+void
+VID_Printf(int print_level, char *fmt, ...)
+{
+ va_list argptr;
+ char msg[4096];
+
+ va_start(argptr, fmt);
+ vsprintf(msg, fmt, argptr);
+ va_end(argptr);
+ if(print_level == PRINT_ALL)
+ Com_Printf("%s", msg);
+ else
+ Com_DPrintf("%s", msg);
+}
+
+void
+VID_Error(int err_level, char *fmt, ...)
+{
+ va_list argptr;
+ char msg[4096];
+
+ va_start(argptr, fmt);
+ vsprintf(msg, fmt, argptr);
+ va_end(argptr);
+ Com_Error(err_level, "%s", msg);
+}
+
+void
+VID_CheckChanges(void)
+{
+}
+
+void
+VID_Shutdown(void)
+{
+ R_Shutdown();
+}
+
+void
+VID_Init(void)
+{
+ refimport_t ri;
+
+ ri.Cmd_AddCommand = Cmd_AddCommand;
+ ri.Cmd_RemoveCommand = Cmd_RemoveCommand;
+ ri.Cmd_Argc = Cmd_Argc;
+ ri.Cmd_Argv = Cmd_Argv;
+ ri.Cmd_ExecuteText = Cbuf_ExecuteText;
+ ri.Con_Printf = VID_Printf;
+ ri.Sys_Error = VID_Error;
+ ri.FS_LoadFile = FS_LoadFile;
+ ri.FS_FreeFile = FS_FreeFile;
+ ri.FS_Gamedir = FS_Gamedir;
+ ri.Cvar_Get = Cvar_Get;
+ ri.Cvar_Set = Cvar_Set;
+ ri.Cvar_SetValue = Cvar_SetValue;
+ ri.Vid_MenuInit = VID_MenuInit;
+
+ re = GetRefAPI(ri);
+ re.Init(nil, nil);
}
--- a/q_shared.h
+++ b/q_shared.h
@@ -20,8 +20,6 @@
// q_shared.h -- included first by ALL program modules
-#pragma pack on /* FIXME: amd64 workaround for structs assumed aligned to 4 bytes */
-
//#define id386
typedef unsigned char byte;
@@ -179,12 +177,6 @@
//=============================================
-// portable case insensitive compare
-int Q_strcasecmp (char *s1, char *s2);
-int Q_strncasecmp (char *s1, char *s2, int n);
-
-//=============================================
-
short BigShort(short l);
short LittleShort(short l);
int BigLong (int l);
@@ -221,6 +213,7 @@
int Sys_Milliseconds (void);
void Sys_Mkdir (char *path);
+vlong flen(int);
// large block stack allocation routines
void *Hunk_Begin (int maxsize);
--- a/qcommon/cmd.c
+++ b/qcommon/cmd.c
@@ -825,7 +825,7 @@
// check functions
for (cmd=cmd_functions ; cmd ; cmd=cmd->next)
{
- if (!Q_strcasecmp (cmd_argv[0],cmd->name))
+ if (!cistrcmp (cmd_argv[0],cmd->name))
{
if (!cmd->function)
{ // forward to server command
@@ -840,7 +840,7 @@
// check alias
for (a=cmd_alias ; a ; a=a->next)
{
- if (!Q_strcasecmp (cmd_argv[0], a->name))
+ if (!cistrcmp (cmd_argv[0], a->name))
{
if (++alias_count == ALIAS_LOOP_COUNT)
{
--- a/qcommon/cmodel.c
+++ b/qcommon/cmodel.c
@@ -1446,9 +1446,6 @@
rotating entities
==================
*/
-#ifdef _WIN32
-#pragma optimize( "", off )
-#endif
trace_t CM_TransformedBoxTrace (vec3_t start, vec3_t end,
@@ -1510,12 +1507,6 @@
return trace;
}
-
-#ifdef _WIN32
-#pragma optimize( "", on )
-#endif
-
-
/*
===============================================================================
--- a/qcommon/common.c
+++ b/qcommon/common.c
@@ -1579,12 +1579,3 @@
all, sv, gm, cl, rf);
}
}
-
-/*
-=================
-Qcommon_Shutdown
-=================
-*/
-void Qcommon_Shutdown (void)
-{
-}
--- a/qcommon/files.c
+++ b/qcommon/files.c
@@ -236,7 +236,7 @@
// look through all the pak file elements
pak = search->pack;
for (i=0 ; i<pak->numfiles ; i++)
- if (!Q_strcasecmp (pak->files[i].name, filename))
+ if (!cistrcmp (pak->files[i].name, filename))
{ // found it!
file_from_pak = 1;
Com_DPrintf ("PackFile: %s : %s\n",pak->filename, filename);
@@ -309,7 +309,7 @@
pak = search->pack;
for (i=0 ; i<pak->numfiles ; i++)
- if (!Q_strcasecmp (pak->files[i].name, filename))
+ if (!cistrcmp (pak->files[i].name, filename))
{ // found it!
file_from_pak = 1;
Com_DPrintf ("PackFile: %s : %s\n",pak->filename, filename);
--- a/qcommon/qcommon.h
+++ b/qcommon/qcommon.h
@@ -761,7 +761,6 @@
void Qcommon_Init (int argc, char **argv);
void Qcommon_Frame (int msec);
-void Qcommon_Shutdown (void);
#define NUMVERTEXNORMALS 162
extern vec3_t bytedirs[NUMVERTEXNORMALS];
@@ -777,6 +776,14 @@
==============================================================
*/
+
+enum{
+ THin = 1,
+ THsnd = 2,
+ THnet = 3
+};
+
+extern uint sys_frame_time;
void Sys_Init (void);
--- a/qcommon/qfiles.h
+++ b/qcommon/qfiles.h
@@ -33,6 +33,8 @@
#define IDPAKHEADER (('K'<<24)+('C'<<16)+('A'<<8)+'P')
+#pragma pack on
+
typedef struct
{
char name[56];
@@ -474,3 +476,5 @@
int numareaportals;
int firstareaportal;
} darea_t;
+
+#pragma pack off
--- a/ref/r_image.c
+++ b/ref/r_image.c
@@ -583,35 +583,23 @@
}
}
-
-
-/*
-===============
-R_InitImages
-===============
-*/
-void R_InitImages (void)
+void
+R_InitImages(void)
{
registration_sequence = 1;
}
-/*
-===============
-R_ShutdownImages
-===============
-*/
-void R_ShutdownImages (void)
+void
+R_ShutdownImages(void)
{
- int i;
- image_t *image;
+ int i;
+ image_t *image;
- for (i=0, image=r_images ; i<numr_images ; i++, image++)
- {
- if (!image->registration_sequence)
+ for(i=0, image=r_images; i<numr_images; i++, image++){
+ if(!image->registration_sequence)
continue; // free texture
// free it
- free (image->pixels[0]); // the other mip levels just follow
- memset (image, 0, sizeof(*image));
+ free(image->pixels[0]); // the other mip levels just follow
+ memset(image, 0, sizeof *image);
}
}
-
--- a/ref/r_local.h
+++ b/ref/r_local.h
@@ -774,10 +774,6 @@
extern cvar_t *r_lightlevel; //FIXME HACK
-extern cvar_t *vid_fullscreen;
-extern cvar_t *vid_gamma;
-
-
extern clipplane_t view_clipplanes[4];
extern int *pfrustum_indexes[4];
--- a/ref/r_main.c
+++ b/ref/r_main.c
@@ -241,38 +241,38 @@
void R_Register (void)
{
- sw_aliasstats = ri.Cvar_Get ("sw_polymodelstats", "0", 0);
- sw_allow_modex = ri.Cvar_Get( "sw_allow_modex", "1", CVAR_ARCHIVE );
- sw_clearcolor = ri.Cvar_Get ("sw_clearcolor", "2", 0);
- sw_drawflat = ri.Cvar_Get ("sw_drawflat", "0", 0);
- sw_draworder = ri.Cvar_Get ("sw_draworder", "0", 0);
- sw_maxedges = ri.Cvar_Get ("sw_maxedges", STRINGER(MAXSTACKSURFACES), 0);
- sw_maxsurfs = ri.Cvar_Get ("sw_maxsurfs", "0", 0);
- sw_mipcap = ri.Cvar_Get ("sw_mipcap", "0", 0);
- sw_mipscale = ri.Cvar_Get ("sw_mipscale", "1", 0);
- sw_reportedgeout = ri.Cvar_Get ("sw_reportedgeout", "0", 0);
- sw_reportsurfout = ri.Cvar_Get ("sw_reportsurfout", "0", 0);
- sw_stipplealpha = ri.Cvar_Get( "sw_stipplealpha", "0", CVAR_ARCHIVE );
- sw_surfcacheoverride = ri.Cvar_Get ("sw_surfcacheoverride", "0", 0);
- sw_waterwarp = ri.Cvar_Get ("sw_waterwarp", "1", 0);
- sw_mode = ri.Cvar_Get( "sw_mode", "0", CVAR_ARCHIVE );
+ sw_aliasstats = Cvar_Get("sw_polymodelstats", "0", 0);
+ sw_allow_modex = Cvar_Get("sw_allow_modex", "1", CVAR_ARCHIVE);
+ sw_clearcolor = Cvar_Get("sw_clearcolor", "2", 0);
+ sw_drawflat = Cvar_Get("sw_drawflat", "0", 0);
+ sw_draworder = Cvar_Get("sw_draworder", "0", 0);
+ sw_maxedges = Cvar_Get("sw_maxedges", STRINGER(MAXSTACKSURFACES), 0);
+ sw_maxsurfs = Cvar_Get("sw_maxsurfs", "0", 0);
+ sw_mipcap = Cvar_Get("sw_mipcap", "0", 0);
+ sw_mipscale = Cvar_Get("sw_mipscale", "1", 0);
+ sw_reportedgeout = Cvar_Get("sw_reportedgeout", "0", 0);
+ sw_reportsurfout = Cvar_Get("sw_reportsurfout", "0", 0);
+ sw_stipplealpha = Cvar_Get("sw_stipplealpha", "0", CVAR_ARCHIVE);
+ sw_surfcacheoverride = Cvar_Get("sw_surfcacheoverride", "0", 0);
+ sw_waterwarp = Cvar_Get ("sw_waterwarp", "1", 0);
+ sw_mode = Cvar_Get("sw_mode", "0", CVAR_ARCHIVE);
- r_lefthand = ri.Cvar_Get( "hand", "0", CVAR_USERINFO | CVAR_ARCHIVE );
- r_speeds = ri.Cvar_Get ("r_speeds", "0", 0);
- r_fullbright = ri.Cvar_Get ("r_fullbright", "0", 0);
- r_drawentities = ri.Cvar_Get ("r_drawentities", "1", 0);
- r_drawworld = ri.Cvar_Get ("r_drawworld", "1", 0);
- r_dspeeds = ri.Cvar_Get ("r_dspeeds", "0", 0);
- r_lightlevel = ri.Cvar_Get ("r_lightlevel", "0", 0);
- r_lerpmodels = ri.Cvar_Get( "r_lerpmodels", "1", 0 );
- r_novis = ri.Cvar_Get( "r_novis", "0", 0 );
+ r_lefthand = Cvar_Get("hand", "0", CVAR_USERINFO | CVAR_ARCHIVE);
+ r_speeds = Cvar_Get("r_speeds", "0", 0);
+ r_fullbright = Cvar_Get("r_fullbright", "0", 0);
+ r_drawentities = Cvar_Get("r_drawentities", "1", 0);
+ r_drawworld = Cvar_Get("r_drawworld", "1", 0);
+ r_dspeeds = Cvar_Get("r_dspeeds", "0", 0);
+ r_lightlevel = Cvar_Get("r_lightlevel", "0", 0);
+ r_lerpmodels = Cvar_Get("r_lerpmodels", "1", 0);
+ r_novis = Cvar_Get("r_novis", "0", 0);
- vid_fullscreen = ri.Cvar_Get( "vid_fullscreen", "0", CVAR_ARCHIVE );
- vid_gamma = ri.Cvar_Get( "vid_gamma", "1.0", CVAR_ARCHIVE );
+ vid_fullscreen = Cvar_Get("vid_fullscreen", "0", CVAR_ARCHIVE);
+ vid_gamma = Cvar_Get("vid_gamma", "1", CVAR_ARCHIVE);
- ri.Cmd_AddCommand ("modellist", Mod_Modellist_f);
- ri.Cmd_AddCommand( "screenshot", R_ScreenShot_f );
- ri.Cmd_AddCommand( "imagelist", R_ImageList_f );
+ Cmd_AddCommand("modellist", Mod_Modellist_f);
+ Cmd_AddCommand("screenshot", R_ScreenShot_f);
+ Cmd_AddCommand("imagelist", R_ImageList_f);
sw_mode->modified = true; // force us to do mode specific stuff later
vid_gamma->modified = true; // force us to rebuild the gamma table later
@@ -282,11 +282,12 @@
//PGM
}
-void R_UnRegister (void)
+void
+R_UnRegister(void)
{
- ri.Cmd_RemoveCommand( "screenshot" );
- ri.Cmd_RemoveCommand ("modellist");
- ri.Cmd_RemoveCommand( "imagelist" );
+ Cmd_RemoveCommand("screenshot");
+ Cmd_RemoveCommand("modellist");
+ Cmd_RemoveCommand("imagelist");
}
/*
@@ -327,36 +328,25 @@
return true;
}
-/*
-===============
-R_Shutdown
-===============
-*/
-void R_Shutdown (void)
+void
+R_Shutdown(void)
{
- // free z buffer
- if (d_pzbuffer)
- {
- free (d_pzbuffer);
- d_pzbuffer = NULL;
+ if(d_pzbuffer){
+ free(d_pzbuffer);
+ d_pzbuffer = nil;
}
- // free surface cache
- if (sc_base)
- {
- D_FlushCaches ();
- free (sc_base);
- sc_base = NULL;
+ if(sc_base){
+ D_FlushCaches();
+ free(sc_base);
+ sc_base = nil;
}
-
- // free colormap
- if (vid.colormap)
- {
- free (vid.colormap);
- vid.colormap = NULL;
+ if(vid.colormap){
+ free(vid.colormap);
+ vid.colormap = nil;
}
- R_UnRegister ();
- Mod_FreeAll ();
- R_ShutdownImages ();
+ R_UnRegister();
+ Mod_FreeAll();
+ R_ShutdownImages();
SWimp_Shutdown();
}
--- a/ref/r_model.c
+++ b/ref/r_model.c
@@ -1210,32 +1210,20 @@
R_FreeUnusedImages ();
}
-
-//=============================================================================
-
-/*
-================
-Mod_Free
-================
-*/
-void Mod_Free (model_t *mod)
+void
+Mod_Free(model_t *mod)
{
- Hunk_Free (mod->extradata);
- memset (mod, 0, sizeof(*mod));
+ Hunk_Free(mod->extradata);
+ memset(mod, 0, sizeof *mod);
}
-/*
-================
-Mod_FreeAll
-================
-*/
-void Mod_FreeAll (void)
+void
+Mod_FreeAll(void)
{
- int i;
+ int i;
- for (i=0 ; i<mod_numknown ; i++)
- {
- if (mod_known[i].extradatasize)
- Mod_Free (&mod_known[i]);
+ for(i=0; i<mod_numknown; i++){
+ if(mod_known[i].extradatasize)
+ Mod_Free(&mod_known[i]);
}
}
--- a/server/sv_init.c
+++ b/server/sv_init.c
@@ -418,7 +418,7 @@
Cvar_Set ("nextserver", "");
//ZOID special hack for end game screen in coop mode
- if (Cvar_VariableValue ("coop") && !Q_strcasecmp(level, "victory.pcx"))
+ if (Cvar_VariableValue ("coop") && !cistrcmp(level, "victory.pcx"))
Cvar_Set ("nextserver", "gamemap \"*base1\"");
// if there is a $, use the remainder as a spawnpoint