X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=common.h;h=200e432b0ac8fdc425ea0690af00423f2a45bef9;hb=b8664b6856e2aecb83c08717ffbc7ae20dde9630;hp=ff088a790546d420c6205236329cfcfec2ef7873;hpb=b60133483aa561097865246a9f94b1e51798ce10;p=xonotic%2Fdarkplaces.git diff --git a/common.h b/common.h index ff088a79..200e432b 100644 --- a/common.h +++ b/common.h @@ -180,10 +180,14 @@ int MSG_ReadBigLong (sizebuf_t *sb); float MSG_ReadLittleFloat (sizebuf_t *sb); float MSG_ReadBigFloat (sizebuf_t *sb); char *MSG_ReadString (sizebuf_t *sb, char *string, size_t maxstring); -int MSG_ReadBytes (sizebuf_t *sb, int numbytes, unsigned char *out); +/// Same as MSG_ReadString except it returns the number of bytes written to *string excluding the \0 terminator. +size_t MSG_ReadString_len (sizebuf_t *sb, char *string, size_t maxstring); +size_t MSG_ReadBytes (sizebuf_t *sb, size_t numbytes, unsigned char *out); #define MSG_ReadChar(sb) ((sb)->readcount >= (sb)->cursize ? ((sb)->badread = true, -1) : (signed char)(sb)->data[(sb)->readcount++]) #define MSG_ReadByte(sb) ((sb)->readcount >= (sb)->cursize ? ((sb)->badread = true, -1) : (unsigned char)(sb)->data[(sb)->readcount++]) +/// Same as MSG_ReadByte but with no need to copy twice (first to `int` to check for -1) so each byte can be copied directly to a string[] +#define MSG_ReadByte_opt(sb) ((sb)->readcount >= (sb)->cursize ? ((sb)->badread = true, '\0') : (unsigned char)(sb)->data[(sb)->readcount++]) #define MSG_ReadShort MSG_ReadLittleShort #define MSG_ReadLong MSG_ReadLittleLong #define MSG_ReadFloat MSG_ReadLittleFloat @@ -205,11 +209,11 @@ typedef int (*COM_LineProcessorFunc) (void *passthrough, const char *line, size_ int COM_Wordwrap(const char *string, size_t length, float continuationSize, float maxWidth, COM_WordWidthFunc_t wordWidth, void *passthroughCW, COM_LineProcessorFunc processLine, void *passthroughPL); extern char com_token[MAX_INPUTLINE]; - -int COM_ParseToken_Simple(const char **datapointer, qbool returnnewline, qbool parsebackslash, qbool parsecomments); -int COM_ParseToken_QuakeC(const char **datapointer, qbool returnnewline); -int COM_ParseToken_VM_Tokenize(const char **datapointer, qbool returnnewline); -int COM_ParseToken_Console(const char **datapointer); +extern unsigned com_token_len; +qbool COM_ParseToken_Simple(const char **datapointer, qbool returnnewline, qbool parsebackslash, qbool parsecomments); +qbool COM_ParseToken_QuakeC(const char **datapointer, qbool returnnewline); +qbool COM_ParseToken_VM_Tokenize(const char **datapointer, qbool returnnewline); +qbool COM_ParseToken_Console(const char **datapointer); void COM_Init (void); void COM_Shutdown (void); @@ -277,16 +281,15 @@ typedef enum userdirmode_e } userdirmode_t; -void COM_ToLowerString (const char *in, char *out, size_t size_out); -void COM_ToUpperString (const char *in, char *out, size_t size_out); +/// Returns the number of bytes written to *out excluding the \0 terminator. +size_t COM_ToLowerString(const char *in, char *out, size_t size_out); +/// Returns the number of bytes written to *out excluding the \0 terminator. +size_t COM_ToUpperString(const char *in, char *out, size_t size_out); int COM_StringBeginsWith(const char *s, const char *match); - int COM_ReadAndTokenizeLine(const char **text, char **argv, int maxargc, char *tokenbuf, int tokenbufsize, const char *commentprefix); - size_t COM_StringLengthNoColors(const char *s, size_t size_s, qbool *valid); -qbool COM_StringDecolorize(const char *in, size_t size_in, char *out, size_t size_out, qbool escape_carets); -void COM_ToLowerString (const char *in, char *out, size_t size_out); -void COM_ToUpperString (const char *in, char *out, size_t size_out); +size_t COM_StringDecolorize(const char *in, size_t size_in, char *out, size_t size_out, qbool escape_carets); + #define dp_strlcpy(dst, src, dsize) dp__strlcpy(dst, src, dsize, __func__, __LINE__) @@ -294,7 +297,7 @@ void COM_ToUpperString (const char *in, char *out, size_t size_out); size_t dp__strlcpy(char *dst, const char *src, size_t dsize, const char *func, unsigned line); size_t dp__strlcat(char *dst, const char *src, size_t dsize, const char *func, unsigned line); char *dp_stpecpy(char *dst, char *end, const char *src); -char *dp_ustr2stp(char *dst, size_t dsize, const char *src, size_t ssize); +char *dp_ustr2stp(char *dst, size_t dsize, const char *src, size_t slen); void FindFraction(double val, int *num, int *denom, int denomMax);