1<?xml version="1.0" encoding="UTF-8"?>
2
3<deviceinfo version="0.2">
4  <device>
5    <match key="info.udi" string="/org/freedesktop/Hal/devices/computer">
6      <append key="info.callouts.add" type="strlist">hal-storage-cleanup-all-mountpoints</append>
7    </match>
8
9    <match key="storage.media_check_enabled" bool="true">
10      <append key="info.addons" type="strlist">hald-addon-storage</append>
11    </match>
12
13    <match key="volume.is_disc" bool="true">
14      <match key="volume.disc.has_audio" bool="true">
15        <append key="info.interfaces" type="strlist">org.freedesktop.Hal.Device.Volume</append>
16        <append key="org.freedesktop.Hal.Device.Volume.method_names" type="strlist">Eject</append>
17        <append key="org.freedesktop.Hal.Device.Volume.method_signatures" type="strlist">as</append>
18	<append key="org.freedesktop.Hal.Device.Volume.method_argnames" type="strlist">extra_options</append>
19        <append key="org.freedesktop.Hal.Device.Volume.method_execpaths" type="strlist">hal-storage-eject</append>
20      </match>
21      <match key="volume.disc.is_blank" bool="true">
22        <append key="info.interfaces" type="strlist">org.freedesktop.Hal.Device.Volume</append>
23        <append key="org.freedesktop.Hal.Device.Volume.method_names" type="strlist">Eject</append>
24        <append key="org.freedesktop.Hal.Device.Volume.method_signatures" type="strlist">as</append>
25	<append key="org.freedesktop.Hal.Device.Volume.method_argnames" type="strlist">extra_options</append>
26        <append key="org.freedesktop.Hal.Device.Volume.method_execpaths" type="strlist">hal-storage-eject</append>
27      </match>
28    </match>
29
30    <!-- this is to be able to mount media in drives we cannot poll, e.g. IDE Zip Drives and PC style floppy drives -->
31    <match key="storage.media_check_enabled" bool="false">
32      <match key="storage.no_partitions_hint" bool="true">
33
34        <append key="info.interfaces" type="strlist">org.freedesktop.Hal.Device.Volume</append>
35
36        <append key="org.freedesktop.Hal.Device.Volume.method_names" type="strlist">Mount</append>
37        <append key="org.freedesktop.Hal.Device.Volume.method_signatures" type="strlist">ssas</append>
38	<append key="org.freedesktop.Hal.Device.Volume.method_argnames" type="strlist">mount_point fstype extra_options</append>
39        <append key="org.freedesktop.Hal.Device.Volume.method_execpaths" type="strlist">hal-storage-mount</append>
40
41        <append key="org.freedesktop.Hal.Device.Volume.method_names" type="strlist">Unmount</append>
42        <append key="org.freedesktop.Hal.Device.Volume.method_signatures" type="strlist">as</append>
43	<append key="org.freedesktop.Hal.Device.Volume.method_argnames" type="strlist">extra_options</append>
44        <append key="org.freedesktop.Hal.Device.Volume.method_execpaths" type="strlist">hal-storage-unmount</append>
45
46        <append key="org.freedesktop.Hal.Device.Volume.method_names" type="strlist">Eject</append>
47        <append key="org.freedesktop.Hal.Device.Volume.method_signatures" type="strlist">as</append>
48	<append key="org.freedesktop.Hal.Device.Volume.method_argnames" type="strlist">extra_options</append>
49        <append key="org.freedesktop.Hal.Device.Volume.method_execpaths" type="strlist">hal-storage-eject</append>
50
51        <!-- allow these mount options for all file systems -->
52        <append key="volume.mount.valid_options" type="strlist">ro</append>
53        <append key="volume.mount.valid_options" type="strlist">sync</append>
54        <append key="volume.mount.valid_options" type="strlist">dirsync</append>
55        <append key="volume.mount.valid_options" type="strlist">noatime</append>
56        <append key="volume.mount.valid_options" type="strlist">nodiratime</append>
57        <append key="volume.mount.valid_options" type="strlist">noexec</append>
58        <append key="volume.mount.valid_options" type="strlist">quiet</append>
59        <append key="volume.mount.valid_options" type="strlist">remount</append>
60	<append key="volume.mount.valid_options" type="strlist">exec</append>
61        <!-- As this is removable media give some leeway -->
62	<append key="volume.mount.valid_options" type="strlist">utf8</append>
63	<append key="volume.mount.valid_options" type="strlist">shortname=</append>
64	<append key="volume.mount.valid_options" type="strlist">codepage=</append>
65	<append key="volume.mount.valid_options" type="strlist">iocharset=</append>
66	<append key="volume.mount.valid_options" type="strlist">umask=</append>
67	<append key="volume.mount.valid_options" type="strlist">uid=</append>
68
69      </match>
70    </match>
71
72
73    <match key="volume.fsusage" string="filesystem">
74
75      <!-- Here follow volumes we specifically want to ignore - it is the -->
76      <!-- responsibility of software higher in the stack (e.g. gnome-vfs) -->
77      <!-- amd mount programs (e.g. Mount() on HAL) to respect volume.ignore -->
78      <merge key="volume.ignore" type="bool">false</merge>
79
80      <match key="@block.storage_device:storage.removable" bool="false">
81
82        <!-- Should always ignore Apple Bootstrap partitions (it would be -->
83	<!-- a security hole to mount it) - TODO: should use the bootable -->
84  	<!-- flag from the Mac partition table instead -->
85        <match key="volume.fstype" string="hfs">
86	  <match key="volume.label" string="bootstrap">
87    	    <merge key="volume.ignore" type="bool">true</merge>
88	  </match>
89        </match>
90
91        <!-- HP ships desktops with a recovery partition -->
92        <match key="volume.fstype" string="vfat">
93	  <match key="volume.label" string="HP_RECOVERY">
94	    <merge key="volume.ignore" type="bool">true</merge>
95	  </match>
96        </match>
97
98        <!-- EFI firmware partitions -->
99        <match key="volume.fstype" string="vfat">
100	  <match key="volume.label" string="EFI">
101	    <merge key="volume.ignore" type="bool">true</merge>
102	  </match>
103        </match>
104
105      </match>
106
107
108      <append key="info.interfaces" type="strlist">org.freedesktop.Hal.Device.Volume</append>
109
110      <append key="org.freedesktop.Hal.Device.Volume.method_names" type="strlist">Mount</append>
111      <append key="org.freedesktop.Hal.Device.Volume.method_signatures" type="strlist">ssas</append>
112      <append key="org.freedesktop.Hal.Device.Volume.method_argnames" type="strlist">mount_point fstype extra_options</append>
113      <append key="org.freedesktop.Hal.Device.Volume.method_execpaths" type="strlist">hal-storage-mount</append>
114
115      <append key="org.freedesktop.Hal.Device.Volume.method_names" type="strlist">Unmount</append>
116      <append key="org.freedesktop.Hal.Device.Volume.method_signatures" type="strlist">as</append>
117      <append key="org.freedesktop.Hal.Device.Volume.method_argnames" type="strlist">extra_options</append>
118      <append key="org.freedesktop.Hal.Device.Volume.method_execpaths" type="strlist">hal-storage-unmount</append>
119
120      <append key="org.freedesktop.Hal.Device.Volume.method_names" type="strlist">Eject</append>
121      <append key="org.freedesktop.Hal.Device.Volume.method_signatures" type="strlist">as</append>
122      <append key="org.freedesktop.Hal.Device.Volume.method_argnames" type="strlist">extra_options</append>
123      <append key="org.freedesktop.Hal.Device.Volume.method_execpaths" type="strlist">hal-storage-eject</append>
124
125      <!-- allow these mount options for all file systems -->
126      <append key="volume.mount.valid_options" type="strlist">ro</append>
127      <append key="volume.mount.valid_options" type="strlist">sync</append>
128      <append key="volume.mount.valid_options" type="strlist">dirsync</append>
129      <append key="volume.mount.valid_options" type="strlist">noatime</append>
130      <append key="volume.mount.valid_options" type="strlist">nodiratime</append>
131      <append key="volume.mount.valid_options" type="strlist">noexec</append>
132      <append key="volume.mount.valid_options" type="strlist">quiet</append>
133      <append key="volume.mount.valid_options" type="strlist">remount</append>
134      <append key="volume.mount.valid_options" type="strlist">exec</append>
135
136      <!-- allow these mount options for vfat -->
137      <match key="volume.fstype" string="vfat">
138	<append key="volume.mount.valid_options" type="strlist">utf8</append>
139	<append key="volume.mount.valid_options" type="strlist">shortname=</append>
140	<append key="volume.mount.valid_options" type="strlist">codepage=</append>
141	<append key="volume.mount.valid_options" type="strlist">iocharset=</append>
142	<append key="volume.mount.valid_options" type="strlist">umask=</append>
143	<append key="volume.mount.valid_options" type="strlist">dmask=</append>
144	<append key="volume.mount.valid_options" type="strlist">fmask=</append>
145	<append key="volume.mount.valid_options" type="strlist">uid=</append>
146      </match>
147
148
149      <!-- allow these mount options for hfs -->
150      <match key="volume.fstype" string="hfs">
151	<append key="volume.mount.valid_options" type="strlist">uid=</append>
152	<append key="volume.mount.valid_options" type="strlist">force</append>
153      </match>
154
155      <!-- allow these mount options for hfsplus -->
156      <match key="volume.fstype" string="hfsplus">
157	<append key="volume.mount.valid_options" type="strlist">uid=</append>
158	<append key="volume.mount.valid_options" type="strlist">force</append>
159      </match>
160
161      <!-- allow these mount options for ntfs -->
162      <match key="volume.fstype" string="ntfs">
163	<append key="volume.mount.valid_options" type="strlist">uid=</append>
164	<append key="volume.mount.valid_options" type="strlist">gid=</append>
165	<append key="volume.mount.valid_options" type="strlist">umask=</append>
166      </match>
167
168      <!-- allow these mount options for ext3 -->
169      <match key="volume.fstype" string="ext3">
170	<append key="volume.mount.valid_options" type="strlist">data=</append>
171      </match>
172
173      <!-- udf -->
174      <match key="volume.fstype" string="udf">
175	<append key="volume.mount.valid_options" type="strlist">uid=</append>
176	<append key="volume.mount.valid_options" type="strlist">umask=</append>
177      </match>
178
179      <!-- iso9660 -->
180      <match key="volume.fstype" string="iso9660">
181	<append key="volume.mount.valid_options" type="strlist">utf8</append>
182	<append key="volume.mount.valid_options" type="strlist">uid=</append>
183	<append key="volume.mount.valid_options" type="strlist">mode=</append>
184	<append key="volume.mount.valid_options" type="strlist">iocharset=</append>
185      </match>
186
187      <!-- pcfs -->
188      <match key="volume.fstype" string="pcfs">
189	<append key="volume.mount.valid_options" type="strlist">foldcase</append>
190	<append key="volume.mount.valid_options" type="strlist">nofoldcase</append>
191      </match>
192
193      <!-- allow these unmount options -->
194      <append key="volume.unmount.valid_options" type="strlist">lazy</append>
195
196    </match>
197
198    <match key="storage.requires_eject" bool="true">
199        <!-- storage Eject causes eject on each volume on this storage -->
200        <append key="info.interfaces" type="strlist">org.freedesktop.Hal.Device.Storage</append>
201        <append key="org.freedesktop.Hal.Device.Storage.method_names" type="strlist">Eject</append>
202        <append key="org.freedesktop.Hal.Device.Storage.method_signatures" type="strlist">as</append>
203	<append key="org.freedesktop.Hal.Device.Storage.method_argnames" type="strlist">extra_options</append>
204        <append key="org.freedesktop.Hal.Device.Storage.method_execpaths" type="strlist">hal-storage-eject</append>
205
206        <append key="info.interfaces" type="strlist">org.freedesktop.Hal.Device.Storage</append>
207        <append key="org.freedesktop.Hal.Device.Storage.method_names" type="strlist">CloseTray</append>
208        <append key="org.freedesktop.Hal.Device.Storage.method_signatures" type="strlist">as</append>
209	<append key="org.freedesktop.Hal.Device.Storage.method_argnames" type="strlist">extra_options</append>
210        <append key="org.freedesktop.Hal.Device.Storage.method_execpaths" type="strlist">hal-storage-closetray</append>
211    </match>
212  </device>
213</deviceinfo>
214