summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilliam Wilgus <wilgus.william@gmail.com>2024-12-08 11:53:07 -0500
committerWilliam Wilgus <me.theuser@yahoo.com>2024-12-08 15:12:28 -0500
commitca79fd039ccac6a3a4e09bb3d1add848b20e643c (patch)
treea3915ee9a4ceada727d3bfa145f56f47c99b2c05
parentbc1d7d77c5357155daee733389256799f2d3ed5c (diff)
downloadrockbox-ca79fd039c.tar.gz
rockbox-ca79fd039c.zip
skin_parser add empty parser callback remove guard conditionals
it appears callback is only set once in skin_parse() and then its never touched again making repeatd checks pointless anyway Change-Id: Iae4cb064b17f9c4e89a3ef772110ead17332cba2
-rw-r--r--lib/skin_parser/skin_parser.c81
1 files changed, 34 insertions, 47 deletions
diff --git a/lib/skin_parser/skin_parser.c b/lib/skin_parser/skin_parser.c
index 4a1a168d70..8fe75364a4 100644
--- a/lib/skin_parser/skin_parser.c
+++ b/lib/skin_parser/skin_parser.c
@@ -38,8 +38,9 @@ char* skin_start = 0;
static int viewport_line = 0;
#ifdef ROCKBOX
-static skin_callback callback = NULL;
-static void* callback_data;
+static int empty_callback(struct skin_element* element, void* data);
+static skin_callback callback = &empty_callback;
+static void* callback_data = NULL;
#endif
/* Auxiliary parsing functions (not visible at global scope) */
@@ -71,6 +72,13 @@ static void skip_whitespace(const char** document)
}
#ifdef ROCKBOX
+static int empty_callback(struct skin_element* element, void* data)
+{
+ (void)element;
+ (void)data;
+ return CALLBACK_OK;
+}
+
struct skin_element* skin_parse(const char* document,
skin_callback cb, void* cb_data)
{
@@ -153,7 +161,7 @@ static struct skin_element* skin_parse_viewport(const char** document)
}
}
#ifdef ROCKBOX
- else if (callback)
+ else
{
if (callback(retval, callback_data) == CALLBACK_ERROR)
{
@@ -331,16 +339,10 @@ static struct skin_element* skin_parse_line_optional(const char** document,
}
#ifdef ROCKBOX
- if (callback)
+ if (callback(retval, callback_data) == CALLBACK_ERROR)
{
- switch (callback(retval, callback_data))
- {
- case CALLBACK_ERROR:
- skin_error(GOT_CALLBACK_ERROR, cursor);
- return NULL;
- default:
- break;
- }
+ skin_error(GOT_CALLBACK_ERROR, cursor);
+ return NULL;
}
#endif
@@ -480,13 +482,10 @@ static struct skin_element* skin_parse_sublines_optional(const char** document,
}
#ifdef ROCKBOX
- if (callback)
+ if (callback(retval, callback_data) == CALLBACK_ERROR)
{
- if (callback(retval, callback_data) == CALLBACK_ERROR)
- {
- skin_error(GOT_CALLBACK_ERROR, *document);
- return NULL;
- }
+ skin_error(GOT_CALLBACK_ERROR, *document);
+ return NULL;
}
#endif
*document = cursor;
@@ -542,13 +541,10 @@ static int skin_parse_tag(struct skin_element* element, const char** document)
{
#ifdef ROCKBOX
- if (callback)
+ if (callback(element, callback_data) == CALLBACK_ERROR)
{
- if (callback(element, callback_data) == CALLBACK_ERROR)
- {
- skin_error(GOT_CALLBACK_ERROR, cursor);
- return 0;
- }
+ skin_error(GOT_CALLBACK_ERROR, cursor);
+ return 0;
}
#endif
*document = cursor;
@@ -826,13 +822,10 @@ static int skin_parse_tag(struct skin_element* element, const char** document)
return 0;
}
#ifdef ROCKBOX
- if (callback)
+ if (callback(element, callback_data) == CALLBACK_ERROR)
{
- if (callback(element, callback_data) == CALLBACK_ERROR)
- {
- skin_error(GOT_CALLBACK_ERROR, *document);
- return 0;
- }
+ skin_error(GOT_CALLBACK_ERROR, *document);
+ return 0;
}
#endif
*document = cursor;
@@ -897,13 +890,10 @@ static int skin_parse_text(struct skin_element* element, const char** document,
text[length] = '\0';
#ifdef ROCKBOX
- if (callback)
+ if (callback(element, callback_data) == CALLBACK_ERROR)
{
- if (callback(element, callback_data) == CALLBACK_ERROR)
- {
- skin_error(GOT_CALLBACK_ERROR, *document);
- return 0;
- }
+ skin_error(GOT_CALLBACK_ERROR, *document);
+ return 0;
}
#endif
@@ -940,18 +930,15 @@ static int skin_parse_conditional(struct skin_element* element, const char** doc
element->type = CONDITIONAL;
#ifdef ROCKBOX
- if (callback)
+ switch (callback(element, callback_data))
{
- switch (callback(element, callback_data))
- {
- case FEATURE_NOT_AVAILABLE:
- feature_available = false;
- break;
- case CALLBACK_ERROR:
- return 0;
- default:
- break;
- }
+ case FEATURE_NOT_AVAILABLE:
+ feature_available = false;
+ break;
+ case CALLBACK_ERROR:
+ return 0;
+ default:
+ break;
}
#endif