diff console.c @ 1773:9a6b53ee6a1d draft

(svn r2277) - Codechange: change sscanf() into stroul() Which Does The Right Thing tm. Thanks tron
author Darkvater <Darkvater@openttd.org>
date Fri, 06 May 2005 22:06:40 +0000
parents c222ccd5e4f6
children 9c91d08b3943
line wrap: on
line diff
--- a/console.c
+++ b/console.c
@@ -448,17 +448,19 @@
  */
 bool GetArgumentInteger(uint32 *value, const char *arg)
 {
-	int result = sscanf(arg, "%u", value);
-
-	/* Hexadecimal numbers start with 0x, so at least the first number has been parsed */
-	if (result == 1 && arg[0] == '0' && (arg[1] == 'x' || arg[1] == 'X'))
-		result = sscanf(arg, "%x", value);
+	char *endptr;
 
-	if (result == 0 && (strcmp(arg, "on") == 0 || strcmp(arg, "true") == 0 )) {*value = 1; result = 1;}
+	if (strcmp(arg, "on") == 0 || strcmp(arg, "true") == 0) {
+		*value = 1;
+		return true;
+	}
+	if (strcmp(arg, "off") == 0 || strcmp(arg, "false") == 0) {
+		*value = 0;
+		return true;
+	}
 
-	if (result == 0 && (strcmp(arg, "off") == 0 || strcmp(arg, "false") == 0)) {*value = 0; result = 1;}
-
-	return !!result;
+	*value = strtoul(arg, &endptr, 0);
+	return (arg == endptr) ? false : true;
 }
 
 /**