aboutsummaryrefslogtreecommitdiff
path: root/backends/platform/bada/sscanf.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'backends/platform/bada/sscanf.cpp')
-rw-r--r--backends/platform/bada/sscanf.cpp213
1 files changed, 0 insertions, 213 deletions
diff --git a/backends/platform/bada/sscanf.cpp b/backends/platform/bada/sscanf.cpp
deleted file mode 100644
index aa846698f6..0000000000
--- a/backends/platform/bada/sscanf.cpp
+++ /dev/null
@@ -1,213 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <stdarg.h>
-#include <string.h>
-#include <ctype.h>
-
-//
-// simple sscanf replacement to match scummvm usage patterns
-//
-
-bool scanInt(const char **in, va_list *ap, int max) {
- // skip leading space characters
- while (**in && **in == ' ') {
- (*in)++;
- }
-
- // number optionally preceeded with a + or - sign.
- bool negate = false;
- if (**in == '-') {
- (*in)++;
- negate = true;
- }
-
- if (**in == '+') {
- (*in)++;
- }
-
- int *arg = va_arg(*ap, int*);
- char *end;
- long n = strtol(*in, &end, 10);
- if (negate) {
- n = -n;
- }
-
- bool err = false;
- if (end == *in || (max > 0 && (end - *in) > max)) {
- err = true;
- } else {
- *arg = (int)n;
- *in = end;
- }
- return err;
-}
-
-bool scanHex(const char **in, va_list *ap) {
- unsigned *arg = va_arg(*ap, unsigned*);
- char *end;
- long n = strtol(*in, &end, 16);
- if (end == *in) {
- return true;
- }
-
- *in = end;
- *arg = (unsigned) n;
- return false;
-}
-
-bool scanString(const char **in, va_list *ap) {
- char *arg = va_arg(*ap, char*);
- while (**in && **in != ' ' && **in != '\n' && **in != '\t') {
- *arg = **in;
- arg++;
- (*in)++;
- }
- *arg = '\0';
- (*in)++;
- return false;
-}
-
-bool scanStringUntil(const char **in, va_list *ap, char c_end) {
- char *arg = va_arg(*ap, char*);
- while (**in && **in != c_end) {
- *arg = **in;
- *arg++;
- (*in)++;
- }
- *arg = 0;
- (*in)++;
- return false;
-}
-
-bool scanChar(const char **in, va_list *ap) {
- char *arg = va_arg(*ap, char*);
- if (**in) {
- *arg = **in;
- (*in)++;
- }
- return false;
-}
-
-extern "C" int simple_sscanf(const char *input, const char *format, ...) {
- va_list ap;
- int result = 0;
- const char *next = input;
-
- va_start(ap, format);
-
- while (*format) {
- if (*format == '%') {
- format++;
- int max = 0;
- while (isdigit(*format)) {
- max = (max * 10) + (*format - '0');
- format++;
- }
-
- bool err = false;
- switch (*format++) {
- case 'c':
- err = scanChar(&next, &ap);
- break;
- case 'd':
- case 'u':
- err = scanInt(&next, &ap, max);
- break;
- case 'x':
- err = scanHex(&next, &ap);
- break;
- case 's':
- err = scanString(&next, &ap);
- break;
- case '[':
- // assume %[^c]
- if ('^' != *format) {
- err = true;
- } else {
- format++;
- if (*format && *(format+1) == ']') {
- err = scanStringUntil(&next, &ap, *format);
- format += 2;
- } else {
- err = true;
- }
- }
- break;
- default:
- err = true;
- break;
- }
-
- if (err) {
- break;
- } else {
- result++;
- }
- } else if (*format++ != *next++) {
- // match input
- break;
- }
- }
-
- va_end(ap);
- return result;
-}
-
-#if defined(TEST)
-int main(int argc, char *pArgv[]) {
- int x,y,xx,yy,h;
- char buffer[100];
- unsigned u;
- char c;
- strcpy(buffer, "hello");
- char *b = buffer;
-
- if (simple_sscanf("BBX 00009 -1 +10 000",
- "BBX %d %d %d %d",
- &x, &y, &xx, &yy) != 4) {
- printf("Failed\n");
- } else {
- printf("Success %d %d %d %d\n", x, y, xx, yy);
- }
-
- if (simple_sscanf("CAT 123x-10 0x100h 123456.AUD $ ",
- "CAT %dx%d %xh %06u.AUD %c",
- &x, &y, &h, &u, &c) != 5) {
- printf("Failed\n");
- } else {
- printf("Success %d %d %d %d '%c' \n", x, y, h, u, c);
- }
-
- if (simple_sscanf("COPYRIGHT \"Copyright (c) 1984, 1987 Foo Systems Incorporated",
- "COPYRIGHT \"%[^\"]",
- b) != 1) {
- printf("Failed\n");
- } else {
- printf("Success %s\n", buffer);
- }
-
- return 0;
-}
-#endif