diff options
Diffstat (limited to 'src/jake2/game/Info.java')
-rw-r--r-- | src/jake2/game/Info.java | 454 |
1 files changed, 201 insertions, 253 deletions
diff --git a/src/jake2/game/Info.java b/src/jake2/game/Info.java index b13b065..f7d8b8d 100644 --- a/src/jake2/game/Info.java +++ b/src/jake2/game/Info.java @@ -1,263 +1,211 @@ /* -Copyright (C) 1997-2001 Id Software, Inc. + * Copyright (C) 1997-2001 Id Software, Inc. + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) any later + * version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. + * + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * this program; if not, write to the Free Software Foundation, Inc., 59 Temple + * Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. +// Created on 27.12.2003 by RST. +// $Id: Info.java,v 1.4 2004-09-22 19:22:03 salomo Exp $ +package jake2.game; -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +import jake2.Defines; +import jake2.qcommon.Com; -See the GNU General Public License for more details. +import java.util.StringTokenizer; -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +public class Info { -*/ + public static String Info_ValueForKey(String s, String key) { -// Created on 27.12.2003 by RST. -// $Id: Info.java,v 1.3 2004-09-10 19:02:54 salomo Exp $ + StringTokenizer tk = new StringTokenizer(s, "\\"); -package jake2.game; + while (tk.hasMoreTokens()) { + String key1 = tk.nextToken(); -import java.util.StringTokenizer; + if (!tk.hasMoreTokens()) { + Com.Printf("MISSING VALUE\n"); + return s; + } + String value1 = tk.nextToken(); + + if (key.equals(key1)) + return value1; + } + + return ""; + } + + /** + * TODO RST: DANGEROUS port, returns the modified userinfo string, was + * pointer-pointer manipulation first + */ + public static String Info_SetValueForKey1(String s, String key, String value) { + + if (value == null || value.length() == 0) + return s; + + if (key.indexOf('\\') != -1 || value.indexOf('\\') != -1) { + Com.Printf("Can't use keys or values with a \\\n"); + return s; + } + + if (key.indexOf(';') != -1) { + Com.Printf("Can't use keys or values with a semicolon\n"); + return s; + } + + if (key.indexOf('"') != -1 || value.indexOf('"') != -1) { + Com.Printf("Can't use keys or values with a \"\n"); + return s; + } + + if (key.length() > Defines.MAX_INFO_KEY - 1 + || value.length() > Defines.MAX_INFO_KEY - 1) { + Com.Printf("Keys and values must be < 64 characters.\n"); + return s; + } + + StringBuffer sb = new StringBuffer(Info_RemoveKey1(s, key)); + + if (sb.length() + 2 + key.length() + value.length() > Defines.MAX_INFO_STRING) { + + Com.Printf("Info string length exceeded\n"); + return s; + } + + sb.append('\\').append(key).append('\\').append(value); + + return sb.toString(); + } + + /** TODO RST: DANGEROUS port, returns now the modified userinfo string. */ + public static String Info_RemoveKey1(String s, String key) { + + StringBuffer sb = new StringBuffer(512); -import jake2.*; -import jake2.client.*; -import jake2.qcommon.*; -import jake2.render.*; -import jake2.server.*; - -public class Info extends PlayerView { - - - public static String Info_ValueForKey(String s, String key) { - - StringTokenizer tk = new StringTokenizer(s, "\\"); - - while (tk.hasMoreTokens()) { - String key1 = tk.nextToken(); - - if (!tk.hasMoreTokens()) { - Com.Printf("MISSING VALUE\n"); - return s; - } - String value1 = tk.nextToken(); - - if (key.equals(key1)) - return value1; - } - - return ""; - } - - /**TODO RST: DANGEROUS port, returns the modified userinfo string, was pointer-pointer manipulation first*/ - public static String Info_SetValueForKey1(String s, String key, String value) { - - if (value == null || value.length() == 0) - return s; - - if (key.indexOf('\\') != -1 || value.indexOf('\\') != -1) { - Com.Printf("Can't use keys or values with a \\\n"); - return s; - } - - if (key.indexOf(';') != -1) { - Com.Printf("Can't use keys or values with a semicolon\n"); - return s; - } - - if (key.indexOf('"') != -1 || value.indexOf('"') != -1) { - Com.Printf("Can't use keys or values with a \"\n"); - return s; - } - - if (key.length() > MAX_INFO_KEY - 1 || value.length() > MAX_INFO_KEY - 1) { - Com.Printf("Keys and values must be < 64 characters.\n"); - return s; - } - - StringBuffer sb = new StringBuffer(Info_RemoveKey1(s, key)); - - if (sb.length() + 2 + key.length() + value.length() > Defines.MAX_INFO_STRING){ - - - Com.Printf("Info string length exceeded\n"); - return s; - } - - sb.append('\\').append(key).append('\\').append(value); - - return sb.toString(); - } - - - - /** TODO RST: DANGEROUS port, returns now the modified userinfo string.*/ - public static String Info_RemoveKey1(String s, String key) { - - StringBuffer sb = new StringBuffer(512); - - if (key.indexOf('\\') != -1) { - Com.Printf("Can't use a key with a \\\n"); - return s; - } - - StringTokenizer tk = new StringTokenizer(s, "\\"); - - while (tk.hasMoreTokens()) { - String key1 = tk.nextToken(); - - if (!tk.hasMoreTokens()) { - Com.Printf("MISSING VALUE\n"); - return s; - } - String value1 = tk.nextToken(); - - if (!key.equals(key1)) - sb.append('\\').append(key1).append('\\').append(value1); - } - - return sb.toString(); - - //some old code follows - - /* - char * start; - char pkey[512]; - char value[512]; - char * o; - - if (key.indexOf('\\')!=-1) { - Com.Printf ("Can't use a key with a \\\n"); - return s; - } - - while () { - start = s; - if (* s == '\\') - s++; - o = pkey; - while (* s != '\\') { - if (!* s) - return; - * o++ = * s++; - } - * o = 0; - s++; - - o = value; - while (* s != '\\' && * s) { - if (!* s) - return; - * o++ = * s++; - } - * o = 0; - - if (!strcmp(key, pkey)) { - strcpy(start, s); // remove this part - return; - } - - if (!* s) - return; - } - */ - } - - /* - ================== - Info_Validate - - Some characters are illegal in info strings because they - can mess up the server's parsing - ================== - */ - public static boolean Info_Validate(String s) { - if (s.indexOf('"') != -1) - //return false; - if (s.indexOf(';') != -1) - return false; - return true; - } - - private static String fillspaces = " "; - - - public static void Print(String s) { - - StringBuffer sb = new StringBuffer(512); - StringTokenizer tk = new StringTokenizer(s, "\\"); - - while (tk.hasMoreTokens()) { - - String key1 = tk.nextToken(); - - if (!tk.hasMoreTokens()) { - Com.Printf("MISSING VALUE\n"); - return; - } - - String value1 = tk.nextToken(); - - sb.append(key1); - - int len = key1.length(); - - if (len < 20) { - sb.append(fillspaces.substring(len)); - } - - sb.append('=').append(value1).append('\n'); - } - - Com.Printf(sb.toString()); - - /* some old code follows - - char * o; - int l; - - if (* s == '\\') - s++; - while (* s) { - o = key; - while (* s && * s != '\\') - * o++ = * s++; - - l = o - key; - if (l < 20) { - memset(o, ' ', 20 - l); - key[20] = 0; - } - else - * o = 0; - Com_Printf("%s", key); - - if (!* s) { - Com_Printf("MISSING VALUE\n"); - return; - } - - o = value; - s++; - while (* s && * s != '\\') - * o++ = * s++; - * o = 0; - - if (* s) - s++; - Com_Printf("%s\n", value); - } - */ - } - - public static void testintern(StringBuffer in) { - in.setLength(0); - in.append("123!"); - } - -} + if (key.indexOf('\\') != -1) { + Com.Printf("Can't use a key with a \\\n"); + return s; + } + + StringTokenizer tk = new StringTokenizer(s, "\\"); + + while (tk.hasMoreTokens()) { + String key1 = tk.nextToken(); + + if (!tk.hasMoreTokens()) { + Com.Printf("MISSING VALUE\n"); + return s; + } + String value1 = tk.nextToken(); + + if (!key.equals(key1)) + sb.append('\\').append(key1).append('\\').append(value1); + } + + return sb.toString(); + + //some old code follows + + /* + * char * start; char pkey[512]; char value[512]; char * o; + * + * if (key.indexOf('\\')!=-1) { Com.Printf ("Can't use a key with a + * \\\n"); return s; } + * + * while () { start = s; if (* s == '\\') s++; o = pkey; while (* s != + * '\\') { if (!* s) return; o++ = * s++; } o = 0; s++; + * + * o = value; while (* s != '\\' && * s) { if (!* s) return; o++ = * + * s++; } o = 0; + * + * if (!strcmp(key, pkey)) { strcpy(start, s); // remove this part + * return; } + * + * if (!* s) return; } + */ + } + + /* + * ================== Info_Validate + * + * Some characters are illegal in info strings because they can mess up the + * server's parsing ================== + */ + public static boolean Info_Validate(String s) { + if (s.indexOf('"') != -1) + //return false; + if (s.indexOf(';') != -1) + return false; + return true; + } + + private static String fillspaces = " "; + + public static void Print(String s) { + + StringBuffer sb = new StringBuffer(512); + StringTokenizer tk = new StringTokenizer(s, "\\"); + + while (tk.hasMoreTokens()) { + + String key1 = tk.nextToken(); + + if (!tk.hasMoreTokens()) { + Com.Printf("MISSING VALUE\n"); + return; + } + + String value1 = tk.nextToken(); + + sb.append(key1); + + int len = key1.length(); + + if (len < 20) { + sb.append(fillspaces.substring(len)); + } + + sb.append('=').append(value1).append('\n'); + } + + Com.Printf(sb.toString()); + + /* + * some old code follows + * + * char * o; int l; + * + * if (* s == '\\') s++; while (* s) { o = key; while (* s && * s != + * '\\') o++ = * s++; + * + * l = o - key; if (l < 20) { memset(o, ' ', 20 - l); key[20] = 0; } + * else o = 0; Com_Printf("%s", key); + * + * if (!* s) { Com_Printf("MISSING VALUE\n"); return; } + * + * o = value; s++; while (* s && * s != '\\') o++ = * s++; o = 0; + * + * if (* s) s++; Com_Printf("%s\n", value); } + */ + } + + public static void testintern(StringBuffer in) { + in.setLength(0); + in.append("123!"); + } +}
\ No newline at end of file |