Commit Graph

44 Commits

Author SHA1 Message Date
Bill Currie 31dd419fde [util] Reject non-shortest encoded utf-8 sequences
While chatting about utf-8, I noticed that QF doesn't ensure the input
sequences are the shortest possible encodings. It turns out that the
check is easy in that only the second byte needs to be checked if the
first byte's data bits are 0, and the second byte must have a data value
larger than that representable by the next lower leading byte.
2022-10-15 22:54:24 +09:00
Bill Currie 8fdd9c1f5a [util] Write some tests for utf8 r/w
And fix some errors with 5-byte encodings.
2021-07-27 23:29:14 +09:00
Bill Currie 5b4428420e [utils] Get utf-8 writing working for up to 11 bits
I need to write some automated tests for this, and reading of course,
but 1 and two byte outputs look correct. Kind of sad it took sixteen
years to get around to attempting to use the code :(
2021-07-27 23:29:02 +09:00
Bill Currie f596eacf0c [util] Add message short and long poke functions
Both big and little endian.
2021-04-04 15:56:14 +09:00
Bill Currie 972b0f8a70 [util] Make sizebuf and msg sizes unisgned
And clean up the mess.
2021-04-04 15:53:53 +09:00
Bill Currie 9a2f82bbc6 [util] Add big-endian short msg read/write
And improve the generated code for MSG_ReadShort

I suspect gcc didn't like all the excess pointer dereferences and so
couldn't assume that the bytes were being read sequentially.
2021-04-04 15:19:38 +09:00
Bill Currie afd7b38551 [util] Add big-endian long msg read/write
And improve the generated code as well (ie, use a code sequence that gcc
recognizes and optimizes to a single 32-bit read and a byte-swap).

nq uses big-endian for its packet headers (arg, though it is consistent
with IP, it's not with the rest of quake).
2021-04-04 15:11:09 +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 042f310ed7 Add MSG_WriteBytes to match MSG_ReadBytes. 2012-02-06 15:04:01 +09:00
Bill Currie deddb5cb6a Partially document the message api. 2011-09-04 09:58:12 +09:00
Bill Currie 9afb691dd9 Change MSG_ReadShort to return an unsigned short.
Avoiding the sign extension by default seems to be more useful.
2011-09-04 09:58:12 +09:00
Bill Currie 31c13d92a2 Protocol 666/large map support from FitzQuake.
Alpha and lerping aren't implemented yet, but things seem to be working. I
can load and play oms2.bsp (Conflagrant Rodent).
2010-11-26 16:20:05 +09:00
Bill Currie 99c0954b47 the big dso visibility patch :). Sure, we have to have unique names for static builds, but with controlled visibitly we should get faster program loads (although this isn't C++, so it's not as bad) and complex plugins are cleaner. 2007-03-10 12:00:59 +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 501180aaac gcc-4.0 fixes. even found some bugs :) (names /not/ mangled this time) 2005-06-08 06:35:48 +00:00
Bill Currie 63d787d9e9 add MSG_WriteUTF8 and MSG_ReadUTF8 to handle 31 bit values nicely for
future protocol extensions. Equivalent to MSG_*Byte or MSG_*Char. Use
MSG_ReadString and MSG_WriteString with the appropriate libc functions for
utf8 strings.
2005-05-05 00:27:04 +00:00
Bill Currie 925ea16e1d we get to "spawn". whee. not long now and I'll have to work on the client
side :)
2005-05-02 09:00:17 +00:00
Ragnvald Maartmann-Moe IV 62a0919472 Revert broken gcc4 cleanups. 2005-04-11 20:59:03 +00:00
Ragnvald Maartmann-Moe IV b59f366684 First few files of signedness cleanup for GCC 4.0. 2005-02-10 22:03:16 +00:00
Bill Currie 6d02004ca8 Mike Gorchak's <mike@malva.ua> second (final for now:) QNX patch. renames
msg_t to qmsg_t.
2004-01-20 06:11:00 +00:00
Bill Currie eb099ae0d3 make qf gcc 3.3 clean 2003-04-17 00:01:48 +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 451eaba2e1 change the value type for MSG_Write(Byte|Short|Long) from unsigned int to
int to avoid float -> unsigned int conversion problems
2002-08-19 01:58:01 +00:00
Bill Currie 3431b7ce82 float -> unsigned int needs to pass though int otherwise we lose the negative
range on the ps2 (nasal demons:)
2002-08-19 00:05:51 +00:00
Bill Currie 91dc5b20db nuke MSG_ReadChar. Other than the sign extention, it's redundant and nothing
a suitable typecast can't take care of.
2002-07-02 19:15:29 +00:00
Ragnvald Maartmann-Moe IV 5e5fdb7bc2 Kill MSG_WriteChar. 2002-07-02 19:13:53 +00:00
Ragnvald Maartmann-Moe IV a6d999dfa4 Speed up most of the MSG_Write* functions by reducing the number of times SZ_GetSpace gets called. 2002-06-28 04:48:07 +00:00
Bill Currie 44dcf74627 strip the \n from all(?) of the Sys_Error calls (Sys_Error itself will be
adding \n).
2002-05-14 06:12:29 +00:00
Bill Currie 013f503738 start getting const-correct on vec3_t params 2002-01-03 05:29:38 +00:00
Bill Currie 69e1a9aab5 bah, installed headers made my compile tests fail 2001-12-13 22:56:43 +00:00
Ragnvald Maartmann-Moe IV 2db08923e8 MSG_(Read|Write)(Coord|Angle|CoordAngle)V. Cleanups, and preparation for use of vector ops in msg.c. 2001-12-12 21:56:09 +00:00
Ragnvald Maartmann-Moe IV f66b7a93e5 Major particle interface cleanup, several bugfixes, and minor performance improvements. Oh, check out "/help easter_eggs" (gl-only, at the moment). 2001-12-11 22:37:30 +00:00
Bill Currie c130d38c6c fix more bugs caused by the Hunk_TempAlloc changes and do some more jump
prediction fixes for msg_t and sizebuf_t
2001-12-03 22:11:21 +00:00
Bill Currie 9bf575d081 several little tweaks that more than make up for the reversion of low-copy 2001-12-03 08:46:56 +00:00
Bill Currie 72e2e871f8 goodbye PARANOID :P 2001-11-29 06:58:15 +00:00
Bill Currie fedea4a5e1 check for malloc failure 2001-10-23 17:35:46 +00:00
Bill Currie 6c0d760102 msg.h:
give mst_t a buffer to hold unterminated message strings
	kill MSG_ReadStaticString and MSG_ReadStringLine
