summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorJonathan Gordon <rockbox@jdgordon.info>2010-08-05 11:28:35 +0000
committerJonathan Gordon <rockbox@jdgordon.info>2010-08-05 11:28:35 +0000
commit145571d9b5c2b6b1028fbb95388f933a3675ebfa (patch)
tree78ca776063cc998b20dd4e6b1a3f8746eee5c50b /lib
parenta0dd4cd057a3e701bf25fc8ac19d0d025f64f361 (diff)
downloadrockbox-145571d9b5c2b6b1028fbb95388f933a3675ebfa.tar.gz
rockbox-145571d9b5c2b6b1028fbb95388f933a3675ebfa.zip
Add a T type to the tag table which allows parameters to be a single tag
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27716 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'lib')
-rw-r--r--lib/skin_parser/skin_parser.c11
-rw-r--r--lib/skin_parser/tag_table.h1
2 files changed, 12 insertions, 0 deletions
diff --git a/lib/skin_parser/skin_parser.c b/lib/skin_parser/skin_parser.c
index f92a52774d..fba074f00c 100644
--- a/lib/skin_parser/skin_parser.c
+++ b/lib/skin_parser/skin_parser.c
@@ -673,6 +673,17 @@ static int skin_parse_tag(struct skin_element* element, const char** document)
if(!element->params[i].data.code)
return 0;
}
+ else if (tolower(*tag_args) == 't')
+ {
+ struct skin_element* child = skin_alloc_element();
+ child->type = TAG;
+ if (!skin_parse_tag(child, &cursor))
+ return 0;
+ child->next = NULL;
+ element->params[i].type = CODE;
+ element->params[i].data.code = child;
+ }
+
skip_whitespace(&cursor);
diff --git a/lib/skin_parser/tag_table.h b/lib/skin_parser/tag_table.h
index 0266c2f6b5..2ba43b1bac 100644
--- a/lib/skin_parser/tag_table.h
+++ b/lib/skin_parser/tag_table.h
@@ -273,6 +273,7 @@ enum skin_token_type {
* F - Required file name
* f - Nullable file name
* C - Required skin code
+ * T - Required single skin tag
* N - any amount of strings.. must be the last param in the list
* \n - causes the parser to eat everything up to and including the \n
* MUST be the last character of the prams string