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);