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;"), "|amp-internal|");
-    xml_text.replace(QRegExp("&lt;"), "|lt-internal|");
-    xml_text.replace(QRegExp("&gt;"), "|gt-internal|");
-    xml_text.replace(QRegExp("&quot;"), "|quot-internal|");
+    xml_text.replace(QRegExp("&amp;"), "!amp-internal!");
+    xml_text.replace(QRegExp("&lt;"), "!lt-internal!");
+    xml_text.replace(QRegExp("&gt;"), "!gt-internal!");
+    xml_text.replace(QRegExp("&quot;"), "!quot-internal!");

    QValueList<int> line_offsets;
    line_offsets.append(0);