summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/gui/skin_engine/skin_parser.c4
-rw-r--r--apps/gui/skin_engine/skin_tokens.c4
-rw-r--r--apps/gui/skin_engine/wps_internals.h1
3 files changed, 9 insertions, 0 deletions
diff --git a/apps/gui/skin_engine/skin_parser.c b/apps/gui/skin_engine/skin_parser.c
index 3899f605f3..340cbbdb01 100644
--- a/apps/gui/skin_engine/skin_parser.c
+++ b/apps/gui/skin_engine/skin_parser.c
@@ -824,6 +824,10 @@ static int parse_substring_tag(struct skin_element* element,
824 else 824 else
825 ss->length = get_param(element, 1)->data.number; 825 ss->length = get_param(element, 1)->data.number;
826 ss->token = get_param_code(element, 2)->data; 826 ss->token = get_param_code(element, 2)->data;
827 if (element->params_count > 3)
828 ss->expect_number = !strcmp(get_param_text(element, 3), "number");
829 else
830 ss->expect_number = false;
827 token->value.data = PTRTOSKINOFFSET(skin_buffer, ss); 831 token->value.data = PTRTOSKINOFFSET(skin_buffer, ss);
828 return 0; 832 return 0;
829} 833}
diff --git a/apps/gui/skin_engine/skin_tokens.c b/apps/gui/skin_engine/skin_tokens.c
index 82d96f6993..765102513a 100644
--- a/apps/gui/skin_engine/skin_tokens.c
+++ b/apps/gui/skin_engine/skin_tokens.c
@@ -942,6 +942,10 @@ const char *get_token_value(struct gui_wps *gwps,
942 buf = &buf[start_byte]; 942 buf = &buf[start_byte];
943 943
944 buf[byte_len] = '\0'; 944 buf[byte_len] = '\0';
945 if (ss->expect_number &&
946 intval && (buf[0] >= '0' && buf[0] <= '9'))
947 *intval = atoi(buf) + 1; /* so 0 is the first item */
948
945 return buf; 949 return buf;
946 } 950 }
947 return NULL; 951 return NULL;
diff --git a/apps/gui/skin_engine/wps_internals.h b/apps/gui/skin_engine/wps_internals.h
index 9c3fa1b5bc..c55c8d2515 100644
--- a/apps/gui/skin_engine/wps_internals.h
+++ b/apps/gui/skin_engine/wps_internals.h
@@ -286,6 +286,7 @@ struct logical_if {
286struct substring { 286struct substring {
287 int start; 287 int start;
288 int length; 288 int length;
289 bool expect_number;
289 OFFSETTYPE(struct wps_token *) token; 290 OFFSETTYPE(struct wps_token *) token;
290}; 291};
291 292