Commit graph

51 commits

Author SHA1 Message Date
Bill Currie
4e526702dd [nq] Plug some memory leaks and fix a shutdown error
The error was introduced by the input memory leak fixes, but the
solution is to ensure CL_Shutdown is called before IN_Shutdown.

Some of the memory leaks were quite legitimate this time.
2022-05-12 20:58:39 +09:00
Bill Currie
12c84046f3 [cvar] Make cvars properly typed
This is an extremely extensive patch as it hits every cvar, and every
usage of the cvars. Cvars no longer store the value they control,
instead, they use a cexpr value object to reference the value and
specify the value's type (currently, a null type is used for strings).
Non-string cvars are passed through cexpr, allowing expressions in the
cvars' settings. Also, cvars have returned to an enhanced version of the
original (id quake) registration scheme.

As a minor benefit, relevant code having direct access to the
cvar-controlled variables is probably a slight optimization as it
removed a pointer dereference, and the variables can be located for data
locality.

The static cvar descriptors are made private as an additional safety
layer, though there's nothing stopping external modification via
Cvar_FindVar (which is needed for adding listeners).

While not used yet (partly due to working out the design), cvars can
have a validation function.

Registering a cvar allows a primary listener (and its data) to be
specified: it will always be called first when the cvar is modified. The
combination of proper listeners and direct access to the controlled
variable greatly simplifies the more complex cvar interactions as much
less null checking is required, and there's no need for one cvar's
callback to call another's.

nq-x11 is known to work at least well enough for the demos. More testing
will come.
2022-04-24 19:15:22 +09:00
Bill Currie
ef574e67d0 [net] Remove client references from net_main
This is progress towards #23. There are still some references to
host_time and host_client (via nq's server.h), and a lot of references
to sv and svs, but this is definitely a step in the right direction.
2022-04-24 17:21:58 +09:00
Bill Currie
6d5ffa9f8e [build] Move to non-recursive make
There's still some cleanup to do, but everything seems to be working
nicely: `make -j` works, `make distcheck` passes. There is probably
plenty of bitrot in the package directories (RPM, debian), though.

The vc project files have been removed since those versions are way out
of date and quakeforge is pretty much dependent on gcc now anyway.

Most of the old Makefile.am files  are now Makemodule.am.  This should
allow for new Makefile.am files that allow local building (to be added
on an as-needed bases).  The current remaining Makefile.am files are for
standalone sub-projects.a

The installable bins are currently built in the top-level build
directory. This may change if the clutter gets to be too much.

While this does make a noticeable difference in build times, the main
reason for the switch was to take care of the growing dependency issues:
now it's possible to build tools for code generation (eg, using qfcc and
ruamoko programs for code-gen).
2020-06-25 11:35:37 +09:00
Bill Currie
88b4046632 [util] Pass a data pointer to shutdown functions
And clean up the mess.
2020-03-22 00:57:54 +09:00
Bill Currie
bc1b483525 Nuke the rcsid stuff.
It's pretty useless in git.
2012-04-22 10:56:32 +09:00
Bill Currie
cca9983a48 Clean up the startup file diffs.
This also makes functionality consistent across the platforms, such as
adding support for -dedicated to sdl based nq, and various timing
calculations are now consistent.
2011-09-04 12:04:03 +09:00
Bill Currie
0d5bebabe2 Replace qsockaddr with AF_address_t.
It seems qsockaddr's assumptions aren't necessarily portable, as OpenBSD
seems to be doing weird things with qsa_family. Even if that's not the
case, this is cleaner.
2011-08-24 09:14:02 +09:00
Bill Currie
997102fea8 audit the usage of "only"
There are still a few iffy places (notably around certain prepositions), but
the relevant sentences are now much easier to read.
2010-01-13 06:42:26 +00:00
Bill Currie
d66934942d nuke Con_Printf and Con_DPrintf and use Sys_* instead 2007-11-06 10:17:14 +00:00
Bill Currie
3fb03fc2be hah, should have been using __attribute__((used)) all that time (rather
than __attribute__((unused))). fixes the missing console in -x11
2005-08-04 15:27:09 +00:00
Bill Currie
761a7546dd re-arrange things so __attribute__ and __builtin_expect are properly
autoconfiscated so rcsid will continue to work with gcc 3.3
2003-01-15 15:31:36 +00:00
Bill Currie
c8db558c00 don't need sys/mman.h 2002-12-20 22:35:41 +00:00
Bill Currie
836c469737 sys.[ch]:
handle SIGFPE and allow the registered signal handler to do recovery
	rather than bail
progs.h, pr_exec.c, pr_load.c:
	if pr_faultchecks is 1 (0 is default), handle division by 0 gracefully
	by loading the maximum representable number into the answer
	Closes: #58
the rest:
	kill the SIGFPE stuff
