#Patch sent to upstream on March 1st, 2009
#Jesus Rivero (Neurogeek)
#Replaced deprecated os.popen3 for subprocess

diff -uNr xdg.orig/Menu.py xdg/Menu.py
--- xdg.orig/Menu.py	2009-03-01 04:34:38.000000000 -0430
+++ xdg/Menu.py	2009-03-01 04:41:27.000000000 -0430
@@ -12,6 +12,7 @@
 
 import xdg.Locale
 import xdg.Config
+from subprocess import Popen, PIPE
 
 ELEMENT_NODE = xml.dom.Node.ELEMENT_NODE
 
@@ -841,13 +842,16 @@
         return m
 
 def __parseKDELegacyDirs(filename, parent):
-    f=os.popen3("kde-config --path apps")
-    output = f[1].readlines()
     try:
-        for dir in output[0].split(":"):
-            __parseLegacyDir(dir,"kde", filename, parent)
-    except IndexError:
-        pass
+        f=Popen("kde-config --path apps", shell=True, stdout=PIPE).stdout
+        output = f.readlines()
+        try:
+            for dir in output[0].split(":"):
+                __parseLegacyDir(dir,"kde", filename, parent)
+        except IndexError:
+            pass
+    except:
+        raise Exception, "kde-config failed"
 
 # remove duplicate entries from a list
 def __removeDuplicates(list):
