Damjan Jovanovic : winemenubuilder: Escape XML special characters in MIME types.
Alexandre Julliard
julliard at winehq.org
Fri Nov 13 09:37:06 CST 2009
Module: wine
Branch: master
Commit: e1e07b40ba31dc3296652799157c2e802e76a503
URL: http://source.winehq.org/git/wine.git/?a=commit;h=e1e07b40ba31dc3296652799157c2e802e76a503
Author: Damjan Jovanovic <damjan.jov at gmail.com>
Date: Thu Nov 12 21:42:19 2009 +0200
winemenubuilder: Escape XML special characters in MIME types.
---
programs/winemenubuilder/winemenubuilder.c | 34 +++++++++++++++++++++++++--
1 files changed, 31 insertions(+), 3 deletions(-)
diff --git a/programs/winemenubuilder/winemenubuilder.c b/programs/winemenubuilder/winemenubuilder.c
index fb13878..7bcdd44 100644
--- a/programs/winemenubuilder/winemenubuilder.c
+++ b/programs/winemenubuilder/winemenubuilder.c
@@ -730,6 +730,26 @@ static char* heap_printf(const char *format, ...)
return ret;
}
+static void write_xml_text(FILE *file, const char *text)
+{
+ int i;
+ for (i = 0; text[i]; i++)
+ {
+ if (text[i] == '&')
+ fputs("&", file);
+ else if (text[i] == '<')
+ fputs("<", file);
+ else if (text[i] == '>')
+ fputs(">", file);
+ else if (text[i] == '\'')
+ fputs("'", file);
+ else if (text[i] == '"')
+ fputs(""", file);
+ else
+ fputc(text[i], file);
+ }
+}
+
static BOOL create_directories(char *directory)
{
BOOL ret = TRUE;
@@ -1805,10 +1825,18 @@ static BOOL write_freedesktop_mime_type_entry(const char *packages_dir, const ch
{
fprintf(packageFile, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
fprintf(packageFile, "<mime-info xmlns=\"http://www.freedesktop.org/standards/shared-mime-info\">\n");
- fprintf(packageFile, " <mime-type type=\"%s\">\n", mime_type);
- fprintf(packageFile, " <glob pattern=\"*%s\"/>\n", dot_extension);
+ fprintf(packageFile, " <mime-type type=\"");
+ write_xml_text(packageFile, mime_type);
+ fprintf(packageFile, "\">\n");
+ fprintf(packageFile, " <glob pattern=\"*");
+ write_xml_text(packageFile, dot_extension);
+ fprintf(packageFile, "\"/>\n");
if (comment)
- fprintf(packageFile, " <comment>%s</comment>\n", comment);
+ {
+ fprintf(packageFile, " <comment>");
+ write_xml_text(packageFile, comment);
+ fprintf(packageFile, "</comment>\n");
+ }
fprintf(packageFile, " </mime-type>\n");
fprintf(packageFile, "</mime-info>\n");
ret = TRUE;
More information about the wine-cvs
mailing list