summaryrefslogtreecommitdiff
path: root/navit/gui/internal/gui_internal_command.c
diff options
context:
space:
mode:
authormartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2013-03-10 07:53:37 +0000
committermartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2013-03-10 07:53:37 +0000
commitd8b735726f227fa0572bfc6d7556d0689eac6e43 (patch)
tree64694f801bfd52b03614989cd9f7524cd2fe04e3 /navit/gui/internal/gui_internal_command.c
parent1a5babc4170b6488792d68729ae65a56bfcf8cda (diff)
downloadnavit-d8b735726f227fa0572bfc6d7556d0689eac6e43.tar.gz
Add:gui_internal:Support for decimal format string
git-svn-id: http://svn.code.sf.net/p/navit/code/trunk/navit@5403 ffa7fe5e-494d-0410-b361-a75ebd5db220
Diffstat (limited to 'navit/gui/internal/gui_internal_command.c')
-rw-r--r--navit/gui/internal/gui_internal_command.c23
1 files changed, 21 insertions, 2 deletions
diff --git a/navit/gui/internal/gui_internal_command.c b/navit/gui/internal/gui_internal_command.c
index 897373795..688f6228b 100644
--- a/navit/gui/internal/gui_internal_command.c
+++ b/navit/gui/internal/gui_internal_command.c
@@ -82,19 +82,25 @@ enum escape_mode {
escape_mode_quote=2,
escape_mode_html=4,
escape_mode_html_quote=8,
+ escape_mode_html_apos=16,
};
+/* todo &=&amp;, < = &lt; */
+
static char *
gui_internal_escape(enum escape_mode mode, char *in)
{
int len=mode & escape_mode_string ? 3:1;
char *dst,*out,*src=in;
char *quot="&quot;";
+ char *apos="&apos;";
while (*src) {
if ((*src == '"' || *src == '\\') && (mode & (escape_mode_string | escape_mode_quote)))
len++;
if (*src == '"' && mode == escape_mode_html_quote)
len+=strlen(quot);
+ else if (*src == '\'' && mode == escape_mode_html_apos)
+ len+=strlen(apos);
else
len++;
src++;
@@ -110,6 +116,10 @@ gui_internal_escape(enum escape_mode mode, char *in)
strcpy(dst,quot);
src++;
dst+=strlen(quot);
+ } else if (*src == '\'' && mode == escape_mode_html_apos) {
+ strcpy(dst,apos);
+ src++;
+ dst+=strlen(apos);
} else
*dst++=*src++;
}
@@ -978,6 +988,15 @@ gui_internal_onclick(struct attr ***in, char **onclick, char *set)
format[end-c-2]='\0';
is_arg=end[1] == '*';
c[0]='\0';
+ if (!strcmp(format,"d")) {
+ replacement=gui_internal_append_attr(NULL, escape_mode_string, "", *i++, "");
+ if (is_arg) {
+ args=g_strconcat_printf(args, "%s%s", args ? "," : "", replacement);
+ g_free(replacement);
+ replacement=g_strdup("");
+ }
+
+ }
if (!strcmp(format,"se")) {
replacement=gui_internal_append_attr(NULL, escape_mode_string, "", *i++, "");
if (is_arg) {
@@ -1060,8 +1079,8 @@ gui_internal_cmd_img(struct gui_priv * this, char *function, struct attr **in, s
gui_internal_onclick(&in,&onclick,"set");
gui_internal_onclick(&in,&onclick,NULL);
if (strlen(onclick)) {
- char *tmp=gui_internal_escape(escape_mode_html_quote, onclick);
- str=g_strconcat_printf(str," onclick=\"%s\"",tmp);
+ char *tmp=gui_internal_escape(escape_mode_html_apos, onclick);
+ str=g_strconcat_printf(str," onclick='%s'",tmp);
g_free(tmp);
}
g_free(onclick);