Index: kdesdk/poxml/po2xml.cpp
diff -u kdesdk/poxml/po2xml.cpp:1.23 kdesdk/poxml/po2xml.cpp:1.23.2.1
--- kdesdk/poxml/po2xml.cpp:1.23 Thu Jul 26 09:37:13 2001
+++ kdesdk/poxml/po2xml.cpp Fri Dec 6 18:56:13 2002
@@ -27,6 +27,32 @@
return xml;
}
+static char * shell_quote(const char *s)
+{
+ char *result;
+ char *p;
+ p = result = (char *) malloc(strlen(s)*5+3);
+ *p++ = '\'';
+ while(*s)
+ {
+ if (*s == '\'')
+ {
+ *p++ = '\'';
+ *p++ = '"';
+ *p++ = *s++;
+ *p++ = '"';
+ *p++ = '\'';
+ }
+ else
+ {
+ *p++ = *s++;
+ }
+ }
+ *p++ = '\'';
+ *p = '\0';
+ return result;
+}
+
QString escapePO(QString msgid)
{
int index = 0;
@@ -109,7 +135,11 @@
QString output;
QTextStream ts(&output, IO_WriteOnly);
if (xml_text.left(5) != "<?xml") {
- FILE *p = popen(QString::fromLatin1("xmlizer %1").arg(argv[1]).latin1(), "r");
+ char *quoted_file = shell_quote(argv[1]);
+ QCString cmd = "xmlizer ";
+ cmd += quoted_file;
+ FILE *p = popen(cmd, "r");
+ free(quoted_file);
xml.open(IO_ReadOnly, p);
char buffer[5001];
xml_text.truncate(0);
@@ -122,10 +152,10 @@
pclose(p);
}
- xml_text.replace(QRegExp("&"), "|amp-internal|");
- xml_text.replace(QRegExp("<"), "|lt-internal|");
- xml_text.replace(QRegExp(">"), "|gt-internal|");
- xml_text.replace(QRegExp("""), "|quot-internal|");
+ xml_text.replace(QRegExp("&"), "!amp-internal!");
+ xml_text.replace(QRegExp("<"), "!lt-internal!");
+ xml_text.replace(QRegExp(">"), "!gt-internal!");
+ xml_text.replace(QRegExp("""), "!quot-internal!");
QValueList<int> line_offsets;
line_offsets.append(0);