Viewing file: upgrade-from-hotplug.pl (1.24 KB) -rwxr-xr-x Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#!/usr/bin/perl -w
use strict;
my %doneifaces = (); my @orig = (); # original interfaces file my $line;
while($line = <STDIN>) { if ($line =~ m/^\s*#/) { push @orig, $line; next; }
my $tmp; while ($line =~ m/\\\n$/ and $tmp = <>) { $line .= $tmp; } push @orig, $line; }
my @autos = (); sub upgrade { my $block = shift; $block =~ s/^(\s*)//s; my $pre = $1;
$block =~ s/(\s*)$//s; my $post = $1; $post = $1 . $post while $block =~ s/(\s*\n\#[^\n]*)$//s;
my $out = ""; if ($block =~ m/^mapping\s+hotplug\b/) { while ($block =~ m/^\s*map\s+(\S+)/mg) { unless (grep { $_ eq $1 } @autos) { $out .= "auto $1\n"; push @autos, $1; } } $out =~ s/\n$//; } elsif ($block =~ m/^auto\b/) { $block =~ s/^auto\b//; $pre .= "auto"; while ($block =~ m/\s*(\S+)/sg) { unless (grep { $_ eq $1 } @autos) { $out .= " $1"; push @autos, $1; } }
return "" unless length $out; } else { $out = $block; }
return $pre . $out . $post; }
my $out = ""; my $block = ""; for my $x (@orig) { my $y = $x; $y =~ s/^\s*//s; $y =~ s/\\\n//sg; $y =~ s/\s*$//s;
if ($y =~ m/^(iface|auto|allow-\W+|mapping)\b/) { $out .= upgrade $block; $block = $x; } else { $block .= $x; } }
$out .= upgrade $block;
print $out;
|