FTEQW
Documentation of the FTE engine source tree.
common.h
Go to the documentation of this file.
1/*
2Copyright (C) 1996-1997 Id Software, Inc.
3
4This program is free software; you can redistribute it and/or
5modify it under the terms of the GNU General Public License
6as published by the Free Software Foundation; either version 2
7of the License, or (at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12
13See the GNU General Public License for more details.
14
15You should have received a copy of the GNU General Public License
16along with this program; if not, write to the Free Software
17Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18
19*/
20// comndef.h -- general definitions
21
22#include <stdio.h>
23
24//make shared
25#ifndef QDECL
26 #ifdef _MSC_VER
27 #define QDECL _cdecl
28 #else
29 #define QDECL
30 #endif
31#endif
32
33#define VK_NO_STDINT_H //we're handling this. please don't cause conflicts. grr.
34#if __STDC_VERSION__ >= 199901L || defined(__GNUC__)
35 //C99 has a stdint header which hopefully contains an intptr_t
36 //its optional... but if its not in there then its unlikely you'll actually be able to get the engine to a stage where it *can* load anything
37 #include <stdint.h>
38 typedef intptr_t qintptr_t;
39 typedef uintptr_t quintptr_t;
40 #define qint16_t int16_t
41 #define quint16_t uint16_t
42 #define qint32_t int32_t
43 #define quint32_t uint32_t
44 #define qint64_t int64_t
45 #define quint64_t uint64_t
46#else
47 #define qint8_t signed char //be explicit with this one.
48 #define quint8_t unsigned char
49 #define qint16_t short
50 #define quint16_t unsigned short
51 #define qint32_t int
52 #define quint32_t unsigned qint32_t
53 #if defined(_WIN64)
54 #define qintptr_t __int64
55 #define FTE_WORDSIZE 64
56 #define quintptr_t unsigned qintptr_t
57 #define qint64_t __int64
58 #define quint64_t unsigned __int64
59 #elif defined(_WIN32)
60 #if !defined(_MSC_VER) || _MSC_VER < 1300
61 #define __w64
62 #endif
63 typedef __int32 __w64 qintptr_t; //add __w64 if you need msvc to shut up about unsafe type conversions
64 typedef unsigned __int32 __w64 quintptr_t;
65// #define qintptr_t __int32
66// #define quintptr_t unsigned qintptr_t
67 #define qint64_t __int64
68 #define quint64_t unsigned __int64
69 #define FTE_WORDSIZE 32
70 #else
71 #ifdef __LP64__
72 #define qintptr_t long int
73 #define qint64_t long int
74 #define FTE_WORDSIZE 64
75 #elif __WORDSIZE == 64
76 #define qintptr_t long long
77 #define qint64_t long long
78 #define FTE_WORDSIZE 64
79 #else
80 #define qintptr_t long
81 #define qint64_t long long
82 #define FTE_WORDSIZE 32
83 #endif
84 #define quintptr_t unsigned qintptr_t
85 #define quint64_t unsigned qint64_t
86 #endif
87
88 #ifndef uint32_t
89 #define int8_t qint8_t
90 #define uint8_t quint8_t
91 #define int16_t qint16_t
92 #define uint16_t quint16_t
93 #define int32_t qint32_t
94 #define uint32_t quint32_t
95 #define int64_t qint64_t
96 #define uint64_t quint64_t
97 #define intptr_t qintptr_t
98 #define uintptr_t quintptr_t
99 #endif
100#endif
101
102#ifndef FTE_WORDSIZE
103 #ifdef __WORDSIZE
104 #define FTE_WORDSIZE __WORDSIZE
105 #elif defined(_WIN64)
106 #define FTE_WORDSIZE 64
107 #else
108 #define FTE_WORDSIZE 32
109 #endif
110#endif
111
112#ifdef _MSC_VER
113 #if _MSC_VER >= 1900
114 // MSVC 14 supports these
115 #elif _MSC_VER >= 1310
116 #define strtoull _strtoui64
117 #define strtoll _strtoi64
118 #else
119 #define strtoull strtoul //hopefully this won't cause too many issues
120 #define strtoll strtol //hopefully this won't cause too many issues
121 #define DWORD_PTR DWORD //32bit only
122 #define ULONG_PTR ULONG
123 #endif
124#endif
125
126
127typedef unsigned char qbyte;
128
129// KJB Undefined true and false defined in SciTech's DEBUG.H header
130#undef true
131#undef false
132
133#ifdef __cplusplus
134typedef enum {qfalse, qtrue} qboolean;//false and true are forcivly defined.
135//#define true qtrue
136//#define false qfalse
137#else
138typedef enum {qfalse, qtrue} qboolean;
139#define true qtrue
140#define false qfalse
141#endif
142
143#define STRINGIFY2(s) #s
144#define STRINGIFY(s) STRINGIFY2(s)
145
146#define BASIC_INFO_STRING 196 //regular quakeworld. Sickening isn't it.
147#define EXTENDED_INFO_STRING 1024
148#define MAX_SERVERINFO_STRING 1024 //standard quake has 512 here.
149#define MAX_LOCALINFO_STRING 32768
150
151
152#ifdef HAVE_LEGACY
153#define legacyval(_legval,_newval) _legval
154#else
155#define legacyval(_legval,_newval) _newval
156#endif
157
158#ifdef HAVE_CLIENT
159#define cls_state cls.state
160#else
161#define cls_state 0
162#endif
163
164#ifdef HAVE_SERVER
165#define sv_state sv.state
166#else
167#define sv_state 0
168#endif
169
171{
172 qbyte coordtype; //low 4 bits are the size, upper 4 are disambiguation...
173 #define COORDTYPE_UNDEFINED 0 //invalid
174 #define COORDTYPE_FIXED_13_3 2 //vanilla/etc
175 #define COORDTYPE_FIXED_16_8 3 //rmq
176 #define COORDTYPE_FIXED_28_4 4 //rmq, pointless
177 #define COORDTYPE_FLOAT_32 (4|0x80) //fte/dp/rmq
178 #define COORDTYPE_SIZE_MASK 0xf //coordtype&mask == number of bytes.
181 #define NPQ2_ANG16 (1u<<0)
182 #define NPQ2_SOLID32 (1u<<1)
183 #define NPQ2_R1Q2_UCMD (1u<<2)
184
186};
187//============================================================================
188
189typedef enum {
193 SZ_HUFFMAN //q3 style packets are horrible.
195typedef struct sizebuf_s
196{
197 qboolean allowoverflow; // if false, do a Sys_Error
198 qboolean overflowed; // set to true if the buffer size failed
200 int maxsize; //storage size of data
201 int cursize; //assigned size of data
202 sbpacking_t packing; //required for q3
203 int currentbit; //ignored for rawbytes
204
205 struct netprim_s prim; //for unsized write/read coord/angles
207
208void SZ_Clear (sizebuf_t *buf);
209void *SZ_GetSpace (sizebuf_t *buf, int length);
210void SZ_Write (sizebuf_t *buf, const void *data, int length);
211void SZ_Print (sizebuf_t *buf, const char *data); // strcats onto the sizebuf
212
213//============================================================================
214
215typedef struct link_s
216{
217 struct link_s *prev, *next;
219
220#ifdef USEAREAGRID
221typedef struct
222{
224 void *ed;
226#endif
227
228
229void ClearLink (link_t *l);
230void RemoveLink (link_t *l);
231void InsertLinkBefore (link_t *l, link_t *before);
232void InsertLinkAfter (link_t *l, link_t *after);
233
234// (type *)STRUCT_FROM_LINK(link_t *link, type, member)
235// ent = STRUCT_FROM_LINK(link,entity_t,order)
236// FIXME: remove this mess!
237#define STRUCT_FROM_LINK(l,t,m) ((t *)((qbyte *)l - (qbyte*)&(((t *)0)->m)))
238
239#define FOR_EACH_LINK(l,node) for (l = node.next ; l != &node ; l = l->next)
240//============================================================================
241
242#ifndef NULL
243#define NULL ((void *)0)
244#endif
245
246#define Q_MAXCHAR ((char)0x7f)
247#define Q_MAXSHORT ((short)0x7fff)
248#define Q_MAXINT ((int)0x7fffffff)
249#define Q_MAXLONG ((int)0x7fffffff)
250//#define Q_MAXFLOAT ((int)0x7fffffff)
251
252#define Q_MINCHAR ((char)0x80)
253#define Q_MINSHORT ((short)0x8000)
254#define Q_MININT ((int)0x80000000)
255#define Q_MINLONG ((int)0x80000000)
256//#define Q_MINFLOAT ((int)0x7fffffff)
257
258//============================================================================
259
260#if defined(FTE_LITTLE_ENDIAN)
261 #define bigendian false
262
263 #define LittleShort(x) ((short)(x))
264 #define LittleLong(x) ((int)(x))
265 #define LittleI64(x) ((qint64_t)(x))
266 #define LittleFloat(x) ((float)(x))
267
268 #define BigShort(x) (ShortSwap(x))
269 #define BigLong(x) (LongSwap(x))
270 #define BigI64(x) (I64Swap(x))
271 #define BigFloat(x) (FloatSwap(x))
272#elif defined(FTE_BIG_ENDIAN)
273 #define bigendian true
274
275 #define BigShort(x) ((short)(x))
276 #define BigLong(x) ((int)(x))
277 #define BigI64(x) ((qint64_t)(x))
278 #define BigFloat(x) ((float)(x))
279
280 #define LittleShort(x) (ShortSwap(x))
281 #define LittleLong(x) (LongSwap(x))
282 #define LittleI64(x) (I64Swap(x))
283 #define LittleFloat(x) (FloatSwap(x))
284#else
285 extern qboolean bigendian;
286
287 extern short (*BigShort) (short l);
288 extern short (*LittleShort) (short l);
289 extern int (*BigLong) (int l);
290 extern int (*LittleLong) (int l);
291 extern qint64_t (*BigI64) (qint64_t l);
292 extern qint64_t (*LittleI64) (qint64_t l);
293 extern float (*BigFloat) (float l);
294 extern float (*LittleFloat) (float l);
295#endif
296
297short ShortSwap (short l);
298int LongSwap (int l);
299qint64_t I64Swap (qint64_t l);
300float FloatSwap (float f);
301
302void COM_CharBias (signed char *c, int size);
303void COM_SwapLittleShortBlock (short *s, int size);
304
305//============================================================================
306
307struct usercmd_s;
308
309extern const struct usercmd_s nullcmd;
310
311typedef union { //note: reading from packets can be misaligned
312 char b[4];
313 short b2;
314 int b4;
315 float f;
316} coorddata;
317float MSG_FromCoord(coorddata c, int bytes);
318coorddata MSG_ToCoord(float f, int bytes);
319coorddata MSG_ToAngle(float f, int bytes);
320
321void MSG_BeginWriting (sizebuf_t *msg, struct netprim_s prim, void *bufferstorage, size_t buffersize);
322void MSG_WriteChar (sizebuf_t *sb, int c);
323void MSG_WriteBits (sizebuf_t *msg, int value, int bits);
324void MSG_WriteByte (sizebuf_t *sb, int c);
325void MSG_WriteShort (sizebuf_t *sb, int c);
326void MSG_WriteLong (sizebuf_t *sb, int c);
327void MSG_WriteInt64 (sizebuf_t *sb, qint64_t c);
328void MSG_WriteUInt64 (sizebuf_t *sb, quint64_t c);
329void MSG_WriteULEB128 (sizebuf_t *sb, quint64_t c);
330void MSG_WriteSignedQEX (sizebuf_t *sb, qint64_t c);
331void MSG_WriteEntity (sizebuf_t *sb, unsigned int e);
332void MSG_WriteFloat (sizebuf_t *sb, float f);
333void MSG_WriteDouble (sizebuf_t *sb, double f);
334void MSG_WriteString (sizebuf_t *sb, const char *s);
335void MSG_WriteCoord (sizebuf_t *sb, float f);
336void MSG_WriteBigCoord (sizebuf_t *sb, float f);
337void MSG_WriteAngle (sizebuf_t *sb, float f);
338void MSG_WriteAngle8 (sizebuf_t *sb, float f);
339void MSG_WriteAngle16 (sizebuf_t *sb, float f);
340void MSGFTE_WriteDeltaUsercmd (sizebuf_t *buf, const short baseanges[3], const struct usercmd_s *from, const struct usercmd_s *cmd);
341void MSGQW_WriteDeltaUsercmd (sizebuf_t *sb, const struct usercmd_s *from, const struct usercmd_s *cmd);
342void MSGCL_WriteDeltaUsercmd (sizebuf_t *sb, const struct usercmd_s *from, const struct usercmd_s *cmd);
343void MSG_WriteDir (sizebuf_t *sb, float dir[3]);
344
345extern qboolean msg_badread; // set if a read goes beyond end of message
346extern struct netprim_s msg_nullnetprim;
347
348void MSG_BeginReading (sizebuf_t *sb, struct netprim_s prim);
349void MSG_ChangePrimitives(struct netprim_s prim);
350int MSG_GetReadCount(void);
351int MSG_ReadChar (void);
352int MSG_ReadBits(int bits);
353int MSG_ReadByte (void);
354int MSG_ReadShort (void);
355int MSG_ReadUInt16 (void);
356int MSG_ReadLong (void);
357qint64_t MSG_ReadInt64 (void);
358quint64_t MSG_ReadUInt64 (void);
359qint64_t MSG_ReadSLEB128 (void);
360quint64_t MSG_ReadULEB128 (void);
361qint64_t MSG_ReadSignedQEX (void);
362struct client_s;
363unsigned int MSGSV_ReadEntity (struct client_s *fromclient);
364unsigned int MSGCL_ReadEntity (void);
365unsigned int MSG_ReadBigEntity(void);
366float MSG_ReadFloat (void);
367double MSG_ReadDouble (void);
368char *MSG_ReadStringBuffer (char *out, size_t outsize);
369char *MSG_ReadString (void);
370char *MSG_ReadStringLine (void);
371
372float MSG_ReadCoord (void);
373float MSG_ReadCoordFloat (void);
374void MSG_ReadPos (float pos[3]);
375float MSG_ReadAngle (void);
376float MSG_ReadAngle16 (void);
377void MSGQW_ReadDeltaUsercmd (const struct usercmd_s *from, struct usercmd_s *cmd, int qwprotocolver);
378void MSGFTE_ReadDeltaUsercmd (const struct usercmd_s *from, struct usercmd_s *move);
379void MSGQ2_ReadDeltaUsercmd (const struct usercmd_s *from, struct usercmd_s *move);
380void MSG_ReadData (void *data, int len);
381void MSG_ReadSkip (int len);
382
383
384int MSG_ReadSize16 (sizebuf_t *sb);
385void MSG_WriteSize16 (sizebuf_t *sb, int sz);
386void COM_DecodeSize(int solid, float *mins, float *maxs);
387int COM_EncodeSize(const float *mins, const float *maxs);
388
389//============================================================================
390
391char *Q_strcpyline(char *out, const char *in, int maxlen); //stops at '\n' (and '\r')
392
393void Q_ftoa(char *str, float in);
394char *Q_strlwr(char *str);
395int wildcmp(const char *wild, const char *string); //1 if match
396
397#define Q_memset(d, f, c) memset((d), (f), (c))
398#define Q_memcpy(d, s, c) memcpy((d), (s), (c))
399#define Q_memmove(d, s, c) memmove((d), (s), (c))
400#define Q_memcmp(m1, m2, c) memcmp((m1), (m2), (c))
401#define Q_strcpy(d, s) strcpy((d), (s))
402#define Q_strncpy(d, s, n) strncpy((d), (s), (n))
403#define Q_strlen(s) ((int)strlen(s))
404#define Q_strrchr(s, c) strrchr((s), (c))
405#define Q_strcat(d, s) strcat((d), (s))
406#define Q_strcmp(s1, s2) strcmp((s1), (s2))
407#define Q_strncmp(s1, s2, n) strncmp((s1), (s2), (n))
408
409qboolean VARGS Q_snprintfz (char *dest, size_t size, const char *fmt, ...) LIKEPRINTF(3); //true means truncated (will also warn in debug builds).
410qboolean VARGS Q_vsnprintfz (char *dest, size_t size, const char *fmt, va_list args); //true means truncated (will also warn in debug builds).
411void VARGS Com_sprintf(char *buffer, int size, const char *format, ...) LIKEPRINTF(3);
412
413#define Q_strncpyS(d, s, n) do{const char *____in=(s);char *____out=(d);int ____i; for (____i=0;*(____in); ____i++){if (____i == (n))break;*____out++ = *____in++;}if (____i < (n))*____out='\0';}while(0) //only use this when it should be used. If undiciided, use N
414#define Q_strncpyN(d, s, n) do{if (n < 0)Sys_Error("Bad length in strncpyz");Q_strncpyS((d), (s), (n));((char *)(d))[n] = '\0';}while(0) //this'll stop me doing buffer overflows. (guarenteed to overflow if you tried the wrong size.)
415//#define Q_strncpyNCHECKSIZE(d, s, n) do{if (n < 1)Sys_Error("Bad length in strncpyz");Q_strncpyS((d), (s), (n));((char *)(d))[n-1] = '\0';((char *)(d))[n] = '255';}while(0) //This forces nothing else to be within the buffer. Should be used for testing and nothing else.
416#if 0
417#define Q_strncpyz(d, s, n) Q_strncpyN(d, s, (n)-1)
418#else
419void QDECL Q_strncpyz(char*d, const char*s, int n);
420#define Q_strncatz(dest, src, sizeofdest) \
421 do { \
422 strncat(dest, src, sizeofdest - strlen(dest) - 1); \
423 (dest)[sizeofdest - 1] = 0; \
424 } while (0)
425#define Q_strncatz2(dest, src) Q_strncatz(dest, src, sizeof(dest))
426#endif
427//#define Q_strncpy Please remove all strncpys
428/*#ifndef strncpy
429#define strncpy Q_strncpy
430#endif*/
431
432/*replacement functions which do not care for locale in text formatting ('C' locale), or are non-standard*/
433char *Q_strcasestr(const char *haystack, const char *needle);
434int Q_strncasecmp (const char *s1, const char *s2, int n);
435int Q_strcasecmp (const char *s1, const char *s2);
436int Q_strstopcasecmp(const char *s1start, const char *s1end, const char *s2);
437int Q_atoi (const char *str);
438float Q_atof (const char *str);
439void deleetstring(char *result, const char *leet);
440
441
442//============================================================================
443
444extern char com_token[65536];
445
448
449//these cast away the const for the return value.
450//char *COM_Parse (const char *data);
451#define COM_Parse(d) COM_ParseOut(d,com_token, sizeof(com_token))
452#define COM_ParseOut(d,o,l) COM_ParseType(d,o,l,NULL)
453char *COM_ParseType (const char *data, char *out, size_t outlen, com_tokentype_t *toktype);
454char *COM_ParseStringSet (const char *data, char *out, size_t outlen); //whitespace or semi-colon separators
455char *COM_ParseStringSetSep (const char *data, char sep, char *out, size_t outsize); //single-char-separator, no whitespace
456char *COM_ParseCString (const char *data, char *out, size_t maxoutlen, size_t *writtenlen);
457char *COM_StringParse (const char *data, char *token, unsigned int tokenlen, qboolean expandmacros, qboolean qctokenize); //fancy version used for console etc parsing
458#define COM_ParseToken(data,punct) COM_ParseTokenOut(data, punct, com_token, sizeof(com_token), &com_tokentype)
459char *COM_ParseTokenOut (const char *data, const char *punctuation, char *token, size_t tokenlen, com_tokentype_t *tokentype); //note that line endings are a special type of token.
460qboolean COM_TrimString(char *str, char *buffer, int buffersize); //trims leading+trailing whitespace writing to the specified buffer. returns false on truncation.
461const char *COM_QuotedString(const char *string, char *buf, int buflen, qboolean omitquotes); //inverse of COM_StringParse
462
463
464extern int com_argc;
465extern const char **com_argv;
466
467int COM_CheckParm (const char *parm); //WARNING: Legacy arguments should be listed in CL_ArgumentOverrides!
468int COM_CheckNextParm (const char *parm, int last);
469void COM_AddParm (const char *parm);
470
471void COM_Shutdown (void);
472void COM_Init (void);
473void COM_InitArgv (int argc, const char **argv);
474void COM_ParsePlusSets (qboolean docbuf);
475
476typedef unsigned int conchar_t;
477char *COM_DeFunString(conchar_t *str, conchar_t *stop, char *out, int outsize, qboolean ignoreflags, qboolean forceutf8);
478#define PFS_KEEPMARKUP 1 //leave markup in the final string (but do parse it)
479#define PFS_FORCEUTF8 2 //force utf-8 decoding
480#define PFS_NOMARKUP 4 //strip markup completely
481#ifdef HAVE_LEGACY
482#define PFS_EZQUAKEMARKUP 8 //aim for compat with ezquake instead of q3 compat
483#endif
484#define PFS_CENTERED 16 //flag used by console prints (text should remain centered)
485#define PFS_NONOTIFY 32 //flag used by console prints (text won't be visible other than by looking at the console)
486conchar_t *COM_ParseFunString(conchar_t defaultflags, const char *str, conchar_t *out, int outsize_bytes, int keepmarkup); //ext is usually CON_WHITEMASK, returns its null terminator
487unsigned int utf8_decode(int *error, const void *in, char const**out);
488unsigned int utf8_encode(void *out, unsigned int unicode, int maxlen);
489unsigned int iso88591_encode(char *out, unsigned int unicode, int maxlen, qboolean markup);
490unsigned int qchar_encode(char *out, unsigned int unicode, int maxlen, qboolean markup);
491unsigned int COM_DeQuake(unsigned int unichar);
492
493void COM_BiDi_Shutdown(void);
494
495//small macro to tell COM_ParseFunString (and related functions like con_printf) that the input is a utf-8 string.
496#define U8(s) "^`u8:" s "`="
497
498//handles whatever charset is active, including ^U stuff.
499unsigned int unicode_byteofsfromcharofs(const char *str, unsigned int charofs, qboolean markup);
500unsigned int unicode_charofsfrombyteofs(const char *str, unsigned int byteofs, qboolean markup);
501unsigned int unicode_encode(char *out, unsigned int unicode, int maxlen, qboolean markup);
502unsigned int unicode_decode(int *error, const void *in, char const**out, qboolean markup);
503size_t unicode_strtolower(const char *in, char *out, size_t outsize, qboolean markup);
504size_t unicode_strtoupper(const char *in, char *out, size_t outsize, qboolean markup);
505unsigned int unicode_charcount(const char *in, size_t buffersize, qboolean markup);
506void unicode_strpad(char *out, size_t outsize, const char *in, qboolean leftalign, size_t minwidth, size_t maxwidth, qboolean markup);
507
508char *COM_SkipPath (const char *pathname);
509void QDECL COM_StripExtension (const char *in, char *out, int outlen);
510void COM_StripAllExtensions (const char *in, char *out, int outlen);
511void COM_FileBase (const char *in, char *out, int outlen);
512int QDECL COM_FileSize(const char *path);
513void COM_DefaultExtension (char *path, const char *extension, int maxlen);
514qboolean COM_RequireExtension(char *path, const char *extension, int maxlen);
515char *COM_FileExtension (const char *in, char *result, size_t sizeofresult); //copies the extension, without the dot
516const char *COM_GetFileExtension (const char *in, const char *term); //returns the extension WITH the dot, allowing for scanning backwards.
517void COM_CleanUpPath(char *str);
518
519char *VARGS va(const char *format, ...) LIKEPRINTF(1);
520// does a varargs printf into a temp buffer
521
522//============================================================================
523
524struct cache_user_s;
525
526extern char com_gamepath[MAX_OSPATH];
527extern char com_homepath[MAX_OSPATH];
528//extern char com_configdir[MAX_OSPATH]; //dir to put cfg_save configs in
529//extern char *com_basedir;
530
531//qofs_Make is used to 'construct' a variable of qofs_t type. this is so the code can merge two 32bit ints on old systems and use a long long type internally without generating warnings about bit shifts when qofs_t is only 32bit instead.
532//#if defined(__amd64__) || defined(_AMD64_) || __WORDSIZE == 64
533#if !defined(FTE_TARGET_WEB)
534 #if !defined(_MSC_VER) || _MSC_VER > 1200
535 #define FS_64BIT
536 #endif
537#endif
538#ifdef FS_64BIT
539 //we should probably use off_t here, but then we have fun as to whether its actually 64bit or not, which results in warnings and problems with printf etc.
540 typedef quint64_t qofs_t; //type to use for a file offset
541 #define qofs_Make(low,high) (low | (((qofs_t)(high))<<32))
542 #define qofs_Low(ofs) ((ofs)&0xffffffffu)
543 #define qofs_High(ofs) ((ofs)>>32)
544 #define qofs_Error(ofs) ((ofs) == ~(quint64_t)0u)
545
546 #define PRIxQOFS PRIx64
547 #define PRIuQOFS PRIu64
548#else
549 typedef quint32_t qofs_t; //type to use for a file offset
550 #define qofs_Make(low,high) (low)
551 #define qofs_Low(ofs) (ofs)
552 #define qofs_High(ofs) (0)
553 #define qofs_Error(ofs) ((ofs) == ~0ul)
554
555 #define PRIxQOFS "x"
556 #define PRIuQOFS "u"
557#endif
558#define qofs_ErrorValue() (~(qofs_t)0u)
559
561typedef struct searchpath_s
562{
564
565 unsigned int flags; //SPF_*
566
567 char logicalpath[MAX_OSPATH]; //printable hunam-readable location of the package. generally includes a system path, including nested packages.
568 char purepath[256]; //server tracks the path used to load them so it can tell the client
569 char prefix[MAX_QPATH]; //prefix to add to each file within the archive. may also be ".." to mean ignore the top-level path.
570 int crc_check; //client sorts packs according to this checksum
571 int crc_reply; //client sends a different crc back to the server, for the paks it's actually loaded.
572 int orderkey; //used to check to see if the paths were actually changed or not.
573
577typedef struct flocation_s{
578 struct searchpath_s *search; //used to say which filesystem driver to open the file from
579 void *fhandle; //used by the filesystem driver as a simple reference to the file
580 char rawname[MAX_OSPATH]; //blank means not readable directly
581 qofs_t offset; //only usable if rawname is set.
582 qofs_t len; //uncompressed length
584struct vfsfile_s;
585
586#define FSLF_IFFOUND 0 //
587#define FSLF_DEEPONFAILURE (1u<<0) //upon failure, report that the file is so far into the filesystem as to be irrelevant
588#define FSLF_DEPTH_INEXPLICIT (1u<<1) //depth is incremented for EVERY package, not just system/explicit paths.
589#define FSLF_IGNOREBASEDEPTH (1u<<3) //depth is incremented for explicit mod paths, but not id1/qw/fte/paks/pk3s
590#define FSLF_SECUREONLY (1u<<4) //ignore files from downloaded packages (ie: configs)
591#define FSLF_DONTREFERENCE (1u<<5) //don't add any reference flags to packages
592#define FSLF_IGNOREPURE (1u<<6) //use only the client's package list, ignore any lists obtained from the server (including any reordering)
593#define FSLF_IGNORELINKS (1u<<7) //ignore any pak/pk3 symlinks. system ones may still be followed.
594#define FSLF_QUIET (1u<<8) //don't spam warnings about any dodgy paths.
595
596//if loc is valid, loc->search is always filled in, the others are filled on success.
597//standard return value is 0 on failure, or depth on success.
598int FS_FLocateFile(const char *filename, unsigned int flags, flocation_t *loc);
599struct vfsfile_s *FS_OpenReadLocation(const char *fname, flocation_t *location); //fname used for extension-based filters
600#define WP_REFERENCE 1
601#define WP_FULLPATH 2
602#define WP_FORCE 4
603const char *FS_WhichPackForLocation(flocation_t *loc, unsigned int flags);
606const char *FS_GetPackageDownloadFilename(flocation_t *loc); //returns only packages (or null)
607const char *FS_GetRootPackagePath(flocation_t *loc); //favours packages, but falls back on gamedirs.
608
610char *FS_GetPackHashes(char *buffer, int buffersize, qboolean referencedonly);
611char *FS_GetPackNames(char *buffer, int buffersize, int referencedonly, qboolean ext);
612qboolean FS_GenCachedPakName(const char *pname, const char *crc, char *local, int llen); //returns false if the name is invalid.
613void FS_ReferenceControl(unsigned int refflag, unsigned int resetflags);
614
615#define FDEPTH_MISSING 0x7fffffff
616#define COM_FDepthFile(filename,ignorepacks) FS_FLocateFile(filename,FSLF_DONTREFERENCE|FSLF_DEEPONFAILURE|(ignorepacks?0:FSLF_DEPTH_INEXPLICIT), NULL)
617#define COM_FCheckExists(filename) FS_FLocateFile(filename,FSLF_IFFOUND, NULL)
618
619typedef struct vfsfile_s
620{
621 int (QDECL *ReadBytes) (struct vfsfile_s *file, void *buffer, int bytestoread);
622 int (QDECL *WriteBytes) (struct vfsfile_s *file, const void *buffer, int bytestowrite);
623 qboolean (QDECL *Seek) (struct vfsfile_s *file, qofs_t pos); //returns false for error
624 qofs_t (QDECL *Tell) (struct vfsfile_s *file);
625 qofs_t (QDECL *GetLen) (struct vfsfile_s *file); //could give some lag
626 qboolean (QDECL *Close) (struct vfsfile_s *file); //returns false if there was some error.
627 void (QDECL *Flush) (struct vfsfile_s *file);
628 enum
629 {
631 SS_SLOW, //probably readonly, its fine for an occasional seek, its just really. really. slow.
632 SS_PIPE, //read can be seeked, write appends only.
635
636#ifdef _DEBUG
637 char dbgname[MAX_QPATH];
638#endif
640
641#define VFS_ERROR_TRYLATER 0 //nothing to write/read yet.
642#define VFS_ERROR_UNSPECIFIED -1 //no reason given
643#define VFS_ERROR_NORESPONSE -2 //no reason given
644#define VFS_ERROR_REFUSED -3 //no reason given
645#define VFS_ERROR_EOF -4 //no reason given
646#define VFS_ERROR_DNSFAILURE -5 //weird one, but oh well
647#define VFS_ERROR_WRONGCERT -6 //server gave a certificate with the wrong name
648#define VFS_ERROR_UNTRUSTED -7 //server gave a certificate with the right name, but we don't have a full chain of trust
649
650#define VFS_CLOSE(vf) ((vf)->Close(vf))
651#define VFS_TELL(vf) ((vf)->Tell(vf))
652#define VFS_GETLEN(vf) ((vf)->GetLen(vf))
653#define VFS_SEEK(vf,pos) ((vf)->Seek(vf,pos))
654#define VFS_READ(vf,buffer,buflen) ((vf)->ReadBytes(vf,buffer,buflen))
655#define VFS_WRITE(vf,buffer,buflen) ((vf)->WriteBytes(vf,buffer,buflen))
656#define VFS_FLUSH(vf) do{if((vf)->Flush)(vf)->Flush(vf);}while(0)
657#define VFS_PUTS(vf,s) do{const char *t=s;(vf)->WriteBytes(vf,t,strlen(t));}while(0)
658char *VFS_GETS(vfsfile_t *vf, char *buffer, size_t buflen);
659void VARGS VFS_PRINTF(vfsfile_t *vf, const char *fmt, ...) LIKEPRINTF(2);
660
662 //note that many of theses paths can map to multiple system locations. FS_NativePath can vary somewhat in terms of what it returns, generally favouring writable locations rather then the path that actually contains a file.
663 FS_BINARYPATH, //where the 'exe' is located. we'll check here for dlls too.
664 FS_LIBRARYPATH, //for system dlls and stuff
665 FS_ROOT, //./ (effectively -homedir if enabled, otherwise effectively -basedir arg)
666 FS_SYSTEM, //a system path. absolute paths are explicitly allowed and expected, but not required.
667
668 //after this point, all types must be relative to a gamedir
669 FS_GAME, //standard search (not generally valid for writing/save/rename/delete/etc)
670 FS_GAMEONLY, //$gamedir/
672 FS_PUBGAMEONLY, //$gamedir/ or qw/ but not fte/
673 FS_PUBBASEGAMEONLY //qw/ (fixme: should be the last non-private basedir)
675
676qboolean COM_WriteFile (const char *filename, enum fs_relative fsroot, const void *data, int len);
677
678void FS_FlushFSHashWritten(const char *fname);
679void FS_FlushFSHashRemoved(const char *fname);
680void FS_FlushFSHashFull(void); //too much/unknown changed...
681void FS_CreatePath(const char *pname, enum fs_relative relativeto);
682qboolean FS_Rename(const char *oldf, const char *newf, enum fs_relative relativeto); //0 on success, non-0 on error
683qboolean FS_Rename2(const char *oldf, const char *newf, enum fs_relative oldrelativeto, enum fs_relative newrelativeto);
684qboolean FS_Remove(const char *fname, enum fs_relative relativeto); //0 on success, non-0 on error
685qboolean FS_RemoveTree(searchpathfuncs_t *pathhandle, const char *fname);
686qboolean FS_Copy(const char *source, const char *dest, enum fs_relative relativesource, enum fs_relative relativedest);
687qboolean FS_NativePath(const char *fname, enum fs_relative relativeto, char *out, int outlen); //if you really need to fopen yourself
688qboolean FS_WriteFile (const char *filename, const void *data, int len, enum fs_relative relativeto);
689void *FS_MallocFile(const char *filename, enum fs_relative relativeto, qofs_t *filesize);
690vfsfile_t *QDECL FS_OpenVFS(const char *filename, const char *mode, enum fs_relative relativeto);
692vfsfile_t *FS_OpenTCP(const char *name, int defaultport, qboolean assumetls);
693
694vfsfile_t *FS_OpenWithFriends(const char *fname, char *sysname, size_t sysnamesize, int numfriends, ...);
695
696#define countof(array) (sizeof(array)/sizeof((array)[0]))
697#ifdef _WIN32
698//windows doesn't support utf-8. Which is a shame really, because that's the charset we expect from everything.
699char *narrowen(char *out, size_t outlen, wchar_t *wide);
700wchar_t *widen(wchar_t *out, size_t outbytes, const char *utf8);
701#define __L(x) L ## x
702#define _L(x) __L(x)
703int MyRegGetIntValue(void *base, const char *keyname, const char *valuename, int defaultval);
704qboolean MyRegGetStringValue(void *base, const char *keyname, const char *valuename, void *data, size_t datalen); //data is utf8
705qboolean MyRegGetStringValueMultiSz(void *base, const char *keyname, const char *valuename, void *data, int datalen);
706qboolean MyRegSetValue(void *base, const char *keyname, const char *valuename, int type, const void *data, int datalen); //string values are utf8
707void MyRegDeleteKeyValue(void *base, const char *keyname, const char *valuename);
708#endif
709
710void FS_UnloadPackFiles(void);
711void FS_ReloadPackFiles(void);
712char *FSQ3_GenerateClientPacksList(char *buffer, int maxlen, int basechecksum);
713void FS_PureMode(const char *gamedir, int mode, char *purenamelist, char *purecrclist, char *refnamelist, char *refcrclist, int seed); //implies an fs_restart. ref package names are optional, for q3 where pure names don't contain usable paths
714int FS_PureOkay(void);
715
716//recursively tries to open files until it can get a zip.
718qboolean CL_ListFilesInPackage(searchpathfuncs_t *search, char *name, int (QDECL *func)(const char *fname, qofs_t fsize, time_t mtime, void *parm, searchpathfuncs_t *spath), void *parm, void *recursioninfo);
719
720qbyte *QDECL COM_LoadStackFile (const char *path, void *buffer, int bufsize, size_t *fsize);
721qbyte *COM_LoadTempFile (const char *path, unsigned int locateflags, size_t *fsize);
722qbyte *COM_LoadTempMoreFile (const char *path, size_t *fsize); //allocates a little bit more without freeing old temp
723//qbyte *COM_LoadHunkFile (const char *path);
724
725searchpathfuncs_t *COM_IteratePaths (void **iterator, char *pathbuffer, int pathbuffersize, char *dirname, int dirnamesize);
726void COM_FlushFSCache(qboolean purge, qboolean domutex); //a file was written using fopen
727qboolean FS_Restarted(unsigned int *since);
728
730{
732 mdt_singlepackage, //regular package, versioned.
733 mdt_installation //allowed to install to the root, only downloaded as part of an initial install.
735typedef struct
736{
737 char *filename; //filename the manifest was read from. not necessarily writable... NULL when the manifest is synthesised or from http.
738 enum
739 {
740 MANIFEST_SECURITY_NOT, //don't trust it, don't even allow downloadsurl.
741 MANIFEST_SECURITY_DEFAULT, //the default.fmf file may suggest packages+force sources
742 MANIFEST_SECURITY_INSTALLER //built-in fmf files can 'force' packages+sources
743 } security; //manifest was embedded in the engine. don't assume its already installed, but ask to install it (also, enable some extra permissions for writing dlls)
744
745 enum
746 {
747 MANIFEST_UNSPECIFIED=0,
748 MANIFEST_CURRENTVER
749 } parsever;
750 int minver; //if the engine svn revision is lower than this, the manifest will not be used as an 'upgrade'.
751 int maxver; //if not 0, the manifest will not be used
752 enum
753 {
754 MANIFEST_HOMEDIRWHENREADONLY=0,
757 } homedirtype;
758 char *mainconfig; //eg "fte.cfg", reducing conflicts with other engines, but can be other values...
759 char *updateurl; //url to download an updated manifest file from.
760 qboolean blockupdate; //set to block the updateurl from being used this session. this avoids recursive updates when manifests contain the same update url.
761 char *installation; //optional hardcoded commercial name, used for scanning the registry to find existing installs.
762 char *formalname; //the commercial name of the game. you'll get FULLENGINENAME otherwise.
763#ifdef PACKAGEMANAGER
764 char *downloadsurl; //optional installable files (menu)
765 char *installupd; //which download/updated package to install.
766 qboolean installable; //(expected) available packages give a playable experience, even if just a basic/demo version.
767#endif
768 char *protocolname; //the name used for purposes of dpmaster
769 char *defaultexec; //execed after cvars are reset, to give game-specific engine-defaults.
770 char *defaultoverrides; //execed after default.cfg, to give usable defaults even when the mod the user is running is shit.
771 char *eula; //when running as an installer, the user will be presented with this as a prompt
772 char *basedir; //this is where we expect to find the data.
773 char *iconname; //path we can find the icon (relative to the fmf's location)
774
775 char *schemes; //protocol scheme used to connect to a server running this game, use com_parse.
776 struct
777 {
778 enum
779 {
780 GAMEDIR_DEFAULTFLAGS=0, //forgotten on gamedir switches (and a higher priority)
781 GAMEDIR_BASEGAME=1u<<0, //not forgotten on gamedir switches (and a lower priority)
782 GAMEDIR_PRIVATE=1u<<1, //don't report as the gamedir on networks.
783 GAMEDIR_READONLY=1u<<2, //don't write here...
784 GAMEDIR_USEBASEDIR=1u<<3, //packages will be read from the basedir (and homedir), but not other files. path is an empty string.
785 GAMEDIR_STEAMGAME=1u<<4, //finds the game via steam. must also be private+readonly.
786 GAMEDIR_QSHACK=1u<<8,
787
788 GAMEDIR_SPECIAL=GAMEDIR_USEBASEDIR|GAMEDIR_STEAMGAME, //if one of these flags, then the gamedir cannot be simply concatenated to the basedir/homedir.
790 char *path;
791 } gamepath[8];
792 struct manpack_s //FIXME: this struct should be replaced with packagemanager info instead.
793 {
795 char *path; //the 'pure' name
796 char *prefix;
797 qboolean crcknown; //if the crc was specified
798 unsigned int crc; //the public crc
799 char *mirrors[8]; //a randomized (prioritized-on-load) list of mirrors to use. (may be 'prompt:game,package', 'unzip:file,url', 'xz:url', 'gz:url'
800 char *condition; //only downloaded if this cvar is set | delimited allows multiple cvars.
801 char *sha512; //package must match this hash, if specified
802 char *signature; //signs the hash
804 int mirrornum; //the index we last tried to download from, so we still work even if mirrors are down.
805 } package[64];
807extern ftemanifest_t *fs_manifest; //currently active manifest.
809ftemanifest_t *FS_Manifest_ReadMem(const char *fname, const char *basedir, const char *data);
810ftemanifest_t *FS_Manifest_ReadSystem(const char *fname, const char *basedir);
811void PM_Shutdown(qboolean soft);
812void PM_Command_f(void);
813qboolean PM_CanInstall(const char *packagename);
814
815void COM_InitFilesystem (void); //does not set up any gamedirs.
817void FS_CreateBasedir(const char *path);
818qboolean FS_DirHasAPackage(char *basedir, ftemanifest_t *man);
819qboolean FS_ChangeGame(ftemanifest_t *newgame, qboolean allowreloadconfigs, qboolean allowbasedirchange);
821void FS_Shutdown(void);
823{
824 char *path;
825 char *url;
826 char *subpath; //within the package (for zips)
827};
828void COM_Gamedir (const char *dir, const struct gamepacks *packagespaths);
829qboolean FS_PathURLCache(const char *url, char *path, size_t pathsize); //converts a url to something that can be shoved into a filesystem
830qboolean FS_GamedirIsOkay(const char *path);
831char *FS_GetGamedir(qboolean publicpathonly);
832char *FS_GetManifestArgs(void);
833int FS_GetManifestArgv(char **argv, int maxargs);
834
835struct zonegroup_s;
836void *FS_LoadMallocGroupFile(struct zonegroup_s *ctx, char *path, size_t *fsize, qboolean filters);
837void *FS_LoadMallocFile (const char *path, size_t *fsize);
838qbyte *FS_LoadMallocFileFlags (const char *path, unsigned int locateflags, size_t *fsize);
839qofs_t FS_LoadFile(const char *name, void **file);
840void FS_FreeFile(void *file);
841
842qbyte *COM_LoadFile (const char *path, unsigned int locateflags, int usehunk, size_t *filesize);
843
846void COM_FlushTempoaryPacks(void);
847
848void COM_EnumerateFiles (const char *match, int (QDECL *func)(const char *fname, qofs_t fsize, time_t mtime, void *parm, searchpathfuncs_t *spath), void *parm);
849void COM_EnumerateFilesReverse (const char *match, int (QDECL *func)(const char *fname, qofs_t fsize, time_t mtime, void *parm, searchpathfuncs_t *spath), void *parm);
850searchpathfuncs_t *FS_OpenPackByExtension(vfsfile_t *f, searchpathfuncs_t *parent, const char *filename, const char *pakname, const char *pakpathprefix);
851
852extern qboolean com_installer; //says that the engine is running in an 'installer' mode, and that the correct basedir is not yet known.
853extern struct cvar_s registered;
854extern qboolean standard_quake; //fixme: remove
855
856#ifdef NQPROT
857void COM_Effectinfo_Enumerate(int (*cb)(const char *pname));
858#endif
859
860struct model_s;
861unsigned int COM_RemapMapChecksum(struct model_s *model, unsigned int checksum);
862
863#define MAX_INFO_KEY 256
864char *Info_ValueForKey (const char *s, const char *key);
865void Info_SetValueForKey (char *s, const char *key, const char *value, int maxsize);
866void Info_SetValueForStarKey (char *s, const char *key, const char *value, int maxsize);
867void Info_RemovePrefixedKeys (char *start, char prefix);
868void Info_RemoveKey (char *s, const char *key);
869char *Info_KeyForNumber (const char *s, int num);
870void Info_Print (const char *s, const char *lineprefix);
871void Info_Enumerate (const char *s, void *ctx, void(*cb)(void *ctx, const char *key, const char *value));
872/*
873void Info_RemoveNonStarKeys (char *start);
874void Info_WriteToFile(vfsfile_t *f, char *info, char *commandname, int cvarflags);
875*/
876
877/*
878 Info Buffers
879 Keynames are still length limited, and may not contain nulls, but neither restriction applies to values.
880 Using base64 encoding, we're able to encode problematic chars like quotes and newlines (and nulls).
881 This allows mods to store image files inside userinfo.
882*/
883typedef struct
884{
886 {
887 qbyte partial:1; //partial values read as "".
888 qbyte large:1; //requires partial/encoded transmission
889 char *name;
890 size_t size;
891 size_t buffersize; //to avoid excessive reallocs
892 char *value;
893 } *keys;
894 size_t numkeys;
895 size_t totalsize; //so we can limit userinfo abuse.
896
897 void (*ChangeCB)(void *context, const char *key); //usually calls InfoSync_Add on all the interested parties.
899} infobuf_t;
900typedef struct
901{
902 struct
903 {
904 void *context;
905 char *name;
906 size_t syncpos; //reset to 0 when dirty.
907 } *keys;
908 size_t numkeys;
909} infosync_t;
910void InfoSync_Remove(infosync_t *sync, size_t k);
911void InfoSync_Add(infosync_t *sync, void *context, const char *name);
912void InfoSync_Clear(infosync_t *sync); //wipes all memory etc.
913void InfoSync_Strip(infosync_t *sync, void *context); //Clears away all infos from that context.
914extern const char *basicuserinfos[]; //note: has a leading *
915extern const char *privateuserinfos[]; //key names that are not broadcast from the server
916qboolean InfoBuf_FindKey (infobuf_t *info, const char *key, size_t *idx);
917const char *InfoBuf_KeyForNumber (infobuf_t *info, int num);
918const char *InfoBuf_BlobForKey (infobuf_t *info, const char *key, size_t *blobsize, qboolean *large);
919char *InfoBuf_ReadKey (infobuf_t *info, const char *key, char *outbuf, size_t outsize);
920char *InfoBuf_ValueForKey (infobuf_t *info, const char *key);
921qboolean InfoBuf_RemoveKey (infobuf_t *info, const char *key);
922qboolean InfoBuf_SetKey (infobuf_t *info, const char *key, const char *val); //refuses to set *keys.
923qboolean InfoBuf_SetStarKey (infobuf_t *info, const char *key, const char *val);
924qboolean InfoBuf_SetStarBlobKey (infobuf_t *info, const char *key, const char *val, size_t valsize);
925#define InfoBuf_SetValueForKey InfoBuf_SetKey
926#define InfoBuf_SetValueForStarKey InfoBuf_SetStarKey
927void InfoBuf_Clear(infobuf_t *info, qboolean all);
928void InfoBuf_Clone(infobuf_t *dest, infobuf_t *src);
929void InfoBuf_FromString(infobuf_t *info, const char *infostring, qboolean append);
930char *InfoBuf_DecodeString(const char *instart, const char *inend, size_t *sz);
931qboolean InfoBuf_EncodeString(const char *n, size_t s, char *out, size_t outsize);
932size_t InfoBuf_ToString(infobuf_t *info, char *infostring, size_t maxsize, const char **priority, const char **ignore, const char **exclusive, infosync_t *sync, void *synccontext); //_ and * can be used to indicate ALL such keys.
933qboolean InfoBuf_SyncReceive (infobuf_t *info, const char *key, size_t keysize, const char *val, size_t valsize, size_t offset, qboolean final);
934void InfoBuf_Print(infobuf_t *info, const char *prefix);
935void InfoBuf_WriteToFile(vfsfile_t *f, infobuf_t *info, const char *commandname, int cvarflags);
936void InfoBuf_Enumerate (infobuf_t *info, void *ctx, void(*cb)(void *ctx, const char *key, const char *value));
937
938
939qbyte COM_BlockSequenceCheckByte (qbyte *base, int length, int sequence, unsigned mapchecksum);
942
943size_t Base64_EncodeBlock(const qbyte *in, size_t length, char *out, size_t outsize); //tries to null terminate, but returns length without termination.
944size_t Base64_EncodeBlockURI(const qbyte *in, size_t length, char *out, size_t outsize); //slightly different chars for uri safety. also trims.
945size_t Base64_DecodeBlock(const char *in, const char *in_end, qbyte *out, size_t outsize); // +/ and =
946size_t Base16_EncodeBlock(const char *in, size_t length, qbyte *out, size_t outsize);
947size_t Base16_DecodeBlock(const char *in, qbyte *out, size_t outsize);
948
949#define DIGEST_MAXSIZE (512/8) //largest valid digest size, in bytes
950typedef struct
951{
952 unsigned int digestsize;
953 unsigned int contextsize; //you need to alloca(te) this much memory...
954 void (*init) (void *context);
955 void (*process) (void *context, const void *data, size_t datasize);
956 void (*terminate) (unsigned char *digest, void *context);
957} hashfunc_t;
958extern hashfunc_t hash_md4; //required for vanilla qw mapchecks
959extern hashfunc_t hash_sha1; //required for websockets, and ezquake's crypted rcon
961extern hashfunc_t hash_sha2_256; //required for webrtc
964extern hashfunc_t hash_crc16; //aka ccitt, required for qw's clc_move and various bits of dp compat
966unsigned int hashfunc_terminate_uint(const hashfunc_t *hash, void *context); //terminate, except returning the digest as a uint instead of a blob. folds the digest if longer than 4 bytes.
967unsigned int CalcHashInt(const hashfunc_t *hash, const void *data, size_t datasize);
968size_t CalcHash(const hashfunc_t *hash, unsigned char *digest, size_t maxdigestsize, const unsigned char *data, size_t datasize);
969size_t CalcHMAC(const hashfunc_t *hashfunc, unsigned char *digest, size_t maxdigestsize, const unsigned char *data, size_t datalen, const unsigned char *key, size_t keylen);
970
971int parse_revision_number(const char *revstr, qboolean strict); //returns our 'svn' revision numbers
972int revision_number(qboolean strict); //returns our 'svn' revision numbers
973int version_number(void);
974char *version_string(void);
975
976
977void TL_InitLanguages(const char *langpath); //langpath is where the .po files can be found
978void TL_Shutdown(void);
979void T_FreeStrings(void);
980char *T_GetString(int num);
981void T_FreeInfoStrings(void);
982char *T_GetInfoString(int num);
983
984struct po_s;
985struct po_s *PO_Create(void);
986void PO_Merge(struct po_s *po, vfsfile_t *file);
987const char *PO_GetText(struct po_s *po, const char *msg);
988void PO_Close(struct po_s *po);
989const char *TL_Translate(int language, const char *src); //$foo translations.
990void TL_Reformat(int language, char *out, size_t outsize, size_t numargs, const char **arg); //"{0} died\n" formatting (with $foo translation, on each arg)
991
992//
993// log.c
994//
995typedef enum {
1001void Log_String (logtype_t lognum, const char *s);
1002void Con_Log (const char *s);
1003void Log_Logfile_f (void);
1004void Log_Init(void);
1005void Log_ShutDown(void);
1006#ifdef IPLOG
1007void IPLog_Add(const char *ip, const char *name); //for associating player ip addresses with names.
1008qboolean IPLog_Merge_File(const char *fname);
1009#endif
1011{
1015
1017};
1018qboolean CertLog_ConnectOkay(const char *hostname, void *cert, size_t certsize, unsigned int certlogproblems);
1019
1020#if defined(HAVE_SERVER) && defined(HAVE_CLIENT)
1021qboolean Log_CheckMapCompletion(const char *packagename, const char *mapname, float *besttime, float *fulltime, float *bestkills, float *bestsecrets);
1022void Log_MapNowCompleted(void);
1023#endif
1024
1025
1026/*used by and for botlib and q3 gamecode*/
1027#define MAX_TOKENLENGTH 1024
1028typedef struct pc_token_s
1029{
1030 int type;
1034 char string[MAX_TOKENLENGTH];
1036#define fileHandle_t int
1037#define fsMode_t int
1038
1039
1040typedef struct
1041{
1042 int sec;
1043 int min;
1044 int hour;
1045 int day;
1046 int mon;
1047 int year;
1048 char str[128];
1049} date_t;
1050void COM_TimeOfDay(date_t *date);
1051
1052//json.c
1053typedef struct json_s
1054{
1055 enum
1056 {
1065 const char *bodystart;
1066 const char *bodyend;
1067
1069 struct json_s *child;
1071 union
1072 {
1074 struct json_s **array;
1075 };
1076 size_t arraymax; //note that child+siblings are kinda updated with arrays too, just not orphaned cleanly...
1077 qboolean used; //set to say when something actually read/walked it, so we can flag unsupported things gracefully
1078 char name[1];
1080//main functions
1081json_t *JSON_Parse(const char *json); //simple parsing. returns NULL if there's any kind of parsing error.
1082void JSON_Destroy(json_t *t); //call this on the root once you're done
1083json_t *JSON_FindChild(json_t *t, const char *child); //find a named child in an object (or an array, if you're lazy)
1084json_t *JSON_GetIndexed(json_t *t, unsigned int idx); //find an indexed child in an array (or object, though slower)
1085double JSON_ReadFloat(json_t *t, double fallback); //read a numeric value.
1086size_t JSON_ReadBody(json_t *t, char *out, size_t outsize); //read a string value.
1087//exotic fancy functions
1088json_t *JSON_ParseNode(json_t *t, const char *namestart, const char *nameend, const char *json, int *jsonpos, int jsonlen); //fancy parsing.
1089//helpers
1090json_t *JSON_FindIndexedChild(json_t *t, const char *child, unsigned int idx); //just a helper.
1091qboolean JSON_Equals(json_t *t, const char *child, const char *expected); //compares a bit faster.
1092quintptr_t JSON_GetUInteger(json_t *t, const char *child, unsigned int fallback); //grabs a child node's uint value
1093qintptr_t JSON_GetInteger(json_t *t, const char *child, int fallback); //grabs a child node's int value
1094qintptr_t JSON_GetIndexedInteger(json_t *t, unsigned int idx, int fallback); //grabs an int from an array
1095double JSON_GetFloat(json_t *t, const char *child, double fallback); //grabs a child node's numeric value
1096double JSON_GetIndexedFloat(json_t *t, unsigned int idx, double fallback); //grabs a numeric value from an array
1097const char *JSON_GetString(json_t *t, const char *child, char *buffer, size_t buffersize, const char *fallback); //grabs a child node's string value. do your own damn indexing for an array.
1098//there's no write logic. Its probably easier to just snprintf it or something anyway.
qboolean
Definition: api_menu.h:34
uint64_t qofs_t
Definition: api_menu.h:49
enum @13::coninfomode_e mode
Definition: com_phys_ode.c:695
struct @13::@38 ext
cvar_t model
Definition: cl_main.c:153
cvar_t msg
Definition: cl_main.c:159
int defaultport
Definition: cl_main.c:320
void(QDECL *vgui_frame)(void)
dVector3 result
Definition: com_phys_ode.c:519
int num
Definition: com_phys_ode.c:314
void FS_CloseMapPackFile(searchpathfuncs_t *archive)
Definition: fs.c:3574
com_tokentype_t com_tokentype
Definition: common.c:4481
qint64_t(* BigI64)(qint64_t l)
Definition: common.c:778
vfsfile_t * FS_OpenTCP(const char *name, int defaultport, qboolean assumetls)
Definition: net_wins.c:9858
void MSG_WriteInt64(sizebuf_t *sb, qint64_t c)
Definition: common.c:1110
int MSG_ReadLong(void)
Definition: common.c:2210
qboolean FS_LoadMapPackFile(const char *filename, searchpathfuncs_t *archive)
Definition: fs.c:3561
void Log_String(logtype_t lognum, const char *s)
Definition: log.c:80
void MSG_ReadSkip(int len)
Definition: common.c:2086
unsigned int hashfunc_terminate_uint(const hashfunc_t *hash, void *context)
Definition: sha1.c:188
void InfoSync_Clear(infosync_t *sync)
Definition: common.c:7064
hashfunc_t hash_sha2_512
Definition: sha2.c:558
void COM_DecodeSize(int solid, float *mins, float *maxs)
Definition: common.c:1307
char * COM_FileExtension(const char *in, char *result, size_t sizeofresult)
Definition: common.c:2809
unsigned int utf8_decode(int *error, const void *in, char const **out)
Definition: common.c:3007
void COM_CleanUpPath(char *str)
Definition: common.c:2848
qboolean FS_GamedirIsOkay(const char *path)
Definition: fs.c:878
qboolean FS_PathURLCache(const char *url, char *path, size_t pathsize)
Definition: fs.c:4425
void InfoSync_Strip(infosync_t *sync, void *context)
Definition: common.c:7073
hashfunc_t hash_sha1
Definition: sha1.c:179
qboolean FS_Rename2(const char *oldf, const char *newf, enum fs_relative oldrelativeto, enum fs_relative newrelativeto)
Definition: fs.c:2977
qintptr_t JSON_GetInteger(json_t *t, const char *child, int fallback)
Definition: json.c:623
qboolean com_installer
Definition: fs.c:206
int COM_CheckNextParm(const char *parm, int last)
Definition: common.c:5315
char * FS_GetGamedir(qboolean publicpathonly)
Definition: fs.c:4342
size_t CalcHash(const hashfunc_t *hash, unsigned char *digest, size_t maxdigestsize, const unsigned char *data, size_t datasize)
Definition: sha1.c:204
int MyRegGetIntValue(void *base, const char *keyname, const char *valuename, int defaultval)
Definition: fs_win32.c:78
coorddata MSG_ToAngle(float f, int bytes)
Definition: common.c:1212
const struct usercmd_s nullcmd
Definition: common.c:59
void Info_RemovePrefixedKeys(char *start, char prefix)
Definition: common.c:7930
void SZ_Print(sizebuf_t *buf, const char *data)
Definition: common.c:2686
char * Q_strlwr(char *str)
Definition: common.c:462
void SZ_Clear(sizebuf_t *buf)
Definition: common.c:2655
qboolean MyRegGetStringValueMultiSz(void *base, const char *keyname, const char *valuename, void *data, int datalen)
Definition: fs_win32.c:117
size_t Base64_EncodeBlockURI(const qbyte *in, size_t length, char *out, size_t outsize)
Definition: common.c:6956
void COM_StripAllExtensions(const char *in, char *out, int outlen)
Definition: common.c:2784
void InfoBuf_Clear(infobuf_t *info, qboolean all)
Definition: common.c:7379
qbyte *QDECL COM_LoadStackFile(const char *path, void *buffer, int bufsize, size_t *fsize)
Definition: fs.c:3270
char * COM_DeFunString(conchar_t *str, conchar_t *stop, char *out, int outsize, qboolean ignoreflags, qboolean forceutf8)
Definition: common.c:3545
void COM_FileBase(const char *in, char *out, int outlen)
Definition: common.c:2908
qboolean
Definition: common.h:134
@ qfalse
Definition: common.h:134
@ qtrue
Definition: common.h:134
searchpathfuncs_t * COM_IteratePaths(void **iterator, char *pathbuffer, int pathbuffersize, char *dirname, int dirnamesize)
Definition: fs.c:4303
void MSG_ReadPos(float pos[3])
Definition: common.c:2426
qboolean MyRegSetValue(void *base, const char *keyname, const char *valuename, int type, const void *data, int datalen)
Definition: sys_plugfte.c:626
unsigned int conchar_t
Definition: common.h:476
char * narrowen(char *out, size_t outlen, wchar_t *wide)
Definition: sys_sdl.c:485
int MSG_ReadSize16(sizebuf_t *sb)
Definition: common.c:1276
char * FS_GetPackNames(char *buffer, int buffersize, int referencedonly, qboolean ext)
Definition: fs.c:2359
qbyte * COM_LoadTempMoreFile(const char *path, size_t *fsize)
Definition: fs.c:3264
void MSG_WriteDir(sizebuf_t *sb, float dir[3])
Definition: common.c:2455
void QDECL COM_StripExtension(const char *in, char *out, int outlen)
Definition: common.c:2758
void * FS_LoadMallocFile(const char *path, size_t *fsize)
Definition: fs.c:3224
int Q_atoi(const char *str)
Definition: common.c:586
void MSG_BeginReading(sizebuf_t *sb, struct netprim_s prim)
Definition: common.c:1920
const char * PO_GetText(struct po_s *po, const char *msg)
Definition: translate.c:501
qboolean PM_CanInstall(const char *packagename)
Definition: m_download.c:4588
qboolean msg_badread
Definition: common.c:1916
void PO_Close(struct po_s *po)
Definition: translate.c:488
void Q_ftoa(char *str, float in)
Definition: common.c:529
char * InfoBuf_ValueForKey(infobuf_t *info, const char *key)
Definition: common.c:7161
json_t * JSON_FindIndexedChild(json_t *t, const char *child, unsigned int idx)
Definition: json.c:585
void FS_CreateBasedir(const char *path)
Definition: fs.c:6893
void QDECL Q_strncpyz(char *d, const char *s, int n)
Definition: sys_plugfte.c:91
char com_token[65536]
Definition: common.c:4477
char * COM_SkipPath(const char *pathname)
Definition: sys_plugfte.c:106
int Q_strstopcasecmp(const char *s1start, const char *s1end, const char *s2)
Definition: common.c:402
const char * FS_WhichPackForLocation(flocation_t *loc, unsigned int flags)
Definition: fs.c:2282
qintptr_t JSON_GetIndexedInteger(json_t *t, unsigned int idx, int fallback)
Definition: json.c:647
qboolean FS_Copy(const char *source, const char *dest, enum fs_relative relativesource, enum fs_relative relativedest)
Definition: fs.c:3116
qboolean VARGS Q_snprintfz(char *dest, size_t size, const char *fmt,...) LIKEPRINTF(3)
Definition: sys_plugfte.c:124
char * T_GetInfoString(int num)
Definition: translate.c:281
void PM_Command_f(void)
Definition: m_download.c:4601
void MSG_WriteShort(sizebuf_t *sb, int c)
Definition: common.c:1038
com_tokentype_e
Definition: common.h:446
@ TTP_RAWTOKEN
Definition: common.h:446
@ TTP_LINEENDING
Definition: common.h:446
@ TTP_UNKNOWN
Definition: common.h:446
@ TTP_EOF
Definition: common.h:446
@ TTP_STRING
Definition: common.h:446
@ TTP_PUNCTUATION
Definition: common.h:446
qbyte * FS_LoadMallocFileFlags(const char *path, unsigned int locateflags, size_t *fsize)
Definition: fs.c:3228
void Log_ShutDown(void)
Definition: log.c:1030
const char * InfoBuf_BlobForKey(infobuf_t *info, const char *key, size_t *blobsize, qboolean *large)
Definition: common.c:7169
struct netprim_s msg_nullnetprim
Definition: common.c:1917
void FS_CreatePath(const char *pname, enum fs_relative relativeto)
Definition: iwebiface.c:859
struct flocation_s flocation_t
char com_gamepath[MAX_OSPATH]
Definition: fs.c:453
void InfoBuf_WriteToFile(vfsfile_t *f, infobuf_t *info, const char *commandname, int cvarflags)
Definition: common.c:7697
void InfoBuf_FromString(infobuf_t *info, const char *infostring, qboolean append)
Definition: common.c:7445
int COM_CheckParm(const char *parm)
Definition: common.c:5330
const char * basicuserinfos[]
Definition: common.c:7038
qbyte * COM_LoadFile(const char *path, unsigned int locateflags, int usehunk, size_t *filesize)
Definition: fs.c:3164
qboolean FS_GetLocationForPackageHandle(flocation_t *loc, searchpathfuncs_t *spath, const char *fname)
Definition: fs.c:2269
quint64_t MSG_ReadUInt64(void)
Definition: common.c:2257
short(* LittleShort)(short l)
Definition: common.c:775
void MSG_WriteUInt64(sizebuf_t *sb, quint64_t c)
Definition: common.c:1095
qboolean CL_ListFilesInPackage(searchpathfuncs_t *search, char *name, int(QDECL *func)(const char *fname, qofs_t fsize, time_t mtime, void *parm, searchpathfuncs_t *spath), void *parm, void *recursioninfo)
Definition: fs.c:4771
void FS_FlushFSHashRemoved(const char *fname)
Definition: fs.c:2014
int MSG_ReadBits(int bits)
Definition: common.c:2040
void MSG_WriteSize16(sizebuf_t *sb, int sz)
Definition: common.c:1289
vfsfile_t * CL_OpenFileInPackage(searchpathfuncs_t *search, char *name)
Definition: fs.c:4663
void JSON_Destroy(json_t *t)
Definition: json.c:34
float MSG_ReadCoordFloat(void)
Definition: common.c:2419
void MSG_WriteSignedQEX(sizebuf_t *sb, qint64_t c)
Definition: common.c:1088
size_t Base16_DecodeBlock(const char *in, qbyte *out, size_t outsize)
Definition: common.c:7007
ftemanifest_t * FS_Manifest_ReadSystem(const char *fname, const char *basedir)
Definition: fs.c:1277
const char * JSON_GetString(json_t *t, const char *child, char *buffer, size_t buffersize, const char *fallback)
Definition: json.c:665
void T_FreeInfoStrings(void)
Definition: translate.c:233
void MSGCL_WriteDeltaUsercmd(sizebuf_t *sb, const struct usercmd_s *from, const struct usercmd_s *cmd)
qboolean VARGS Q_vsnprintfz(char *dest, size_t size, const char *fmt, va_list args)
Definition: sys_plugfte.c:119
const char * COM_QuotedString(const char *string, char *buf, int buflen, qboolean omitquotes)
Definition: common.c:5081
void FS_FlushFSHashFull(void)
Definition: fs.c:2018
void unicode_strpad(char *out, size_t outsize, const char *in, qboolean leftalign, size_t minwidth, size_t maxwidth, qboolean markup)
Definition: common.c:3422
void InsertLinkAfter(link_t *l, link_t *after)
Definition: common.c:153
void COM_Gamedir(const char *dir, const struct gamepacks *packagespaths)
Definition: fs.c:4510
const char ** com_argv
Definition: common.c:4479
qboolean FS_DirHasAPackage(char *basedir, ftemanifest_t *man)
Definition: fs.c:5920
char * InfoBuf_DecodeString(const char *instart, const char *inend, size_t *sz)
Definition: common.c:7203
void Info_SetValueForStarKey(char *s, const char *key, const char *value, int maxsize)
Definition: common.c:8016
void MSG_WriteString(sizebuf_t *sb, const char *s)
Definition: common.c:1153
struct vfsfile_s vfsfile_t
unsigned int unicode_byteofsfromcharofs(const char *str, unsigned int charofs, qboolean markup)
Definition: common.c:3393
qboolean bigendian
Definition: common.c:772
conchar_t * COM_ParseFunString(conchar_t defaultflags, const char *str, conchar_t *out, int outsize_bytes, int keepmarkup)
Definition: common.c:3966
unsigned int COM_DeQuake(unsigned int unichar)
Definition: common.c:4443
qboolean FS_WriteFile(const char *filename, const void *data, int len, enum fs_relative relativeto)
Definition: fs.c:3103
unsigned int MSGCL_ReadEntity(void)
Definition: common.c:1385
void COM_InitFilesystem(void)
Definition: fs.c:7998
void FS_ReferenceControl(unsigned int refflag, unsigned int resetflags)
Definition: fs.c:2421
void FS_ReloadPackFiles(void)
Definition: fs.c:5401
certlog_problem_e
Definition: common.h:1011
@ CERTLOG_EXPIRED
Definition: common.h:1013
@ CERTLOG_UNKNOWN
Definition: common.h:1016
@ CERTLOG_MISSINGCA
Definition: common.h:1014
@ CERTLOG_WRONGHOST
Definition: common.h:1012
qboolean FS_ChangeGame(ftemanifest_t *newgame, qboolean allowreloadconfigs, qboolean allowbasedirchange)
Definition: fs.c:6412
void COM_Effectinfo_Enumerate(int(*cb)(const char *pname))
Definition: common.c:6710
char * Info_ValueForKey(const char *s, const char *key)
Definition: common.c:7764
char * COM_ParseType(const char *data, char *out, size_t outlen, com_tokentype_t *toktype)
Definition: common.c:4612
char * FSQ3_GenerateClientPacksList(char *buffer, int maxlen, int basechecksum)
Definition: fs.c:4979
vfsfile_t * FS_OpenWithFriends(const char *fname, char *sysname, size_t sysnamesize, int numfriends,...)
Definition: fs.c:2735
json_t * JSON_GetIndexed(json_t *t, unsigned int idx)
Definition: json.c:552
void COM_AddParm(const char *parm)
Definition: common.c:5532
int com_argc
Definition: common.c:4478
qboolean FS_DownloadingPackage(void)
Definition: fs.c:6269
int QDECL COM_FileSize(const char *path)
Definition: fs.c:1345
qboolean InfoBuf_SyncReceive(infobuf_t *info, const char *key, size_t keysize, const char *val, size_t valsize, size_t offset, qboolean final)
Definition: common.c:7258
coorddata MSG_ToCoord(float f, int bytes)
Definition: common.c:1178
vfsfile_t * FS_OpenTemp(void)
void MSG_WriteLong(sizebuf_t *sb, int c)
Definition: common.c:1052
struct cvar_s registered
Definition: common.c:75
char * Info_KeyForNumber(const char *s, int num)
Definition: common.c:7828
void Log_Init(void)
Definition: log.c:1052
unsigned int qchar_encode(char *out, unsigned int unicode, int maxlen, qboolean markup)
Definition: common.c:3250
char * COM_ParseTokenOut(const char *data, const char *punctuation, char *token, size_t tokenlen, com_tokentype_t *tokentype)
Definition: common.c:4948
int(* LittleLong)(int l)
Definition: common.c:777
qboolean FS_GenCachedPakName(const char *pname, const char *crc, char *local, int llen)
Definition: fs.c:4567
char * COM_ParseStringSet(const char *data, char *out, size_t outlen)
Definition: common.c:4565
void VARGS VFS_PRINTF(vfsfile_t *vf, const char *fmt,...) LIKEPRINTF(2)
Definition: fs.c:350
struct pc_token_s pc_token_t
void MSG_WriteBigCoord(sizebuf_t *sb, float f)
void COM_EnumerateFiles(const char *match, int(QDECL *func)(const char *fname, qofs_t fsize, time_t mtime, void *parm, searchpathfuncs_t *spath), void *parm)
qbyte COM_BlockSequenceCheckByte(qbyte *base, int length, int sequence, unsigned mapchecksum)
Definition: common.c:8247
char * Q_strcasestr(const char *haystack, const char *needle)
Definition: common.c:410
void Log_MapNowCompleted(void)
Definition: log.c:974
qboolean Log_CheckMapCompletion(const char *packagename, const char *mapname, float *besttime, float *fulltime, float *bestkills, float *bestsecrets)
Definition: log.c:951
void IPLog_Add(const char *ip, const char *name)
Definition: log.c:440
char * MSG_ReadString(void)
Definition: common.c:2362
hashfunc_t hash_sha2_256
Definition: sha2.c:526
void * FS_MallocFile(const char *filename, enum fs_relative relativeto, qofs_t *filesize)
Definition: fs.c:3074
void InfoBuf_Enumerate(infobuf_t *info, void *ctx, void(*cb)(void *ctx, const char *key, const char *value))
Definition: common.c:7683
const char * FS_GetPackageDownloadFilename(flocation_t *loc)
Definition: fs.c:2245
unsigned int MSGSV_ReadEntity(struct client_s *fromclient)
Definition: common.c:1368
qboolean MyRegGetStringValue(void *base, const char *keyname, const char *valuename, void *data, size_t datalen)
Definition: sys_plugfte.c:606
char com_homepath[MAX_OSPATH]
Definition: fs.c:454
void InfoSync_Add(infosync_t *sync, void *context, const char *name)
Definition: common.c:7091
void COM_CharBias(signed char *c, int size)
Definition: common.c:845
wchar_t * widen(wchar_t *out, size_t outbytes, const char *utf8)
Definition: sys_sdl.c:449
ftemanifest_t * FS_Manifest_ReadMem(const char *fname, const char *basedir, const char *data)
Definition: fs.c:1218
float(* LittleFloat)(float l)
Definition: common.c:781
qboolean standard_quake
Definition: common.c:112
void Info_Enumerate(const char *s, void *ctx, void(*cb)(void *ctx, const char *key, const char *value))
Definition: common.c:8112
qofs_t FS_LoadFile(const char *name, void **file)
Definition: fs.c:3285
void COM_Init(void)
Definition: common.c:6579
void ClearLink(link_t *l)
Definition: common.c:135
struct link_s link_t
int LongSwap(int l)
Definition: common.c:794
void TL_InitLanguages(const char *langpath)
Definition: translate.c:101
unsigned int unicode_decode(int *error, const void *in, char const **out, qboolean markup)
Definition: common.c:3157
const char * InfoBuf_KeyForNumber(infobuf_t *info, int num)
Definition: common.c:7144
int MSG_ReadByte(void)
Definition: common.c:2140
int FS_PureOkay(void)
Definition: fs.c:4901
float MSG_ReadCoord(void)
Definition: common.c:2404
qboolean FS_Restarted(unsigned int *since)
Definition: fs.c:4168
void MSG_WriteByte(sizebuf_t *sb, int c)
Definition: common.c:1025
void MSG_BeginWriting(sizebuf_t *msg, struct netprim_s prim, void *bufferstorage, size_t buffersize)
Definition: common.c:871
float MSG_FromCoord(coorddata c, int bytes)
Definition: common.c:1161
void MSG_WriteFloat(sizebuf_t *sb, float f)
Definition: common.c:1118
void * FS_LoadMallocGroupFile(struct zonegroup_s *ctx, char *path, size_t *fsize, qboolean filters)
Definition: fs.c:3233
unsigned int unicode_charofsfrombyteofs(const char *str, unsigned int byteofs, qboolean markup)
Definition: common.c:3408
void COM_SwapLittleShortBlock(short *s, int size)
Definition: common.c:829
float MSG_ReadAngle(void)
Definition: common.c:2485
unsigned int MSG_ReadBigEntity(void)
Definition: common.c:1353
void TL_Shutdown(void)
Definition: translate.c:31
char * FS_GetPackHashes(char *buffer, int buffersize, qboolean referencedonly)
Definition: fs.c:2324
hashfunc_t hash_crc16
Definition: crc.c:89
json_t * JSON_ParseNode(json_t *t, const char *namestart, const char *nameend, const char *json, int *jsonpos, int jsonlen)
Definition: json.c:399
float Q_atof(const char *str)
Definition: common.c:645
unsigned int unicode_encode(char *out, unsigned int unicode, int maxlen, qboolean markup)
Definition: common.c:3366
void FS_Manifest_Free(ftemanifest_t *man)
Definition: fs.c:482
fs_relative
Definition: common.h:661
@ FS_PUBGAMEONLY
Definition: common.h:672
@ FS_SYSTEM
Definition: common.h:666
@ FS_LIBRARYPATH
Definition: common.h:664
@ FS_PUBBASEGAMEONLY
Definition: common.h:673
@ FS_GAME
Definition: common.h:669
@ FS_ROOT
Definition: common.h:665
@ FS_BINARYPATH
Definition: common.h:663
@ FS_BASEGAMEONLY
Definition: common.h:671
@ FS_GAMEONLY
Definition: common.h:670
int MSG_GetReadCount(void)
Definition: common.c:1934
unsigned char qbyte
Definition: common.h:127
void VARGS Com_sprintf(char *buffer, int size, const char *format,...) LIKEPRINTF(3)
Definition: common.c:449
qboolean JSON_Equals(json_t *t, const char *child, const char *expected)
Definition: json.c:591
unsigned int utf8_encode(void *out, unsigned int unicode, int maxlen)
Definition: common.c:3200
int version_number(void)
Definition: common.c:8493
hashfunc_t hash_sha2_384
Definition: sha2.c:550
void COM_ParsePlusSets(qboolean docbuf)
Definition: common.c:5344
qint64_t MSG_ReadSignedQEX(void)
Definition: common.c:2249
char * MSG_ReadStringLine(void)
Definition: common.c:2384
qboolean IPLog_Merge_File(const char *fname)
Definition: log.c:391
struct vfsfile_s * FS_OpenReadLocation(const char *fname, flocation_t *location)
Definition: fs.c:2968
char * version_string(void)
Definition: common.c:8504
qboolean InfoBuf_SetStarBlobKey(infobuf_t *info, const char *key, const char *val, size_t valsize)
Definition: common.c:7320
qboolean FS_GameIsInitialised(void)
Definition: fs.c:1395
char * COM_StringParse(const char *data, char *token, unsigned int tokenlen, qboolean expandmacros, qboolean qctokenize)
Definition: common.c:4712
qboolean CertLog_ConnectOkay(const char *hostname, void *cert, size_t certsize, unsigned int certlogproblems)
Definition: log.c:797
qboolean FS_RemoveTree(searchpathfuncs_t *pathhandle, const char *fname)
Definition: fs.c:3044
short ShortSwap(short l)
Definition: common.c:789
struct json_s json_t
ftemanifest_t * fs_manifest
Definition: fs.c:1333
double MSG_ReadDouble(void)
Definition: common.c:2316
char * VFS_GETS(vfsfile_t *vf, char *buffer, size_t buflen)
Definition: fs.c:318
void PO_Merge(struct po_s *po, vfsfile_t *file)
Definition: translate.c:357
void RemoveLink(link_t *l)
Definition: common.c:140
void InfoSync_Remove(infosync_t *sync, size_t k)
Definition: common.c:7058
void MSG_WriteCoord(sizebuf_t *sb, float f)
Definition: common.c:1242
void PM_Shutdown(qboolean soft)
Definition: m_download.c:2184
hashfunc_t hash_sha2_224
Definition: sha2.c:518
qboolean FS_GetPackageDownloadable(const char *package)
Definition: fs.c:2312
void SZ_Write(sizebuf_t *buf, const void *data, int length)
Definition: common.c:2681
int revision_number(qboolean strict)
Definition: common.c:8592
double JSON_ReadFloat(json_t *t, double fallback)
Definition: json.c:176
int(* BigLong)(int l)
Definition: common.c:776
logtype_t
Definition: common.h:995
@ LOG_TYPES
Definition: common.h:999
@ LOG_CONSOLE
Definition: common.h:996
@ LOG_RCON
Definition: common.h:998
@ LOG_PLAYER
Definition: common.h:997
void MSGQW_ReadDeltaUsercmd(const struct usercmd_s *from, struct usercmd_s *cmd, int qwprotocolver)
void COM_FlushFSCache(qboolean purge, qboolean domutex)
Definition: fs.c:4143
int FS_GetManifestArgv(char **argv, int maxargs)
Definition: fs.c:4360
qbyte * COM_LoadTempFile(const char *path, unsigned int locateflags, size_t *fsize)
Definition: fs.c:3260
void Log_Logfile_f(void)
Definition: log.c:268
sbpacking_t
Definition: common.h:189
@ SZ_BAD
Definition: common.h:190
@ SZ_RAWBITS
Definition: common.h:192
@ SZ_RAWBYTES
Definition: common.h:191
@ SZ_HUFFMAN
Definition: common.h:193
float FloatSwap(float f)
Definition: image.c:11
unsigned int CalcHashInt(const hashfunc_t *hash, const void *data, size_t datasize)
Definition: sha1.c:197
void MyRegDeleteKeyValue(void *base, const char *keyname, const char *valuename)
Definition: sys_plugfte.c:636
void * SZ_GetSpace(sizebuf_t *buf, int length)
Definition: common.c:2661
void deleetstring(char *result, const char *leet)
Definition: common.c:727
short(* BigShort)(short l)
Definition: common.c:774
int wildcmp(const char *wild, const char *string)
Definition: common.c:481
void COM_DefaultExtension(char *path, const char *extension, int maxlen)
Definition: common.c:2948
qboolean InfoBuf_SetKey(infobuf_t *info, const char *key, const char *val)
Definition: common.c:7365
void MSGFTE_WriteDeltaUsercmd(sizebuf_t *buf, const short baseanges[3], const struct usercmd_s *from, const struct usercmd_s *cmd)
void COM_FlushTempoaryPacks(void)
Definition: fs.c:3514
const char * FS_GetRootPackagePath(flocation_t *loc)
Definition: fs.c:2216
int MSG_ReadUInt16(void)
Definition: common.c:2186
void COM_TimeOfDay(date_t *date)
Definition: common.c:8602
void FS_PureMode(const char *gamedir, int mode, char *purenamelist, char *purecrclist, char *refnamelist, char *refcrclist, int seed)
Definition: fs.c:4851
void COM_BiDi_Shutdown(void)
Definition: common.c:3812
struct po_s * PO_Create(void)
Definition: translate.c:479
char * InfoBuf_ReadKey(infobuf_t *info, const char *key, char *outbuf, size_t outsize)
Definition: common.c:7150
size_t InfoBuf_ToString(infobuf_t *info, char *infostring, size_t maxsize, const char **priority, const char **ignore, const char **exclusive, infosync_t *sync, void *synccontext)
Definition: common.c:7577
int Q_strcasecmp(const char *s1, const char *s2)
Definition: common.c:394
char * FS_GetManifestArgs(void)
Definition: fs.c:4351
qboolean COM_TrimString(char *str, char *buffer, int buffersize)
Definition: sys_plugfte.c:133
float MSG_ReadAngle16(void)
Definition: common.c:2481
qint64_t MSG_ReadSLEB128(void)
const char * privateuserinfos[]
Definition: common.c:7049
void Con_Log(const char *s)
Definition: log.c:224
float(* BigFloat)(float l)
Definition: common.c:780
qbyte COM_BlockSequenceCRCByte(qbyte *base, int length, int sequence)
Definition: common.c:8292
char * Q_strcpyline(char *out, const char *in, int maxlen)
Definition: iwebiface.c:927
qboolean FS_Remove(const char *fname, enum fs_relative relativeto)
Definition: fs.c:3009
void MSG_WriteBits(sizebuf_t *msg, int value, int bits)
Definition: common.c:974
void MSG_WriteULEB128(sizebuf_t *sb, quint64_t c)
Definition: common.c:1062
void FS_Shutdown(void)
Definition: fs.c:5900
qboolean COM_RequireExtension(char *path, const char *extension, int maxlen)
Definition: common.c:2972
qbyte Q2COM_BlockSequenceCRCByte(qbyte *base, int length, int sequence)
Definition: common.c:8394
void MSG_WriteDouble(sizebuf_t *sb, double f)
Definition: common.c:1132
void InfoBuf_Print(infobuf_t *info, const char *prefix)
Definition: common.c:7663
quintptr_t JSON_GetUInteger(json_t *t, const char *child, unsigned int fallback)
Definition: json.c:599
int parse_revision_number(const char *revstr, qboolean strict)
Definition: common.c:8541
void InfoBuf_Clone(infobuf_t *dest, infobuf_t *src)
Definition: common.c:7424
qint64_t MSG_ReadInt64(void)
Definition: common.c:2272
json_t * JSON_FindChild(json_t *t, const char *child)
Definition: json.c:514
void COM_EnumerateFilesReverse(const char *match, int(QDECL *func)(const char *fname, qofs_t fsize, time_t mtime, void *parm, searchpathfuncs_t *spath), void *parm)
void MSG_WriteChar(sizebuf_t *sb, int c)
Definition: common.c:1012
searchpathfuncs_t * FS_OpenPackByExtension(vfsfile_t *f, searchpathfuncs_t *parent, const char *filename, const char *pakname, const char *pakpathprefix)
Definition: fs.c:3760
qboolean FS_GetLocMTime(flocation_t *location, time_t *modtime)
Definition: fs.c:2959
char * T_GetString(int num)
Definition: translate.c:215
hashfunc_t hash_md4
Definition: md4.c:280
void MSG_ChangePrimitives(struct netprim_s prim)
Definition: common.c:1929
qboolean InfoBuf_SetStarKey(infobuf_t *info, const char *key, const char *val)
Definition: common.c:7374
size_t unicode_strtolower(const char *in, char *out, size_t outsize, qboolean markup)
Definition: common.c:3483
void MSG_ReadData(void *data, int len)
Definition: common.c:2644
intptr_t qintptr_t
Definition: common.h:38
quint64_t qofs_t
Definition: common.h:540
void FS_FreeFile(void *file)
Definition: fs.c:3293
void Info_Print(const char *s, const char *lineprefix)
Definition: common.c:8150
void MSGQ2_ReadDeltaUsercmd(const struct usercmd_s *from, struct usercmd_s *move)
int COM_EncodeSize(const float *mins, const float *maxs)
Definition: common.c:1321
size_t Base64_EncodeBlock(const qbyte *in, size_t length, char *out, size_t outsize)
Definition: common.c:6926
void FS_FlushFSHashWritten(const char *fname)
Definition: fs.c:2010
qboolean FS_NativePath(const char *fname, enum fs_relative relativeto, char *out, int outlen)
Definition: fs.c:2590
int MSG_ReadShort(void)
Definition: common.c:2162
struct searchpath_s searchpath_t
json_t * JSON_Parse(const char *json)
Definition: json.c:499
size_t Base16_EncodeBlock(const char *in, size_t length, qbyte *out, size_t outsize)
Definition: common.c:7017
unsigned int COM_RemapMapChecksum(struct model_s *model, unsigned int checksum)
Definition: common.c:6786
qint64_t(* LittleI64)(qint64_t l)
Definition: common.c:779
qboolean InfoBuf_FindKey(infobuf_t *info, const char *key, size_t *idx)
Definition: common.c:7131
enum com_tokentype_e com_tokentype_t
void MSG_WriteEntity(sizebuf_t *sb, unsigned int e)
Definition: common.c:1340
manifestdeptype_e
Definition: common.h:730
@ mdt_singlepackage
Definition: common.h:732
@ mdt_invalid
Definition: common.h:731
@ mdt_installation
Definition: common.h:733
double JSON_GetIndexedFloat(json_t *t, unsigned int idx, double fallback)
Definition: json.c:659
char * COM_ParseCString(const char *data, char *out, size_t maxoutlen, size_t *writtenlen)
Definition: common.c:5183
void COM_Shutdown(void)
Definition: common.c:6669
qboolean COM_WriteFile(const char *filename, enum fs_relative fsroot, const void *data, int len)
Definition: fs.c:1731
struct sizebuf_s sizebuf_t
void InsertLinkBefore(link_t *l, link_t *before)
Definition: common.c:146
void COM_InitArgv(int argc, const char **argv)
Definition: common.c:5444
void MSG_WriteAngle16(sizebuf_t *sb, float f)
Definition: common.c:1248
qboolean InfoBuf_RemoveKey(infobuf_t *info, const char *key)
Definition: common.c:7184
void FS_UnloadPackFiles(void)
Definition: fs.c:5392
int Q_strncasecmp(const char *s1, const char *s2, int n)
Definition: common.c:360
char * COM_ParseStringSetSep(const char *data, char sep, char *out, size_t outsize)
Definition: common.c:3784
hashfunc_t hash_crc16_lower
Definition: crc.c:107
void T_FreeStrings(void)
Definition: translate.c:167
const char * COM_GetFileExtension(const char *in, const char *term)
Definition: common.c:2832
quint64_t MSG_ReadULEB128(void)
Definition: common.c:2235
size_t unicode_strtoupper(const char *in, char *out, size_t outsize, qboolean markup)
Definition: common.c:3459
size_t JSON_ReadBody(json_t *t, char *out, size_t outsize)
Definition: json.c:257
void MSGQW_WriteDeltaUsercmd(sizebuf_t *sb, const struct usercmd_s *from, const struct usercmd_s *cmd)
qboolean InfoBuf_EncodeString(const char *n, size_t s, char *out, size_t outsize)
Definition: common.c:7550
char *VARGS va(const char *format,...) LIKEPRINTF(1)
Definition: common.c:6687
unsigned int unicode_charcount(const char *in, size_t buffersize, qboolean markup)
Definition: common.c:3377
int FS_FLocateFile(const char *filename, unsigned int flags, flocation_t *loc)
Definition: fs.c:2038
void MSG_WriteAngle8(sizebuf_t *sb, float f)
Definition: common.c:1255
const char * TL_Translate(int language, const char *src)
Definition: translate.c:587
void MSGFTE_ReadDeltaUsercmd(const struct usercmd_s *from, struct usercmd_s *move)
int MSG_ReadChar(void)
Definition: common.c:2118
void Info_RemoveKey(char *s, const char *key)
Definition: common.c:7877
void MSG_WriteAngle(sizebuf_t *sb, float f)
Definition: common.c:1263
float MSG_ReadFloat(void)
Definition: common.c:2281
size_t CalcHMAC(const hashfunc_t *hashfunc, unsigned char *digest, size_t maxdigestsize, const unsigned char *data, size_t datalen, const unsigned char *key, size_t keylen)
Definition: sha1.c:249
uintptr_t quintptr_t
Definition: common.h:39
qboolean FS_Rename(const char *oldf, const char *newf, enum fs_relative relativeto)
Definition: fs.c:2998
void Info_SetValueForKey(char *s, const char *key, const char *value, int maxsize)
Definition: common.c:8101
qint64_t I64Swap(qint64_t l)
Definition: common.c:801
size_t Base64_DecodeBlock(const char *in, const char *in_end, qbyte *out, size_t outsize)
Definition: common.c:6973
vfsfile_t *QDECL FS_OpenVFS(const char *filename, const char *mode, enum fs_relative relativeto)
Definition: fs.c:2809
void TL_Reformat(int language, char *out, size_t outsize, size_t numargs, const char **arg)
Definition: translate.c:619
char * MSG_ReadStringBuffer(char *out, size_t outsize)
Definition: common.c:2344
unsigned int iso88591_encode(char *out, unsigned int unicode, int maxlen, qboolean markup)
Definition: common.c:3309
double JSON_GetFloat(json_t *t, const char *child, double fallback)
Definition: json.c:653
s
Definition: execloop.h:53
const char * extension
Definition: fs.c:251
char filename[64]
Definition: generatebuiltin.c:8
const char * pathname
Definition: gl_font.c:88
void size_t buffersize
Definition: gl_model.c:912
GLfloat t
Definition: gl_vidcommon.c:184
GLsizei bufsize
Definition: gl_vidcommon.c:312
static EGLSurface EGLSurface EGLContext ctx
Definition: gl_videgl.c:47
int error
Definition: gl_vidlinuxglx.c:447
static GLuint GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat s1
Definition: gl_vidnt.c:848
static CONST PIXELFORMATDESCRIPTOR *static int
Definition: gl_vidnt.c:222
GLsizei const GLcharARB const GLint * length
Definition: glquake.h:149
GLenum pname
Definition: glquake.h:151
GLint GLenum type
Definition: glquake.h:157
GLuint GLcharARB * name
Definition: glquake.h:155
GLint size
Definition: glquake.h:157
GLsizei GLboolean const GLfloat * value
Definition: glquake.h:164
GLsizei GLsizei GLcharARB * source
Definition: glquake.h:171
GLenum format
Definition: glsupp.h:502
GLint location
Definition: glsupp.h:612
GLenum GLsizei len
Definition: glsupp.h:502
static png_size_t start
Definition: image.c:1419
unsigned char bits
Definition: image_astc.h:123
keynum_t pos
Definition: in_sdl.c:105
const char * commandname
Definition: log.c:259
char * package
Definition: m_download.c:202
char fname[MAX_QPATH]
Definition: m_mp3.c:160
int base
Definition: menu.c:1054
cvar_t hostname
Definition: sv_main.c:204
particleengine_t * fallback
Definition: p_script.c:75
char ** data
Definition: p_script.c:63
char * token
Definition: pr_bgcmd.c:6016
int b
Definition: pr_lua.c:242
int const char * e
Definition: pr_lua.c:259
int idx
Definition: pr_lua.c:221
int int int int lua_CFunction k
Definition: pr_lua.c:219
evalc_t mins
Definition: pr_menu.c:1354
func_t init
Definition: pr_menu.c:1383
evalc_t maxs
Definition: pr_menu.c:1355
vec3_t offset
Definition: q2m_flash.c:28
const char * file
Definition: qcc_pr_lex.c:2518
int outlen
Definition: qccgui.c:6543
uploadfmt_t fmt
Definition: r_2d.c:48
static ALC_API ALCvoid * buffer
Definition: snd_al.c:259
static AL_API ALsizei n
Definition: snd_al.c:161
static LPCSTR LPCSTR LPVOID parm
Definition: snd_directx.c:1076
static spx_int16_t * in
Definition: snd_dma.c:488
static SpeexBits spx_int16_t * out
Definition: snd_dma.c:492
static char * bytes
Definition: snd_dma.c:479
OggVorbis_File * vf
Definition: snd_ov.c:46
Definition: server.h:463
Definition: cvar.h:59
Definition: common.h:1041
int mon
Definition: common.h:1046
int min
Definition: common.h:1043
int year
Definition: common.h:1047
int day
Definition: common.h:1045
int hour
Definition: common.h:1044
int sec
Definition: common.h:1042
Definition: common.h:577
struct searchpath_s * search
Definition: common.h:578
void * fhandle
Definition: common.h:579
char rawname[MAX_OSPATH]
Definition: common.h:580
qofs_t offset
Definition: common.h:581
qofs_t len
Definition: common.h:582
Definition: common.h:793
unsigned int crc
Definition: common.h:798
char * condition
Definition: common.h:800
qofs_t filesize
Definition: common.h:803
char * signature
Definition: common.h:802
enum manifestdeptype_e type
Definition: common.h:794
char * path
Definition: common.h:795
qboolean crcknown
Definition: common.h:797
int mirrornum
Definition: common.h:804
char * sha512
Definition: common.h:801
char * prefix
Definition: common.h:796
Definition: common.h:736
char * basedir
Definition: common.h:772
char * iconname
Definition: common.h:773
int minver
Definition: common.h:750
char * downloadsurl
Definition: common.h:764
char * formalname
Definition: common.h:762
char * updateurl
Definition: common.h:759
char * installation
Definition: common.h:761
char * defaultoverrides
Definition: common.h:770
char * filename
Definition: common.h:737
char * eula
Definition: common.h:771
int maxver
Definition: common.h:751
char * path
Definition: common.h:790
qboolean installable
Definition: common.h:766
char * defaultexec
Definition: common.h:769
char * protocolname
Definition: common.h:768
char * installupd
Definition: common.h:765
@ MANIFEST_FORCEHOMEDIR
Definition: common.h:756
@ MANIFEST_NOHOMEDIR
Definition: common.h:755
char * schemes
Definition: common.h:775
@ MANIFEST_SECURITY_DEFAULT
Definition: common.h:741
@ MANIFEST_SECURITY_NOT
Definition: common.h:740
qboolean blockupdate
Definition: common.h:760
char * mainconfig
Definition: common.h:758
Definition: common.h:823
char * subpath
Definition: common.h:826
char * path
Definition: common.h:824
char * url
Definition: common.h:825
Definition: common.h:951
unsigned int contextsize
Definition: common.h:953
unsigned int digestsize
Definition: common.h:952
Definition: common.h:886
qbyte partial
Definition: common.h:887
qbyte large
Definition: common.h:888
char * value
Definition: common.h:892
size_t buffersize
Definition: common.h:891
size_t size
Definition: common.h:890
char * name
Definition: common.h:889
Definition: common.h:884
void * ChangeCTX
Definition: common.h:898
size_t totalsize
Definition: common.h:895
size_t numkeys
Definition: common.h:894
Definition: common.h:901
size_t syncpos
Definition: common.h:906
void * context
Definition: common.h:904
size_t numkeys
Definition: common.h:908
char * name
Definition: common.h:905
Definition: common.h:1054
const char * bodyend
Definition: common.h:1066
@ json_type_true
Definition: common.h:1061
@ json_type_null
Definition: common.h:1063
@ json_type_string
Definition: common.h:1057
@ json_type_false
Definition: common.h:1062
@ json_type_array
Definition: common.h:1060
@ json_type_number
Definition: common.h:1058
@ json_type_object
Definition: common.h:1059
qboolean used
Definition: common.h:1077
struct json_s ** array
Definition: common.h:1074
struct json_s ** childlink
Definition: common.h:1073
size_t arraymax
Definition: common.h:1076
enum json_s::@222 type
struct json_s * parent
Definition: common.h:1068
const char * bodystart
Definition: common.h:1065
struct json_s * sibling
Definition: common.h:1070
struct json_s * child
Definition: common.h:1069
Definition: gl_model.h:972
unsigned checksum
Definition: gl_model.h:1116
Definition: common.h:171
qbyte flags
Definition: common.h:180
qbyte pad
Definition: common.h:185
qbyte coordtype
Definition: common.h:172
qbyte anglesize
Definition: common.h:179
Definition: common.h:1029
int type
Definition: common.h:1030
int intvalue
Definition: common.h:1032
int subtype
Definition: common.h:1031
float floatvalue
Definition: common.h:1033
Definition: common.h:562
int orderkey
Definition: common.h:572
char prefix[MAX_QPATH]
Definition: common.h:569
struct searchpath_s * nextpure
Definition: common.h:575
int crc_check
Definition: common.h:570
int crc_reply
Definition: common.h:571
struct searchpath_s * next
Definition: common.h:574
char logicalpath[MAX_OSPATH]
Definition: common.h:567
unsigned int flags
Definition: common.h:565
char purepath[256]
Definition: common.h:568
searchpathfuncs_t * handle
Definition: common.h:563
Definition: fs.h:34
Definition: common.h:196
int currentbit
Definition: common.h:203
struct netprim_s prim
Definition: common.h:205
qbyte * data
Definition: common.h:199
qboolean allowoverflow
Definition: common.h:197
int cursize
Definition: common.h:201
qboolean overflowed
Definition: common.h:198
int maxsize
Definition: common.h:200
sbpacking_t packing
Definition: common.h:202
Definition: protocol.h:1285
Definition: common.h:620
qofs_t(QDECL *GetLen)(struct vfsfile_s *file)
qofs_t pos
Definition: common.h:623
void int bytestoread
Definition: common.h:621
const void * buffer
Definition: common.h:622
int(QDECL *ReadBytes)(struct vfsfile_s *file
qboolean(QDECL *Close)(struct vfsfile_s *file)
qboolean(QDECL *Seek)(struct vfsfile_s *file
const void int bytestowrite
Definition: common.h:622
@ SS_UNSEEKABLE
Definition: common.h:633
@ SS_SEEKABLE
Definition: common.h:630
@ SS_PIPE
Definition: common.h:632
@ SS_SLOW
Definition: common.h:631
char dbgname[MAX_QPATH]
Definition: common.h:637
void(QDECL *Flush)(struct vfsfile_s *file)
void * buffer
Definition: common.h:621
enum vfsfile_s::@208 seekstyle
qofs_t(QDECL *Tell)(struct vfsfile_s *file)
Definition: zone.h:130
unsigned int sequence
Definition: sv_mvd.c:72
static unsigned char const char * from
Definition: sv_sql.c:31
static enum mysql_option option const char * arg
Definition: sv_sql.c:28
static char ** argv
Definition: sv_sql.c:11
unsigned int datalen
Definition: sv_user.c:2880
unsigned int *restrict outbuf
Definition: sw_spans.h:24
unsigned char buf[KBRINGSIZE]
Definition: sys_dos.c:27
void * vfsfile_t
Definition: sys_plugfte.h:2
cvar_t language
Definition: translate.c:24
Definition: common.h:311
int b4
Definition: common.h:314
short b2
Definition: common.h:313
float f
Definition: common.h:315
unsigned int flags
Definition: valid.c:313
const char * hash
Definition: valid.c:315