msg.c:
	kill MSG_ReadStaticString and MSG_ReadStringLine
	MSG_ReadString: implement the buffer for unterminated message strings
	and update readcount on badread
cl_main.c:
	go back to MSG_ReadString and fix up the resulting const char * issues
cl_parse.c:
	rewrite the cl_mofake code all because of an uninitialized variable :)
sv_main.c:
	use MSG_ReadString instead of MSG_ReadStringLine because
	Cmd_TokenizeString really doesn't care about a terminating \n
2001-10-18 06:23:26 +00:00
Adam Olsen 18036b63d9 - change MSG_ReadString to return const char * and return a pointer
directly into the packet data.
- change a bunch of char *'s to const char *'s for the above.  Only
  thing that had trouble was the cl_nofake handler, which I changed to
  use a local buffer.
- add MSG_ReadStaticString which acts like the old MSG_ReadString,
  specifically that it uses a static buffer and tollerates
  unterminated strings.
- add a Q_strnlen function, and make strnlen use it if strnlen is
  undefined.
- Add a net_svc.h and net_svc.c which will preparse svc messages into
  structs, for easier handling.  Currently only soundlist and
  modellist are done.
2001-10-18 04:44:58 +00:00
Bill Currie 1b1955551a make all the multi-byte MSG_Read* functions update msg->readcount when the
end of the buffer is hit so subsequent MSG_Read* calls for smaller values
error as well. Also add a check for badread in MSG_ReadFloat
2001-10-18 04:14:18 +00:00
Bill Currie b1f4a778f9 the rcsid commit from hell }:> 2001-09-28 06:26:31 +00:00
Ragnvald Maartmann-Moe IV edcf092b05 Whitespace, dammit. Oh, and removal of several orphaned comments. Comments in front of functions suck. 2001-08-22 22:03:16 +00:00
Bill Currie 1c9e1b176f fear the mighty const correct patch 2001-07-15 07:04:17 +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 2bfeed6820 looks like utils is more or less complete for now, except for some fixes in
nq for abyss etc (ie, the magical -<mod> args).
The interface to the message subsystem got a revamp and all the mods to the .c
files reflect this. currently a little ugly, but I plan on abstracting msg
further to clean it up and make it more oo.
2001-02-23 23:16:13 +00:00