1
0
Fork 0
forked from len0rd/rockbox

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
This commit is contained in:
Dave Chapman 2007-05-29 19:00:36 +00:00
parent be0cbc9406
commit f0d4fc6c6b
5 changed files with 134 additions and 28 deletions

View file

@ -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;
}
}

View file

@ -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);

View file

@ -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;
}
}

View file

@ -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 $@

91
tools/checkwps.c Normal file
View file

@ -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;
}