summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Chapman <dave@dchapman.com>2007-05-29 19:00:36 +0000
committerDave Chapman <dave@dchapman.com>2007-05-29 19:00:36 +0000
commitf0d4fc6c6b146197c0fc51753d838252766aeda2 (patch)
tree14a80b9a30d14b63c50f3350f9c2cececdc1baef
parentbe0cbc940641264fe536ea1b3c1153f627367f55 (diff)
downloadrockbox-f0d4fc6c6b146197c0fc51753d838252766aeda2.tar.gz
rockbox-f0d4fc6c6b146197c0fc51753d838252766aeda2.zip
Commit my patch from FS#7179 - a standalone command-line checkwps tool. To build, just type "make checkwps" in tools and run it with "checkwps wpsname.wps".
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13517 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/gui/gwps-common.c26
-rw-r--r--apps/gui/wps_debug.c8
-rw-r--r--apps/gui/wps_parser.c32
-rw-r--r--tools/Makefile5
-rw-r--r--tools/checkwps.c91
5 files changed, 134 insertions, 28 deletions
diff --git a/apps/gui/gwps-common.c b/apps/gui/gwps-common.c
index b25168f252..2cdb92d964 100644
--- a/apps/gui/gwps-common.c
+++ b/apps/gui/gwps-common.c
@@ -1969,29 +1969,3 @@ bool gui_wps_refresh(struct gui_wps *gwps,
return true;
}
-int wps_subline_index(struct wps_data *data, int line, int subline)
-{
- return data->lines[line].first_subline_idx + subline;
-}
-
-int wps_first_token_index(struct wps_data *data, int line, int subline)
-{
- int first_subline_idx = data->lines[line].first_subline_idx;
- return data->sublines[first_subline_idx + subline].first_token_idx;
-}
-
-int wps_last_token_index(struct wps_data *data, int line, int subline)
-{
- int first_subline_idx = data->lines[line].first_subline_idx;
- int idx = first_subline_idx + subline;
- if (idx < data->num_sublines - 1)
- {
- /* This subline ends where the next begins */
- return data->sublines[idx+1].first_token_idx - 1;
- }
- else
- {
- /* The last subline goes to the end */
- return data->num_tokens - 1;
- }
-}
diff --git a/apps/gui/wps_debug.c b/apps/gui/wps_debug.c
index 8ba4b6f000..ae542785ae 100644
--- a/apps/gui/wps_debug.c
+++ b/apps/gui/wps_debug.c
@@ -22,13 +22,17 @@
#include <stdio.h>
#include <string.h>
#include "gwps.h"
+#ifdef __PCTOOL__
+#define DEBUGF printf
+#else
#include "debug.h"
+#endif
#define PARSE_FAIL_UNCLOSED_COND 1
#define PARSE_FAIL_INVALID_CHAR 2
#define PARSE_FAIL_COND_SYNTAX_ERROR 3
-#ifdef SIMULATOR
+#if defined(SIMULATOR) || defined(__PCTOOL__)
extern bool debug_wps;
#endif
@@ -467,7 +471,7 @@ static void print_img_cond_indexes(struct wps_data *data)
void print_debug_info(struct wps_data *data, int fail, int line)
{
-#ifdef SIMULATOR
+#if defined(SIMULATOR) || defined(__PCTOOL__)
if (debug_wps)
{
dump_wps_tokens(data);
diff --git a/apps/gui/wps_parser.c b/apps/gui/wps_parser.c
index be0ef4e271..d363d6d8cb 100644
--- a/apps/gui/wps_parser.c
+++ b/apps/gui/wps_parser.c
@@ -24,6 +24,7 @@
#include <string.h>
#include "atoi.h"
#include "gwps.h"
+#ifndef __PCTOOL__
#include "settings.h"
#include "debug.h"
#include "plugin.h"
@@ -36,6 +37,8 @@
#include "backdrop.h"
#endif
+#endif
+
#define WPS_DEFAULTCFG WPS_DIR "/rockbox_default.wps"
#define RWPS_DEFAULTCFG WPS_DIR "/rockbox_default.rwps"
@@ -1008,6 +1011,7 @@ bool wps_data_load(struct wps_data *wps_data,
* wants to be a virtual file. Feel free to modify dirbrowse()
* if you're feeling brave.
*/
+#ifndef __PCTOOL__
if (! strcmp(buf, WPS_DEFAULTCFG) )
{
global_settings.wps_file[0] = 0;
@@ -1021,6 +1025,7 @@ bool wps_data_load(struct wps_data *wps_data,
return false;
}
#endif
+#endif /* __PCTOOL__ */
int fd = open(buf, O_RDONLY);
@@ -1080,3 +1085,30 @@ bool wps_data_load(struct wps_data *wps_data,
return true;
}
}
+
+int wps_subline_index(struct wps_data *data, int line, int subline)
+{
+ return data->lines[line].first_subline_idx + subline;
+}
+
+int wps_first_token_index(struct wps_data *data, int line, int subline)
+{
+ int first_subline_idx = data->lines[line].first_subline_idx;
+ return data->sublines[first_subline_idx + subline].first_token_idx;
+}
+
+int wps_last_token_index(struct wps_data *data, int line, int subline)
+{
+ int first_subline_idx = data->lines[line].first_subline_idx;
+ int idx = first_subline_idx + subline;
+ if (idx < data->num_sublines - 1)
+ {
+ /* This subline ends where the next begins */
+ return data->sublines[idx+1].first_token_idx - 1;
+ }
+ else
+ {
+ /* The last subline goes to the end */
+ return data->num_tokens - 1;
+ }
+}
diff --git a/tools/Makefile b/tools/Makefile
index a25447c20e..ac9fbac6d0 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -47,6 +47,11 @@ database: database.c ../apps/tagcache.c ../apps/metadata.c \
-D__PCTOOL__ -DHAVE_TAGCACHE -DROCKBOX_HAS_LOGF -DSIMULATOR \
-DCONFIG_CODEC=1 -ldl -I../apps $+ -o $@
+checkwps: checkwps.c ../apps/gui/wps_parser.c ../apps/gui/wps_debug.c ../firmware/common/ctype.c
+ $(SILENT)$(CC) -g -I ../apps/gui -I../firmware/export \
+-D__PCTOOL__ -DDEBUG -DROCKBOX_HAS_LOGF -DIPOD_COLOR -D ROCKBOX_DIR_LEN=255 -D WPS_DIR=\".\" \
+-I../apps -I../firmware/target/arm/ipod -I../firmware/include $+ -o $@
+
convbdf: convbdf.c
$(SILENT)$(CC) -g $+ -o $@
diff --git a/tools/checkwps.c b/tools/checkwps.c
new file mode 100644
index 0000000000..74ce1e82be
--- /dev/null
+++ b/tools/checkwps.c
@@ -0,0 +1,91 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include "gwps.h"
+
+#define MIN(x,y) ((x) > (y) ? (y) : (x))
+
+bool debug_wps = true;
+
+int read_bmp_file(char* filename,
+ struct bitmap *bm,
+ int maxsize,
+ int format)
+{
+ return 0;
+}
+
+int errno;
+
+int read_line(int fd, char* buffer, int buffer_size)
+{
+ int count = 0;
+ int num_read = 0;
+
+ errno = 0;
+
+ while (count < buffer_size)
+ {
+ unsigned char c;
+
+ if (1 != read(fd, &c, 1))
+ break;
+
+ num_read++;
+
+ if ( c == '\n' )
+ break;
+
+ if ( c == '\r' )
+ continue;
+
+ buffer[count++] = c;
+ }
+
+ buffer[MIN(count, buffer_size - 1)] = 0;
+
+ return errno ? -1 : num_read;
+}
+
+bool load_wps_backdrop(char* filename)
+{
+ return true;
+}
+
+static char pluginbuf[PLUGIN_BUFFER_SIZE];
+
+void* plugin_get_buffer(size_t *buffer_size)
+{
+ *buffer_size = PLUGIN_BUFFER_SIZE;
+ return pluginbuf;
+}
+
+int main(int argc, char **argv)
+{
+ int res;
+ int fd;
+
+ struct wps_data wps;
+
+ if (argc != 2) {
+ printf("Usage: checkwps filename.wps\n");
+ return 1;
+ }
+
+ fd = open(argv[1], O_RDONLY);
+ if (fd < 0) {
+ printf("Failed to open %s\n",argv[1]);
+ return 2;
+ }
+ close(fd);
+
+ res = wps_data_load(&wps, argv[1], true);
+
+ if (!res) {
+ printf("WPS parsing failure\n");
+ return 3;
+ }
+
+ printf("WPS parsed OK\n");
+ return 0;
+}
+