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:
parent
be0cbc9406
commit
f0d4fc6c6b
5 changed files with 134 additions and 28 deletions
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
91
tools/checkwps.c
Normal 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;
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue