X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fdarkplaces.git;a=blobdiff_plain;f=common.c;h=7dab60b7760d462f426d3e542177b99c2c566d13;hp=c4461231503c32f80eb3ee79e5444b04a56618e5;hb=af0b7a1fa11c2ceedeb9f66ca950f6c0bff8ad8f;hpb=ef35a088cb3ab1900acdbd5285465cd845368e79 diff --git a/common.c b/common.c index c4461231..7dab60b7 100644 --- a/common.c +++ b/common.c @@ -219,7 +219,7 @@ void MSG_WriteString (sizebuf_t *sb, const char *s) SZ_Write (sb, s, strlen(s)+1); } -// used by server (always latest dpprotocol) +// used by server (always latest PROTOCOL_DARKPLACES) void MSG_WriteDPCoord (sizebuf_t *sb, float f) { if (f >= 0) @@ -353,7 +353,7 @@ int MSG_ReadBytes (int numbytes, unsigned char *out) return l; } -// used by server (always latest dpprotocol) +// used by server (always latest PROTOCOL_DARKPLACES) float MSG_ReadDPCoord (void) { return (signed short) MSG_ReadLittleShort(); @@ -362,9 +362,9 @@ float MSG_ReadDPCoord (void) // used by client float MSG_ReadCoord (void) { - if (dpprotocol == DPPROTOCOL_VERSION2 || dpprotocol == DPPROTOCOL_VERSION3) + if (cl.protocol == PROTOCOL_DARKPLACES2 || cl.protocol == PROTOCOL_DARKPLACES3 || cl.protocol == PROTOCOL_DARKPLACES4) return (signed short) MSG_ReadLittleShort(); - else if (dpprotocol == DPPROTOCOL_VERSION1) + else if (cl.protocol == PROTOCOL_DARKPLACES1) return MSG_ReadLittleFloat(); else return MSG_ReadLittleShort() * (1.0f/8.0f); @@ -694,6 +694,8 @@ void COM_InitGameType (void) gamemode = GAME_TEU; else if (strstr(name, "battlemech")) gamemode = GAME_BATTLEMECH; + else if (strstr(name, "zymotic")) + gamemode = GAME_ZYMOTIC; else gamemode = GAME_NORMAL; @@ -715,6 +717,8 @@ void COM_InitGameType (void) gamemode = GAME_TEU; else if (COM_CheckParm ("-battlemech")) gamemode = GAME_BATTLEMECH; + else if (COM_CheckParm ("-zymotic")) + gamemode = GAME_ZYMOTIC; switch(gamemode) { @@ -748,11 +752,15 @@ void COM_InitGameType (void) break; case GAME_TEU: gamename = "TheEvilUnleashed"; - gamedirname = "teu"; + gamedirname = "baseteu"; break; case GAME_BATTLEMECH: gamename = "Battlemech"; - gamedirname = "battlemech"; + gamedirname = "base"; + break; + case GAME_ZYMOTIC: + gamename = "Zymotic"; + gamedirname = "data"; break; default: Sys_Error("COM_InitGameType: unknown gamemode %i\n", gamemode); @@ -827,7 +835,7 @@ char *va(const char *format, ...) s = string[stringindex]; stringindex = (stringindex + 1) & 7; va_start (argptr, format); - vsprintf (s, format,argptr); + vsnprintf (s, sizeof (string[0]), format,argptr); va_end (argptr); return s; @@ -890,7 +898,7 @@ char *SearchInfostring(const char *infostring, const char *key) if (c == '\0') return NULL; - if (c == '\\') + if (c == '\\' || key_ind == sizeof (crt_key) - 1) { crt_key[key_ind] = '\0'; break; @@ -906,7 +914,7 @@ char *SearchInfostring(const char *infostring, const char *key) { c = *infostring++; - if (c == '\0' || c == '\\') + if (c == '\0' || c == '\\' || value_ind == sizeof (value) - 1) { value[value_ind] = '\0'; return value; @@ -929,3 +937,85 @@ char *SearchInfostring(const char *infostring, const char *key) } } + +//======================================================== +// strlcat and strlcpy, from OpenBSD + +/* + * Copyright (c) 1998 Todd C. Miller + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/* $OpenBSD: strlcat.c,v 1.11 2003/06/17 21:56:24 millert Exp $ */ +/* $OpenBSD: strlcpy.c,v 1.8 2003/06/17 21:56:24 millert Exp $ */ + + +// Most (all?) BSDs already have them +#if !defined(__OpenBSD__) && !defined(__NetBSD__) && !defined(__FreeBSD__) + +size_t +strlcat(char *dst, const char *src, size_t siz) +{ + register char *d = dst; + register const char *s = src; + register size_t n = siz; + size_t dlen; + + /* Find the end of dst and adjust bytes left but don't go past end */ + while (n-- != 0 && *d != '\0') + d++; + dlen = d - dst; + n = siz - dlen; + + if (n == 0) + return(dlen + strlen(s)); + while (*s != '\0') { + if (n != 1) { + *d++ = *s; + n--; + } + s++; + } + *d = '\0'; + + return(dlen + (s - src)); /* count does not include NUL */ +} + +size_t +strlcpy(char *dst, const char *src, size_t siz) +{ + register char *d = dst; + register const char *s = src; + register size_t n = siz; + + /* Copy as many bytes as will fit */ + if (n != 0 && --n != 0) { + do { + if ((*d++ = *s++) == 0) + break; + } while (--n != 0); + } + + /* Not enough room in dst, add NUL and traverse rest of src */ + if (n == 0) { + if (siz != 0) + *d = '\0'; /* NUL-terminate dst */ + while (*s++) + ; + } + + return(s - src - 1); /* count does not include NUL */ +} + +#endif // #if !defined(__OpenBSD__) && !defined(__NetBSD__) && !defined(__FreeBSD__)