Index: engine/3dgui.cpp
===================================================================
RCS file: /cvsroot/sauerbraten/sauerbraten/src/engine/3dgui.cpp,v
retrieving revision 1.104
diff -r1.104 3dgui.cpp
342c342
<     char *field(char *name, int color, int length, char *initval)
---
>     char *field(const char *name, int color, int length, const char *initval)
Index: engine/client.cpp
===================================================================
RCS file: /cvsroot/sauerbraten/sauerbraten/src/engine/client.cpp,v
retrieving revision 1.38
diff -r1.38 client.cpp
170c170
< void neterr(char *s)
---
> void neterr(const char *s)
220c220
<             extern char *disc_reasons[];
---
>             extern const char *disc_reasons[];
Index: engine/command.cpp
===================================================================
RCS file: /cvsroot/sauerbraten/sauerbraten/src/engine/command.cpp,v
retrieving revision 1.109
diff -r1.109 command.cpp
10c10
< typedef hashtable<char *, ident> identtable;
---
> typedef hashtable<const char *, ident> identtable;
100c100
< void aliasa(char *name, char *action)
---
> void aliasa(const char *name, char *action)
105,106c105
<         name = newstring(name);
<         ident b(ID_ALIAS, name, action, persistidents);
---
>         ident b(ID_ALIAS, newstring(name), action, persistidents);
108c107
<         idents->access(name, &b);
---
>         idents->access(b._name, &b);
128c127
< void alias(char *name, char *action) { aliasa(name, newstring(action)); }
---
> void alias(const char *name, const char *action) { aliasa(name, newstring(action)); }
134c133
< int variable(char *name, int min, int cur, int max, int *storage, void (*fun)(), bool persist)
---
> int variable(const char *name, int min, int cur, int max, int *storage, void (*fun)(), bool persist)
145c144
< void setvar(char *name, int i, bool dofunc) 
---
> void setvar(const char *name, int i, bool dofunc) 
151c150
< int getvar(char *name) 
---
> int getvar(const char *name) 
156c155
< int getvarmin(char *name) 
---
> int getvarmin(const char *name) 
161c160
< int getvarmax(char *name) 
---
> int getvarmax(const char *name) 
166,167c165,166
< bool identexists(char *name) { return idents->access(name)!=NULL; }
< ident *getident(char *name) { return idents->access(name); }
---
> bool identexists(const char *name) { return idents->access(name)!=NULL; }
> ident *getident(const char *name) { return idents->access(name); }
169c168
< const char *getalias(char *name)
---
> const char *getalias(const char *name)
175c174
< bool addcommand(char *name, void (*fun)(), char *narg)
---
> bool addcommand(const char *name, void (*fun)(), const char *narg)
183c182
< void addident(char *name, ident *id)
---
> void addident(const char *name, ident *id)
192c191
< char *parseexp(char *&p, int right);
---
> char *parseexp(const char *&p, int right);
194c193
< void parsemacro(char *&p, int level, vector<char> &wordbuf)
---
> void parsemacro(const char *&p, int level, vector<char> &wordbuf)
213,218c212,216
<     char *ident = p;
<     while(isalnum(*p) || *p=='_') p++;
<     int c = *p;
<     *p = 0;
<     const char *alias = getalias(ident);
<     *p = c;
---
>     static vector<char> ident;
>     ident.setsizenodelete(0);
>     while(isalnum(*p) || *p=='_') ident.add(*p++);
>     ident.add(0);
>     const char *alias = getalias(ident.getbuf());
222c220
< char *parseexp(char *&p, int right)          // parse any nested set of () or []
---
> char *parseexp(const char *&p, int right)          // parse any nested set of () or []
239c237
<             char *end = p+strcspn(p, "\"\r\n\0");
---
>             const char *end = p+strcspn(p, "\"\r\n\0");
292c290
< char *parseword(char *&p)                       // parse single argument, including expressions
---
> char *parseword(const char *&p)                       // parse single argument, including expressions
303c301
<         char *word = p;
---
>         const char *word = p;
311c309
<     char *word = p;
---
>     const char *word = p;
347c345
< char *executeret(char *p)               // all evaluation happens here, recursively
---
> char *executeret(const char *p)               // all evaluation happens here, recursively
358c356
<             w[i] = "";
---
>             w[i] = (char *)"";
402c400
<                     for(char *a = id->_narg; *a; a++) switch(*a)
---
>                     for(const char *a = id->_narg; *a; a++) switch(*a)
499c497
< int execute(char *p)
---
> int execute(const char *p)
507c505
< bool execfile(char *cfgfile)
---
> bool execfile(const char *cfgfile)
518c516
< void exec(char *cfgfile)
---
> void exec(const char *cfgfile)
Index: engine/console.cpp
===================================================================
RCS file: /cvsroot/sauerbraten/sauerbraten/src/engine/console.cpp,v
retrieving revision 1.59
diff -r1.59 console.cpp
223,224c223
<     if(!init) init = "";
<     s_strcpy(commandbuf, init);
---
>     s_strcpy(commandbuf, init ? init : "");
596c595
<     char *nextcomplete = NULL;
---
>     const char *nextcomplete = NULL;
Index: engine/engine.h
===================================================================
RCS file: /cvsroot/sauerbraten/sauerbraten/src/engine/engine.h,v
retrieving revision 1.233
diff -r1.233 engine.h
294c294
< extern int connectwithtimeout(ENetSocket sock, char *hostname, ENetAddress &address);
---
> extern int connectwithtimeout(ENetSocket sock, const char *hostname, ENetAddress &address);
Index: engine/main.cpp
===================================================================
RCS file: /cvsroot/sauerbraten/sauerbraten/src/engine/main.cpp,v
retrieving revision 1.195
diff -r1.195 main.cpp
31c31
< void fatal(char *s, char *o)    // failure exit
---
> void fatal(const char *s, ...)    // failure exit
34,35c34,35
<     s_sprintfd(msg)("%s%s\n", s, o);
<     printf(msg);
---
>     s_sprintfdlv(msg,s,s);
>     printf("%s\n", msg);
441c441
< static bool findarg(int argc, char **argv, char *str)
---
> static bool findarg(int argc, char **argv, const char *str)
Index: engine/menus.cpp
===================================================================
RCS file: /cvsroot/sauerbraten/sauerbraten/src/engine/menus.cpp,v
retrieving revision 1.85
diff -r1.85 menus.cpp
186c186
<     char *initval = "";
---
>     const char *initval = "";
Index: engine/renderparticles.cpp
===================================================================
RCS file: /cvsroot/sauerbraten/sauerbraten/src/engine/renderparticles.cpp,v
retrieving revision 1.174
diff -r1.174 renderparticles.cpp
534c534
<         char *text;         // will call delete[] on this only if it starts with an @
---
>         const char *text;         // will call delete[] on this only if it starts with an @
1018c1018
<                         char *text = p->text+(p->text[0]=='@');
---
>                         const char *text = p->text+(p->text[0]=='@');
1220c1220
< void particle_text(const vec &s, char *t, int type, int fade)
---
> void particle_text(const vec &s, const char *t, int type, int fade)
Index: engine/rendersky.cpp
===================================================================
RCS file: /cvsroot/sauerbraten/sauerbraten/src/engine/rendersky.cpp,v
retrieving revision 1.12
diff -r1.12 rendersky.cpp
13c13
<     static char *side[] = { "ft", "bk", "lf", "rt", "dn", "up" };
---
>     static const char *side[] = { "ft", "bk", "lf", "rt", "dn", "up" };
Index: engine/rendertext.cpp
===================================================================
RCS file: /cvsroot/sauerbraten/sauerbraten/src/engine/rendertext.cpp,v
retrieving revision 1.51
diff -r1.51 rendertext.cpp
4c4
< static hashtable<char *, font> fonts;
---
> static hashtable<const char *, font> fonts;
45c45
< bool setfont(char *name)
---
> bool setfont(const char *name)
Index: engine/server.cpp
===================================================================
RCS file: /cvsroot/sauerbraten/sauerbraten/src/engine/server.cpp,v
retrieving revision 1.84
diff -r1.84 server.cpp
11c11,18
< void fatal(char *s, char *o) { void cleanupserver(); cleanupserver(); printf("servererror: %s\n", s); exit(EXIT_FAILURE); }
---
> void fatal(const char *s, ...) 
> { 
>     void cleanupserver(); 
>     cleanupserver(); 
>     s_sprintfdlv(msg,s,s);
>     printf("servererror: %s\n", msg); 
>     exit(EXIT_FAILURE); 
> }
21c28
< hashtable<char *, igame *> *gamereg = NULL;
---
> hashtable<const char *, igame *> *gamereg = NULL;
25c32
< void registergame(char *name, igame *ig)
---
> void registergame(const char *name, igame *ig)
27c34
<     if(!gamereg) gamereg = new hashtable<char *, igame *>;
---
>     if(!gamereg) gamereg = new hashtable<const char *, igame *>;
31c38
< void initgame(char *game)
---
> void initgame(const char *game)
294c301
< char *disc_reasons[] = { "normal", "end of packet", "client num", "kicked/banned", "tag type", "ip is banned", "server is in private mode", "server FULL (maxclients)" };
---
> const char *disc_reasons[] = { "normal", "end of packet", "client num", "kicked/banned", "tag type", "ip is banned", "server is in private mode", "server FULL (maxclients)" };
378c385
< int connectwithtimeout(ENetSocket sock, char *hostname, ENetAddress &remoteaddress)
---
> int connectwithtimeout(ENetSocket sock, const char *hostname, ENetAddress &remoteaddress)
386c393
< ENetSocket httpgetsend(ENetAddress &remoteaddress, char *hostname, char *req, char *ref, char *agent, ENetAddress *localaddress = NULL)
---
> ENetSocket httpgetsend(ENetAddress &remoteaddress, const char *hostname, const char *req, const char *ref, const char *agent, ENetAddress *localaddress = NULL)
515,516c522,523
< char *ip = "", *master = NULL;
< char *game = "fps";
---
> const char *ip = "", *master = NULL;
> const char *game = "fps";
643c650
<     char *mid = strstr(master, "/");
---
>     const char *mid = strstr(master, "/");
Index: engine/serverbrowser.cpp
===================================================================
RCS file: /cvsroot/sauerbraten/sauerbraten/src/engine/serverbrowser.cpp,v
retrieving revision 1.54
diff -r1.54 serverbrowser.cpp
232c232
< int connectwithtimeout(ENetSocket sock, char *hostname, ENetAddress &address)
---
> int connectwithtimeout(ENetSocket sock, const char *hostname, ENetAddress &address)
Index: engine/shader.cpp
===================================================================
RCS file: /cvsroot/sauerbraten/sauerbraten/src/engine/shader.cpp,v
retrieving revision 1.74
diff -r1.74 shader.cpp
38c38
< static bool compileasmshader(GLenum type, GLuint &idx, char *def, char *tname, char *name, bool msg = true, bool nativeonly = false)
---
> static bool compileasmshader(GLenum type, GLuint &idx, const char *def, const char *tname, const char *name, bool msg = true, bool nativeonly = false)
66c66
< static void showglslinfo(GLhandleARB obj, char *tname, char *name)
---
> static void showglslinfo(GLhandleARB obj, const char *tname, const char *name)
80c80
< static void compileglslshader(GLenum type, GLhandleARB &obj, char *def, char *tname, char *name, bool msg = true) 
---
> static void compileglslshader(GLenum type, GLhandleARB &obj, const char *def, const char *tname, const char *name, bool msg = true) 
262c262
< void setenvparamf(char *name, int type, int index, float x, float y, float z, float w)
---
> void setenvparamf(const char *name, int type, int index, float x, float y, float z, float w)
278c278
< void setenvparamfv(char *name, int type, int index, const float *v)
---
> void setenvparamfv(const char *name, int type, int index, const float *v)
312c312
< void setlocalparamf(char *name, int type, int index, float x, float y, float z, float w)
---
> void setlocalparamf(const char *name, int type, int index, float x, float y, float z, float w)
318c318
< void setlocalparamfv(char *name, int type, int index, const float *v)
---
> void setlocalparamfv(const char *name, int type, int index, const float *v)
857c857
< ShaderParam *findshaderparam(Slot &s, char *name, int type, int index)
---
> ShaderParam *findshaderparam(Slot &s, const char *name, int type, int index)
Index: engine/sound.cpp
===================================================================
RCS file: /cvsroot/sauerbraten/sauerbraten/src/engine/sound.cpp,v
retrieving revision 1.51
diff -r1.51 sound.cpp
166c166
< hashtable<char *, sample> samples;
---
> hashtable<const char *, sample> samples;
169c169
< int findsound(char *name, int vol, vector<soundslot> &sounds)
---
> int findsound(const char *name, int vol, vector<soundslot> &sounds)
178c178
< int addsound(char *name, int vol, int maxuses, vector<soundslot> &sounds)
---
> int addsound(const char *name, int vol, int maxuses, vector<soundslot> &sounds)
381c381
< void playsoundname(char *s, const vec *loc, int vol) 
---
> void playsoundname(const char *s, const vec *loc, int vol) 
Index: engine/texture.h
===================================================================
RCS file: /cvsroot/sauerbraten/sauerbraten/src/engine/texture.h,v
retrieving revision 1.33
diff -r1.33 texture.h
36c36
<     char *name;
---
>     const char *name;
57c57
<     char *name;
---
>     const char *name;
207,208c207,208
< extern void setenvparamf(char *name, int type, int index, float x = 0, float y = 0, float z = 0, float w = 0);
< extern void setenvparamfv(char *name, int type, int index, const float *v);
---
> extern void setenvparamf(const char *name, int type, int index, float x = 0, float y = 0, float z = 0, float w = 0);
> extern void setenvparamfv(const char *name, int type, int index, const float *v);
210,211c210,211
< extern void setlocalparamf(char *name, int type, int index, float x = 0, float y = 0, float z = 0, float w = 0);
< extern void setlocalparamfv(char *name, int type, int index, const float *v);
---
> extern void setlocalparamf(const char *name, int type, int index, float x = 0, float y = 0, float z = 0, float w = 0);
> extern void setlocalparamfv(const char *name, int type, int index, const float *v);
213c213
< extern ShaderParam *findshaderparam(Slot &s, char *name, int type, int index);
---
> extern ShaderParam *findshaderparam(Slot &s, const char *name, int type, int index);
Index: fpsgame/client.h
===================================================================
RCS file: /cvsroot/sauerbraten/sauerbraten/src/fpsgame/client.h,v
retrieving revision 1.180
diff -r1.180 client.h
683c683
<                 char *name = cl.et.itemname(i);
---
>                 const char *name = cl.et.itemname(i);
Index: fpsgame/entities.h
===================================================================
RCS file: /cvsroot/sauerbraten/sauerbraten/src/fpsgame/entities.h,v
retrieving revision 1.106
diff -r1.106 entities.h
14c14
<     char *itemname(int i)
---
>     const char *itemname(int i)
21c21
<     char *entmdlname(int type)
---
>     const char *entmdlname(int type)
23c23
<         static char *entmdlnames[] =
---
>         static const char *entmdlnames[] =
42c42
<             char *mdl = entmdlname(i);
---
>             const char *mdl = entmdlname(i);
50c50
<         char *mdlname = entmdlname(type);
---
>         const char *mdlname = entmdlname(type);
Index: fpsgame/fps.cpp
===================================================================
RCS file: /cvsroot/sauerbraten/sauerbraten/src/fpsgame/fps.cpp,v
retrieving revision 1.211
diff -r1.211 fps.cpp
574c574
<     char *colorname(fpsent *d, char *name = NULL, char *prefix = "")
---
>     char *colorname(fpsent *d, char *name = NULL, const char *prefix = "")
789,794c789,794
<     char *gameident() { return "fps"; }
<     char *defaultmap() { return "metl4"; }
<     char *savedconfig() { return "config.cfg"; }
<     char *defaultconfig() { return "data/defaults.cfg"; }
<     char *autoexec() { return "autoexec.cfg"; }
<     char *savedservers() { return "servers.cfg"; }
---
>     const char *gameident() { return "fps"; }
>     const char *defaultmap() { return "metl4"; }
>     const char *savedconfig() { return "config.cfg"; }
>     const char *defaultconfig() { return "data/defaults.cfg"; }
>     const char *autoexec() { return "autoexec.cfg"; }
>     const char *savedservers() { return "servers.cfg"; }
Index: fpsgame/fpsserver.h
===================================================================
RCS file: /cvsroot/sauerbraten/sauerbraten/src/fpsgame/fpsserver.h,v
retrieving revision 1.233
diff -r1.233 fpsserver.h
1900c1900
<     char *servername() { return "sauerbratenserver"; }
---
>     const char *servername() { return "sauerbratenserver"; }
1903c1903
<     char *getdefaultmaster() { return "sauerbraten.org/masterserver/"; } 
---
>     const char *getdefaultmaster() { return "sauerbraten.org/masterserver/"; } 
Index: fpsgame/game.h
===================================================================
RCS file: /cvsroot/sauerbraten/sauerbraten/src/fpsgame/game.h,v
retrieving revision 1.97
diff -r1.97 game.h
156c156
< static struct itemstat { int add, max, sound; char *name; int info; } itemstats[] =
---
> static struct itemstat { int add, max, sound; const char *name; int info; } itemstats[] =
Index: fpsgame/monster.h
===================================================================
RCS file: /cvsroot/sauerbraten/sauerbraten/src/fpsgame/monster.h,v
retrieving revision 1.61
diff -r1.61 monster.h
16c16
<         char *name, *mdlname, *vwepname;
---
>         const char *name, *mdlname, *vwepname;
Index: rpggame/rpg.cpp
===================================================================
RCS file: /cvsroot/sauerbraten/sauerbraten/src/rpggame/rpg.cpp,v
retrieving revision 1.62
diff -r1.62 rpg.cpp
186,190c186,190
<     char *gameident()     { return "rpg"; }
<     char *defaultmap()    { return "rpg_01"; }
<     char *savedconfig()   { return "rpg_config.cfg"; }
<     char *defaultconfig() { return "data/defaults.cfg"; }
<     char *autoexec()      { return "rpg_autoexec.cfg"; }
---
>     const char *gameident()     { return "rpg"; }
>     const char *defaultmap()    { return "rpg_01"; }
>     const char *savedconfig()   { return "rpg_config.cfg"; }
>     const char *defaultconfig() { return "data/defaults.cfg"; }
>     const char *autoexec()      { return "rpg_autoexec.cfg"; }
Index: rpggame/rpgobj.h
===================================================================
RCS file: /cvsroot/sauerbraten/sauerbraten/src/rpggame/rpgobj.h,v
retrieving revision 1.47
diff -r1.47 rpgobj.h
6,7c6,7
<     char *npc;
<     char *questline;
---
>     const char *npc;
>     const char *questline;
10c10
<     rpgquest(rpgquest *_n, char *_npc, char *_ql) : next(_n), npc(_npc), questline(_ql), completed(false) {}
---
>     rpgquest(rpgquest *_n, const char *_npc, const char *_ql) : next(_n), npc(_npc), questline(_ql), completed(false) {}
43,44c43,44
<     char *name;         // name it was spawned as
<     char *model;        // what to display it as
---
>     const char *name;   // name it was spawned as
>     const char *model;  // what to display it as
72c72
<     rpgobj(char *_name, rpgobjset &_os) : parent(NULL), inventory(NULL), sibling(NULL), ent(NULL), name(_name), model(NULL), itemflags(IF_INVENTORY),
---
>     rpgobj(const char *_name, rpgobjset &_os) : parent(NULL), inventory(NULL), sibling(NULL), ent(NULL), name(_name), model(NULL), itemflags(IF_INVENTORY),
Index: rpggame/rpgobjset.h
===================================================================
RCS file: /cvsroot/sauerbraten/sauerbraten/src/rpggame/rpgobjset.h,v
retrieving revision 1.35
diff -r1.35 rpgobjset.h
143c143
<     void addquest(rpgaction *a, char *questline, char *npc)
---
>     void addquest(rpgaction *a, const char *questline, const char *npc)
Index: rpggame/stubs.h
===================================================================
RCS file: /cvsroot/sauerbraten/sauerbraten/src/rpggame/stubs.h,v
retrieving revision 1.11
diff -r1.11 stubs.h
26c26
<     char *servername() { return "foo"; }
---
>     const char *servername() { return "foo"; }
36c36
<     char *getdefaultmaster() { return "localhost"; }
---
>     const char *getdefaultmaster() { return "localhost"; }
Index: shared/command.h
===================================================================
RCS file: /cvsroot/sauerbraten/sauerbraten/src/shared/command.h,v
retrieving revision 1.27
diff -r1.27 command.h
17c17
<     char *_name;
---
>     const char *_name;
27c27
<         char *_narg;     // ID_COMMAND, ID_CCOMMAND
---
>         const char *_narg;     // ID_COMMAND, ID_CCOMMAND
41c41
<     ident(int t, char *n, int m, int c, int x, int *s, void *f = NULL, bool p = false)
---
>     ident(int t, const char *n, int m, int c, int x, int *s, void *f = NULL, bool p = false)
44c44
<     ident(int t, char *n, char *a, bool p)
---
>     ident(int t, const char *n, char *a, bool p)
47c47
<     ident(int t, char *n, char *narg, void *f = NULL, void *_s = NULL)
---
>     ident(int t, const char *n, const char *narg, void *f = NULL, void *_s = NULL)
59c59
< extern void addident(char *name, ident *id);
---
> extern void addident(const char *name, ident *id);
Index: shared/iengine.h
===================================================================
RCS file: /cvsroot/sauerbraten/sauerbraten/src/shared/iengine.h,v
retrieving revision 1.210
diff -r1.210 iengine.h
54,67c54,67
< extern int variable(char *name, int min, int cur, int max, int *storage, void (*fun)(), bool persist);
< extern void setvar(char *name, int i, bool dofunc = false);
< extern int getvar(char *name);
< extern int getvarmin(char *name);
< extern int getvarmax(char *name);
< extern bool identexists(char *name);
< extern ident *getident(char *name);
< extern bool addcommand(char *name, void (*fun)(), char *narg);
< extern int execute(char *p);
< extern char *executeret(char *p);
< extern void exec(char *cfgfile);
< extern bool execfile(char *cfgfile);
< extern void alias(char *name, char *action);
< extern const char *getalias(char *name);
---
> extern int variable(const char *name, int min, int cur, int max, int *storage, void (*fun)(), bool persist);
> extern void setvar(const char *name, int i, bool dofunc = false);
> extern int getvar(const char *name);
> extern int getvarmin(const char *name);
> extern int getvarmax(const char *name);
> extern bool identexists(const char *name);
> extern ident *getident(const char *name);
> extern bool addcommand(const char *name, void (*fun)(), const char *narg);
> extern int execute(const char *p);
> extern char *executeret(const char *p);
> extern void exec(const char *cfgfile);
> extern bool execfile(const char *cfgfile);
> extern void alias(const char *name, const char *action);
> extern const char *getalias(const char *name);
97c97
< extern void fatal(char *s, char *o = "");
---
> extern void fatal(const char *s, ...);
99c99
< extern void registergame(char *name, igame *ig);
---
> extern void registergame(const char *name, igame *ig);
104c104
< extern bool setfont(char *name);
---
> extern bool setfont(const char *name);
126c126
< extern void particle_text(const vec &s, char *t, int type, int fade = 2000);
---
> extern void particle_text(const vec &s, const char *t, int type, int fade = 2000);
154c154
< extern void playsoundname(char *s, const vec *loc = NULL, int vol = 0);
---
> extern void playsoundname(const char *s, const vec *loc = NULL, int vol = 0);
212c212
< extern void neterr(char *s);
---
> extern void neterr(const char *s);
248c248
<     virtual char *field(char *name, int color, int length, char *initval = "") = 0;
---
>     virtual char *field(const char *name, int color, int length, const char *initval = "") = 0;
Index: shared/igame.h
===================================================================
RCS file: /cvsroot/sauerbraten/sauerbraten/src/shared/igame.h,v
retrieving revision 1.71
diff -r1.71 igame.h
44,49c44,49
<     virtual char *gameident() = 0;
<     virtual char *defaultmap() = 0;
<     virtual char *savedconfig() = 0;
<     virtual char *defaultconfig() = 0;
<     virtual char *autoexec() = 0;
<     virtual char *savedservers() { return NULL; }
---
>     virtual const char *gameident() = 0;
>     virtual const char *defaultmap() = 0;
>     virtual const char *savedconfig() = 0;
>     virtual const char *defaultconfig() = 0;
>     virtual const char *autoexec() = 0;
>     virtual const char *savedservers() { return NULL; }
95c95
<     virtual char *servername() = 0;
---
>     virtual const char *servername() = 0;
106c106
<     virtual char *getdefaultmaster() = 0;
---
>     virtual const char *getdefaultmaster() = 0;
Index: shared/tools.cpp
===================================================================
RCS file: /cvsroot/sauerbraten/sauerbraten/src/shared/tools.cpp,v
retrieving revision 1.19
diff -r1.19 tools.cpp
18c18
< char *path(char *s, bool copy)
---
> char *path(char *s)
20,25d19
<     if(copy)
<     {
<         static string tmp;
<         s_strcpy(tmp, s);
<         s = tmp;
<     }
46a41,48
> char *path(const char *s, bool copy)
> {
>     static string tmp;
>     s_strcpy(tmp, s);
>     path(tmp);
>     return tmp;
> }
> 
Index: shared/tools.h
===================================================================
RCS file: /cvsroot/sauerbraten/sauerbraten/src/shared/tools.h,v
retrieving revision 1.63
diff -r1.63 tools.h
555c555,556
< extern char *path(char *s, bool copy = false);
---
> extern char *path(char *s);
> extern char *path(const char *s, bool copy);