2002-11-13 19:26:44 +00:00
Bill Currie
442ccc3deb no more Sys_* functions defined in nq or qw :) 2002-06-07 15:46:15 +00:00
Bill Currie
ebfdbd9285 the fpu manipulation stuff seems to be better off in the one place that
actually uses it...
2002-06-07 15:09:20 +00:00
Bill Currie
4039452297 more sys cleanup. server consoles may be broken for non-curses. 2002-06-03 19:11:48 +00:00
Bill Currie
53703ece81 that doesn't make any difference :/ 2002-06-03 06:41:15 +00:00
Bill Currie
5f3f4b6f69 make sure exceptions are masked 2002-06-03 06:15:59 +00:00
Bill Currie
9630a23391 more Sys_* cleanup 2002-06-01 03:00:13 +00:00
Bill Currie
fc0bb7e175 move Sys_DebugLog 2002-05-31 22:50:43 +00:00
Bill Currie
05ec06d3e2 more FNDELAY to O_NONBLOCK 2002-04-07 06:31:22 +00:00
Bill Currie
b6c331736a give nq host_mem_size so -mem can be a cvar (similar to sv_mem_size and
cl_mem_size in qw).
2002-02-19 20:47:45 +00:00
Bill Currie
5a1c7ecd2b init order cleanup 2002-01-17 04:11:36 +00:00
Bill Currie
f0c03f8331 minor cleanups of Sys_ConsoleInput. Cleaning it up properly will take more
work, but this removes most of the redundant instantces. nq-sdl (or -sgl)
-dedicated won't have console input, nor will dedicated servers that don't
load a console plugin.
2001-11-18 22:08:24 +00:00
Ragnvald Maartmann-Moe IV
d1c115da05 Whitespace. 2001-10-30 19:58:01 +00:00
Bill Currie
85c9e0ab1e more externs cleaned up 2001-10-29 17:46:03 +00:00
Bill Currie
6ea400fb30 d'oh, forgot to compile test :P 2001-10-18 17:03:50 +00:00
Bill Currie
00bfc128a0 more printf elimination 2001-10-18 16:49:40 +00:00
Bill Currie
1929797cc9 get nq-server so it runs. part of this involved renaming cl_warncmd to
cmd_warncmd
2001-10-03 21:25:43 +00:00
Bill Currie
630e064150 -dedicated fixes 2001-10-03 17:25:21 +00:00
Bill Currie
b1f4a778f9 the rcsid commit from hell }:> 2001-09-28 06:26:31 +00:00
Bill Currie
36de3c147e move Sys_Quit and Sys_Error totally into libQFutil. They will call a list
of pre-registered (Sys_RegisterShutdown) function before actually exiting
the program. This should take care of the pain when an ncurses server
crashes.
2001-09-24 21:00:23 +00:00
Bill Currie
3656d6fd59 compile fixes for win32 and take the pruning shears to *sys*.c in qw and nq
(they're not done yet, though)
2001-08-29 17:45:53 +00:00
Bill Currie
9a678a5e63 final eradication of basedir and cachedir 2001-08-27 18:53:09 +00:00
Ragnvald Maartmann-Moe IV
277b141ec7 Header cleanups (<strings.h> outside without HAVE_* tests and the like, multiply including several headers unless on windows, and other bizarre messes). Plus a hefty dose of whitespace. 2001-08-27 07:13:32 +00:00
Adam Olsen
d5fa2cc321 Major diff reduction in *sys_*.c files. Don't think I broke anything,
but hard to test it all..

I skipped a couple files, because they contained *alot* of
platform-specific functions.
2001-08-18 21:57:45 +00:00
Adam Olsen
8c3f799282 Make nq-* -dedicated work. :) 2001-07-16 23:36:43 +00:00
Bill Currie
1c9e1b176f fear the mighty const correct patch 2001-07-15 07:04:17 +00:00
Bill Currie
b4ac2446a1 Put knghtbrd's sys cleanup changes back in, but with Sys_MakeCodeWriteable
in sys/util.c rather than limbo (the crux of the problem that caused the
previous reversal). I'll look into his Sys_Printf changes next.
2001-07-05 03:28:40 +00:00
Bill Currie
e659c2a44f revert kntbrds recent sys changes as they break sw static builds 2001-07-05 00:12:43 +00:00
Joseph Carter
eb71edb5d4 taniwha, please have a look at this to make sure I'm doing it the "right"
way..  Sys_Printf is now Sys_StdPrintf for now.  Sys_Printf is a function
pointer and will end up replacing Con_Printf as well.  Names will change
to something intelligent when I'm done.  Win32 is not yet touched, but I
haven't forgotten it.

The reason for this is the assumption that Con_Printf and Sys_Printf do
not overlap.  The new server console WILL change that, requiring that we
change how we handle both functions.  The plan:  Default to using stubs
and swap them for full-featured functions on Console init which do all
the things we expect.  Will also do a stderr version later.
2001-07-02 18:11:34 +00:00
Joseph Carter
8bff65bbd2 A little more cleanup of the sys stuff, at least for unix. I don't want
to mess with the win32 stuff just now without coordinating with Coderjoe,
which I don't have time for just now..
2001-07-01 08:59:49 +00:00
Ragnvald Maartmann-Moe IV
f6374b48ce First pass at updating nq particles. Compiles. Crashes. Taniwha wanted a look. Flee in terror.
Also has bunches of cleanups, including string.h/strings.h ifdefs, whitespace, and removal of pointless comments.
2001-05-09 05:41:34 +00:00
Joseph Carter
2bc55b7828 Cvar cleanups.. NULL is now used in place of 0 for callbacks, this should
make Cvar_Get's a lot easier to read.
2001-04-10 23:39:30 +00:00
Bill Currie
e939ccc40a cvars now sport a callback function that gets called whenever the cvar changes
or on initial get.
2001-03-31 01:02:52 +00:00
Bill Currie
99535102d7 bare bones sys stuff moved into libQFutil. unix stuff seems to work just fine,
but win32 is probably borked atm
2001-03-30 23:24:57 +00:00
Bill Currie
f78b973978 move the api headers into include/QF and clean up (most of) the resulting mess.
target specific files that I don't build won't compile yet. just put QF/
infront of the offending headers.

Also move ver_check into libqfutils
2001-03-27 20:33:07 +00:00
Bill Currie
1fce1ea12e run indent over all the .c files using qw's .indent.pro. The real reason for
this is I mistakenly did so while making some other changes (which I made sure
were NOT in the checkin:)
2001-02-26 06:48:02 +00:00
Bill Currie
c83f38d8bf bring Mercury's changes back in 2001-02-20 04:57:07 +00:00