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