diff options
author | martin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2013-03-10 07:53:37 +0000 |
---|---|---|
committer | martin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2013-03-10 07:53:37 +0000 |
commit | d8b735726f227fa0572bfc6d7556d0689eac6e43 (patch) | |
tree | 64694f801bfd52b03614989cd9f7524cd2fe04e3 /navit/gui/internal/gui_internal_command.c | |
parent | 1a5babc4170b6488792d68729ae65a56bfcf8cda (diff) | |
download | navit-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.c | 23 |
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 &=&, < = < */ + 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="""; + char *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); |