diff options
author | Andrey Nazarov <skuller@skuller.net> | 2008-10-11 15:05:50 +0000 |
---|---|---|
committer | Andrey Nazarov <skuller@skuller.net> | 2008-10-11 15:05:50 +0000 |
commit | d02633af4e780c4b6f6d938c67d84d2c968adb79 (patch) | |
tree | 3379b9615e285346ad6b1f87639912e01ecd44c7 /source/q_shared.c | |
parent | f8abe42a0d1a42653b39f6cf320d3fbdd1279bb3 (diff) |
Major redesign of GTV protocol: added support for persistent GTV connections,
bidirectional pinging, low traffic (`suspended') modes.
HTTP server is now gone (remote console logging is temporary gone too),
custom binary protocol is used for GTV connections now.
MVD client no longer serves other MVD clients, only regular spectators.
Changed FIFO buffers to be regular circular buffers, not BIP-buffers.
Removed `sv_http_*', `sv_console_auth' variables.
Added `sv_mvd_maxclients' variable, `addgtvhost', `delgtvhost' and
`listgtvhosts' commands.
Renamed `sv_mvd_max*' cvars for consistency.
Reset `sv_ghostime' default value back to 6, but changed semantics:
it now waits for any packet from client, not just `begin' packet.
Added `--disable-mvd-server' and `--disable-mvd-client' options to
configure script.
FS_Restart() no longer chokes on real files opened for reading.
Fixed client chat prompt length.
Stubbed out more debugging stuff from dedicated server builds.
Diffstat (limited to 'source/q_shared.c')
-rw-r--r-- | source/q_shared.c | 197 |
1 files changed, 0 insertions, 197 deletions
diff --git a/source/q_shared.c b/source/q_shared.c index 3d50803..dce4a17 100644 --- a/source/q_shared.c +++ b/source/q_shared.c @@ -1038,203 +1038,6 @@ size_t Q_UnescapeString( char *out, const char *in, size_t bufsize, escape_t fla } #endif -int Q_EscapeMarkup( char *out, const char *in, int bufsize ) { - char *p, *m, *s; - int c; - size_t l; - - if( bufsize < 1 ) { - Com_Error( ERR_FATAL, "%s: bad bufsize: %d", __func__, bufsize ); - } - - p = out; - m = out + bufsize - 1; - while( *in && p < m ) { - c = *in++; - c &= 0x7f; - - switch( c ) { - case '<': s = "<"; break; - case '>': s = ">"; break; - case '&': s = "&"; break; - case '"': s = """; break; - case 0x7f: - continue; - default: - if( c < 0x20 ) { - continue; - } - case '\t': - case '\r': - case '\n': - *p++ = c; - continue; - } - - l = strlen( s ); - if( p + l > m ) { - break; - } - - memcpy( p, s, l ); - p += l; - } - - *p = 0; - - return p - out; -} - -int Q_EscapeURI( char *out, const char *in, int bufsize ) { - char *p, *m; - int c; - - if( bufsize < 1 ) { - Com_Error( ERR_FATAL, "%s: bad bufsize: %d", __func__, bufsize ); - } - - p = out; - m = out + bufsize - 1; - while( *in && p < m ) { - c = *in++; - c &= 0x7f; - - if( Q_isalnum( c ) || c == '-' || c == '_' || c == '.' || - c == '!' || c == '~' || c == '*' || c == '(' || c == ')' ) - { - *p++ = c; - continue; - } - - if( p + 3 > m ) { - break; - } - p[0] = '%'; - p[1] = hexchars[c >> 4]; - p[2] = hexchars[c & 15]; - p += 3; - } - - *p = 0; - - return p - out; -} - -#define B64( c ) ( Q_isupper( c ) ? ( (c) - 'A' ) : \ - Q_islower( c ) ? ( (c) - 'a' + 26 ) : \ - Q_isdigit( c ) ? ( (c) - '0' + 52 ) : \ - (c) == '+' ? 62 : (c) == '/' ? 63 : -1 ) - -int Q_Decode64( char *out, const char *in, int bufsize ) { - char *p, *m; - int c1, c2; - - if( bufsize < 1 ) { - Com_Error( ERR_FATAL, "%s: bad bufsize: %d", __func__, bufsize ); - } - - p = out; - m = out + bufsize - 1; - while( *in ) { - c1 = B64( in[0] ); - c2 = B64( in[1] ); - if( c1 == -1 || c2 == -1 ) { - return -1; - } - if( p < m ) { - *p++ = ( c1 << 2 ) | ( c2 >> 4 ); - } - - if( in[2] == 0 ) { - return -1; - } - if( in[2] == '=' ) { - if( in[3] != '=' ) { - return -1; - } - break; - } - c1 = B64( in[2] ); - if( c1 == -1 ) { - return -1; - } - if( p < m ) { - *p++ = ( c1 >> 2 ) | ( ( c2 << 4 ) & 0xF0 ); - } - - if( in[3] == '=' ) { - if( in[4] != 0 ) { - return -1; - } - break; - } - c2 = B64( in[3] ); - if( c2 == -1 ) { - return -1; - } - if( p < m ) { - *p++ = c2 | ( ( c1 << 6 ) & 0xC0 ); - } - - in += 4; - } - - *p = 0; - - return p - out; -} - -#undef B64 - - -#define B64( c ) ( (c) < 26 ? ( (c) + 'A' ) : \ - (c) < 52 ? ( (c) + 'a' - 26 ) : \ - (c) < 62 ? ( (c) + '0' - 52 ) : \ - (c) == 62 ? '+' : (c) == 63 ? '/' : -1 ) - -int Q_Encode64( char *out, const char *in, int bufsize ) { - char *p, *m; - int c1, c2; - - if( bufsize < 1 ) { - Com_Error( ERR_FATAL, "%s: bad bufsize: %d", __func__, bufsize ); - } - - p = out; - m = out + bufsize - 1; - while( *in && p + 4 < m ) { - c1 = in[0]; - c2 = in[1]; - p[0] = B64( c1 >> 2 ); - p[1] = B64( ( ( c1 << 4 ) & 0x30 ) | ( c2 >> 4 ) ); - if( c2 ) { - c1 = in[2]; - p[2] = B64( ( c1 >> 6 ) | ( ( c2 << 2 ) & 0x3C ) ); - if( c1 ) { - p[3] = B64( c1 & 0x3F ); - } else { - p[3] = '='; - p += 4; - break; - } - } else { - p[2] = '='; - p[3] = '='; - p += 4; - break; - } - p += 4; - in += 3; - } - - *p = 0; - - return p - out; -} - -#undef B64 - - /* ================ Com_LocalTime |