Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 334528 Details for
Bug 450360
Ebuild games-fps/sauerbraten-2013.01.04.ebuild
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
sauerbraten-2013.01.04-master.patch
sauerbraten-2013.01.04-master.patch (text/plain), 9.35 KB, created by
Julian Ospald
on 2013-01-05 14:45:37 UTC
(
hide
)
Description:
sauerbraten-2013.01.04-master.patch
Filename:
MIME Type:
Creator:
Julian Ospald
Created:
2013-01-05 14:45:37 UTC
Size:
9.35 KB
patch
obsolete
>http://sourceforge.net/p/sauerbraten/code/4699/ > >--- a/src/shared/iengine.h >+++ b/src/shared/iengine.h >@@ -415,23 +415,6 @@ > extern int getservermtu(); > extern int getnumclients(); > extern uint getclientip(int n); >-extern void putint(ucharbuf &p, int n); >-extern void putint(packetbuf &p, int n); >-extern void putint(vector<uchar> &p, int n); >-extern int getint(ucharbuf &p); >-extern void putuint(ucharbuf &p, int n); >-extern void putuint(packetbuf &p, int n); >-extern void putuint(vector<uchar> &p, int n); >-extern int getuint(ucharbuf &p); >-extern void putfloat(ucharbuf &p, float f); >-extern void putfloat(packetbuf &p, float f); >-extern void putfloat(vector<uchar> &p, float f); >-extern float getfloat(ucharbuf &p); >-extern void sendstring(const char *t, ucharbuf &p); >-extern void sendstring(const char *t, packetbuf &p); >-extern void sendstring(const char *t, vector<uchar> &p); >-extern void getstring(char *t, ucharbuf &p, int len = MAXTRANS); >-extern void filtertext(char *dst, const char *src, bool whitespace = true, int len = sizeof(string)-1); > extern void localconnect(); > extern const char *disconnectreason(int reason); > extern void disconnect_client(int n, int reason); >--- a/src/engine/server.cpp >+++ b/src/engine/server.cpp >@@ -99,125 +99,6 @@ > va_end(args); > } > #endif >- >-// all network traffic is in 32bit ints, which are then compressed using the following simple scheme (assumes that most values are small). >- >-template<class T> >-static inline void putint_(T &p, int n) >-{ >- if(n<128 && n>-127) p.put(n); >- else if(n<0x8000 && n>=-0x8000) { p.put(0x80); p.put(n); p.put(n>>8); } >- else { p.put(0x81); p.put(n); p.put(n>>8); p.put(n>>16); p.put(n>>24); } >-} >-void putint(ucharbuf &p, int n) { putint_(p, n); } >-void putint(packetbuf &p, int n) { putint_(p, n); } >-void putint(vector<uchar> &p, int n) { putint_(p, n); } >- >-int getint(ucharbuf &p) >-{ >- int c = (char)p.get(); >- if(c==-128) { int n = p.get(); n |= char(p.get())<<8; return n; } >- else if(c==-127) { int n = p.get(); n |= p.get()<<8; n |= p.get()<<16; return n|(p.get()<<24); } >- else return c; >-} >- >-// much smaller encoding for unsigned integers up to 28 bits, but can handle signed >-template<class T> >-static inline void putuint_(T &p, int n) >-{ >- if(n < 0 || n >= (1<<21)) >- { >- p.put(0x80 | (n & 0x7F)); >- p.put(0x80 | ((n >> 7) & 0x7F)); >- p.put(0x80 | ((n >> 14) & 0x7F)); >- p.put(n >> 21); >- } >- else if(n < (1<<7)) p.put(n); >- else if(n < (1<<14)) >- { >- p.put(0x80 | (n & 0x7F)); >- p.put(n >> 7); >- } >- else >- { >- p.put(0x80 | (n & 0x7F)); >- p.put(0x80 | ((n >> 7) & 0x7F)); >- p.put(n >> 14); >- } >-} >-void putuint(ucharbuf &p, int n) { putuint_(p, n); } >-void putuint(packetbuf &p, int n) { putuint_(p, n); } >-void putuint(vector<uchar> &p, int n) { putuint_(p, n); } >- >-int getuint(ucharbuf &p) >-{ >- int n = p.get(); >- if(n & 0x80) >- { >- n += (p.get() << 7) - 0x80; >- if(n & (1<<14)) n += (p.get() << 14) - (1<<14); >- if(n & (1<<21)) n += (p.get() << 21) - (1<<21); >- if(n & (1<<28)) n |= -1<<28; >- } >- return n; >-} >- >-template<class T> >-static inline void putfloat_(T &p, float f) >-{ >- lilswap(&f, 1); >- p.put((uchar *)&f, sizeof(float)); >-} >-void putfloat(ucharbuf &p, float f) { putfloat_(p, f); } >-void putfloat(packetbuf &p, float f) { putfloat_(p, f); } >-void putfloat(vector<uchar> &p, float f) { putfloat_(p, f); } >- >-float getfloat(ucharbuf &p) >-{ >- float f; >- p.get((uchar *)&f, sizeof(float)); >- return lilswap(f); >-} >- >-template<class T> >-static inline void sendstring_(const char *t, T &p) >-{ >- while(*t) putint(p, *t++); >- putint(p, 0); >-} >-void sendstring(const char *t, ucharbuf &p) { sendstring_(t, p); } >-void sendstring(const char *t, packetbuf &p) { sendstring_(t, p); } >-void sendstring(const char *t, vector<uchar> &p) { sendstring_(t, p); } >- >-void getstring(char *text, ucharbuf &p, int len) >-{ >- char *t = text; >- do >- { >- if(t>=&text[len]) { text[len-1] = 0; return; } >- if(!p.remaining()) { *t = 0; return; } >- *t = getint(p); >- } >- while(*t++); >-} >- >-void filtertext(char *dst, const char *src, bool whitespace, int len) >-{ >- for(int c = uchar(*src); c; c = uchar(*++src)) >- { >- if(c == '\f') >- { >- if(!*++src) break; >- continue; >- } >- if(iscubeprint(c) || (iscubespace(c) && whitespace)) >- { >- *dst++ = c; >- if(!--len) break; >- } >- } >- *dst = '\0'; >-} > > enum { ST_EMPTY, ST_LOCAL, ST_TCPIP }; > >--- a/src/shared/tools.h >+++ b/src/shared/tools.h >@@ -1178,5 +1178,24 @@ > extern uint randomMT(); > extern int guessnumcpus(); > >-#endif >- >+extern void putint(ucharbuf &p, int n); >+extern void putint(packetbuf &p, int n); >+extern void putint(vector<uchar> &p, int n); >+extern int getint(ucharbuf &p); >+extern void putuint(ucharbuf &p, int n); >+extern void putuint(packetbuf &p, int n); >+extern void putuint(vector<uchar> &p, int n); >+extern int getuint(ucharbuf &p); >+extern void putfloat(ucharbuf &p, float f); >+extern void putfloat(packetbuf &p, float f); >+extern void putfloat(vector<uchar> &p, float f); >+extern float getfloat(ucharbuf &p); >+extern void sendstring(const char *t, ucharbuf &p); >+extern void sendstring(const char *t, packetbuf &p); >+extern void sendstring(const char *t, vector<uchar> &p); >+extern void getstring(char *t, ucharbuf &p, int len); >+template<class T, size_t N> static inline void getstring(T (&t)[N], ucharbuf &p) { getstring(t, p, N); } >+extern void filtertext(char *dst, const char *src, bool whitespace = true, int len = sizeof(string)-1); >+ >+#endif >+ >--- a/src/engine/master.cpp >+++ b/src/engine/master.cpp >@@ -514,7 +514,7 @@ > authreq &a = c.authreqs.add(); > a.reqtime = servtime; > a.id = id; >- uint seed[3] = { starttime, servtime, randomMT() }; >+ uint seed[3] = { uint(starttime), servtime, randomMT() }; > static vector<char> buf; > buf.setsize(0); > a.answer = genchallenge(u->pubkey, seed, sizeof(seed), buf); >--- a/src/shared/tools.cpp >+++ b/src/shared/tools.cpp >@@ -53,3 +53,124 @@ > return y; > } > >+///////////////////////// network /////////////////////// >+ >+// all network traffic is in 32bit ints, which are then compressed using the following simple scheme (assumes that most values are small). >+ >+template<class T> >+static inline void putint_(T &p, int n) >+{ >+ if(n<128 && n>-127) p.put(n); >+ else if(n<0x8000 && n>=-0x8000) { p.put(0x80); p.put(n); p.put(n>>8); } >+ else { p.put(0x81); p.put(n); p.put(n>>8); p.put(n>>16); p.put(n>>24); } >+} >+void putint(ucharbuf &p, int n) { putint_(p, n); } >+void putint(packetbuf &p, int n) { putint_(p, n); } >+void putint(vector<uchar> &p, int n) { putint_(p, n); } >+ >+int getint(ucharbuf &p) >+{ >+ int c = (char)p.get(); >+ if(c==-128) { int n = p.get(); n |= char(p.get())<<8; return n; } >+ else if(c==-127) { int n = p.get(); n |= p.get()<<8; n |= p.get()<<16; return n|(p.get()<<24); } >+ else return c; >+} >+ >+// much smaller encoding for unsigned integers up to 28 bits, but can handle signed >+template<class T> >+static inline void putuint_(T &p, int n) >+{ >+ if(n < 0 || n >= (1<<21)) >+ { >+ p.put(0x80 | (n & 0x7F)); >+ p.put(0x80 | ((n >> 7) & 0x7F)); >+ p.put(0x80 | ((n >> 14) & 0x7F)); >+ p.put(n >> 21); >+ } >+ else if(n < (1<<7)) p.put(n); >+ else if(n < (1<<14)) >+ { >+ p.put(0x80 | (n & 0x7F)); >+ p.put(n >> 7); >+ } >+ else >+ { >+ p.put(0x80 | (n & 0x7F)); >+ p.put(0x80 | ((n >> 7) & 0x7F)); >+ p.put(n >> 14); >+ } >+} >+void putuint(ucharbuf &p, int n) { putuint_(p, n); } >+void putuint(packetbuf &p, int n) { putuint_(p, n); } >+void putuint(vector<uchar> &p, int n) { putuint_(p, n); } >+ >+int getuint(ucharbuf &p) >+{ >+ int n = p.get(); >+ if(n & 0x80) >+ { >+ n += (p.get() << 7) - 0x80; >+ if(n & (1<<14)) n += (p.get() << 14) - (1<<14); >+ if(n & (1<<21)) n += (p.get() << 21) - (1<<21); >+ if(n & (1<<28)) n |= -1<<28; >+ } >+ return n; >+} >+ >+template<class T> >+static inline void putfloat_(T &p, float f) >+{ >+ lilswap(&f, 1); >+ p.put((uchar *)&f, sizeof(float)); >+} >+void putfloat(ucharbuf &p, float f) { putfloat_(p, f); } >+void putfloat(packetbuf &p, float f) { putfloat_(p, f); } >+void putfloat(vector<uchar> &p, float f) { putfloat_(p, f); } >+ >+float getfloat(ucharbuf &p) >+{ >+ float f; >+ p.get((uchar *)&f, sizeof(float)); >+ return lilswap(f); >+} >+ >+template<class T> >+static inline void sendstring_(const char *t, T &p) >+{ >+ while(*t) putint(p, *t++); >+ putint(p, 0); >+} >+void sendstring(const char *t, ucharbuf &p) { sendstring_(t, p); } >+void sendstring(const char *t, packetbuf &p) { sendstring_(t, p); } >+void sendstring(const char *t, vector<uchar> &p) { sendstring_(t, p); } >+ >+void getstring(char *text, ucharbuf &p, int len) >+{ >+ char *t = text; >+ do >+ { >+ if(t>=&text[len]) { text[len-1] = 0; return; } >+ if(!p.remaining()) { *t = 0; return; } >+ *t = getint(p); >+ } >+ while(*t++); >+} >+ >+void filtertext(char *dst, const char *src, bool whitespace, int len) >+{ >+ for(int c = uchar(*src); c; c = uchar(*++src)) >+ { >+ if(c == '\f') >+ { >+ if(!*++src) break; >+ continue; >+ } >+ if(iscubeprint(c) || (iscubespace(c) && whitespace)) >+ { >+ *dst++ = c; >+ if(!--len) break; >+ } >+ } >+ *dst = '\0'; >+} >+
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 450360
:
334496
|
334498
|
334522
|
334524
|
334526
| 334528