summaryrefslogtreecommitdiffstats
path: root/perl-install/network
diff options
context:
space:
mode:
Diffstat (limited to 'perl-install/network')
-rw-r--r--perl-install/network/network.pm15
1 files changed, 10 insertions, 5 deletions
diff --git a/perl-install/network/network.pm b/perl-install/network/network.pm
index 1bd0a2c72..473535ae8 100644
--- a/perl-install/network/network.pm
+++ b/perl-install/network/network.pm
@@ -171,11 +171,16 @@ sub write_interface_conf {
sub add2hosts {
my ($file, $hostname, @ips) = @_;
- my $sub_hostname = $hostname =~ /(.*?)\./ ? " $1" : '';
- my %l = map { if_(/^\s*(\S+)(.*)/, $1 => $2) }
- grep { !/\s\Q$hostname$sub_hostname\E(\s|$)/ } cat_($file);
-
- $l{$_} .= ($l{$_} ? " " : "\t\t") . "$hostname$sub_hostname" foreach grep { $_ } @ips;
+ my ($sub_hostname) = $hostname =~ /(.*?)\./;
+ my %l = map {
+ my ($ip, $space, $aliases) = /^\s*(\S+)(\s+)(\S+.*)/;
+ $aliases =~ s/(^|\s+)\Q$hostname\E(\s+|$)/$1/g;
+ $sub_hostname and $aliases =~ s/(^|\s+)\Q$sub_hostname\E(\s+|$)/$1/g;
+ if_($aliases !~ /^\s*$/, $ip => $space . $aliases)
+ } cat_($file);
+
+ $sub_hostname and $hostname = "$hostname $sub_hostname";
+ $l{$_} .= ($l{$_} ? " " : "\t\t") . $hostname foreach grep { $_ } @ips;
log::explanations("writing host information to $file");
output($file, map { "$_$l{$_}\n" } keys %l);