3 from xml
.dom
import Node
, XMLNS_NAMESPACE
5 FREE_NS
='http://www.freedesktop.org/standards/shared-mime-info'
7 home_mime
= os
.path
.join(rox
.basedir
.xdg_data_home
, 'mime')
8 user_override
= os
.path
.join(home_mime
, 'packages', 'Override.xml')
11 from xml
.dom
import minidom
12 if os
.path
.exists(user_override
):
13 doc
= minidom
.parse(user_override
)
15 doc
= minidom
.Document()
16 node
= doc
.createElementNS(FREE_NS
, 'mime-info')
18 # Some versions of PyXML lose the namespace?
19 doc
.documentElement
.setAttributeNS(XMLNS_NAMESPACE
, 'xmlns', FREE_NS
)
22 def get_override_type(type_name
):
24 root
= doc
.documentElement
25 for c
in root
.childNodes
:
26 if c
.nodeType
!= Node
.ELEMENT_NODE
: continue
27 if c
.localName
== 'mime-type' and c
.namespaceURI
== FREE_NS
:
28 if c
.getAttributeNS(None, 'type') == type_name
:
30 node
= doc
.createElementNS(FREE_NS
, 'mime-type')
31 node
.setAttributeNS(None, 'type', type_name
)
32 root
.appendChild(node
)
35 def write_override(doc
):
36 home_packages
= os
.path
.join(home_mime
, 'packages')
37 if not os
.path
.isdir(home_packages
):
38 os
.makedirs(home_packages
)
39 path
= os
.path
.join(home_packages
, 'Override.xml.new')
40 doc
.writexml(file(path
, 'w'))
41 os
.rename(path
, path
[:-4])
50 os
.execlp('update-mime-database', 'update-mime-database', home_mime
)
54 message
= os
.fdopen(r
, 'r').read()
55 pid
, status
= os
.waitpid(child
, 0)
56 if status
or message
.count('\n') != 3: