summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perl-install/lang.pm43
1 files changed, 33 insertions, 10 deletions
diff --git a/perl-install/lang.pm b/perl-install/lang.pm
index b7955eeaf..f0a9149e4 100644
--- a/perl-install/lang.pm
+++ b/perl-install/lang.pm
@@ -1122,27 +1122,50 @@ sub write {
sub configure_hal {
my ($locale) = @_;
- my $options = join("\n", map_each {
- if_($::b, qq(\t\t<merge key="volume.policy.mount_option.$::a=$::b" type="bool">true</merge>));
- } fs_options($locale));
+ my $option = sub {
+ my ($cat, $val) = @_;
+ qq(\t\t<merge key="$cat.policy.mount_option.$val" type="bool">true</merge>);
+ };
+ my %options = (fs_options($locale), utf8 => 1);
+ my %known_options = (
+ auto => [ 'iocharset', 'codepage' ],
+ vfat => [ 'iocharset', 'codepage' ],
+ msdos => [ 'iocharset', 'codepage' ],
+ ntfs => [ 'iocharset', 'utf8' ],
+ cdrom => [ 'iocharset', 'codepage', 'utf8' ],
+ );
+ my $options = sub {
+ my ($cat, $name) = @_;
+ join("\n", map {
+ $option->($cat, $_ eq 'utf8' ? $_ : "$_=$options{$_}");
+ } grep { $options{$_} } @{$known_options{$name}});
+ };
+ my $options_per_fs = join('', map {
+ my $s = $options->('volume', $_);
+ $s && sprintf(<<'EOF', $_, $s);
+ <match key="volume.fstype" string="%s">
+%s
+ </match>
+EOF
+ } 'auto', 'vfat', 'msdos', 'ntfs');
- output_p("$::prefix/usr/share/hal/fdi/30osvendor/locale-policy.fdi", sprintf(<<'EOF', $options));
+ output_p("$::prefix/usr/share/hal/fdi/30osvendor/locale-policy.fdi",
+ sprintf(<<'EOF', $options_per_fs, $options->('storage', 'cdrom')));
<?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- -->
<deviceinfo version="0.2">
<device>
- <!-- Normal volumes; use volume label, uuid or drive_type -->
<match key="block.is_volume" bool="true">
<match key="volume.fsusage" string="filesystem">
- <match key="volume.fstype" string="auto">
-%s
- </match>
-
+%s
</match>
</match>
-
+
+ <match key="storage.drive_type" string="cdrom">
+%s
+ </match>
</device>
</deviceinfo>