#!/usr/bin/perl
#
# A nice little script written by Matt Howard that will
# convert old style Bacula FileSets into the new style.
#
# fileset_convert.pl bacula-dir.conf >output-file
#
use warnings;
use strict;
my $in;
$in .= $_ while (<>);
sub options {
return "Options { ".join('; ',split(/\s+/, shift)) . " } ";
}
sub file_lines {
return join($/, map {" File = $_"} split(/\n\s*/, shift));
}
$in =~ s/Include\s*=\s*((?:\w+=\w+\s+)*){\s*((?:.*?\n)+?)\s*}/
"Include { " .
( $1 ? options($1) : '' ) . "\n" .
file_lines($2) .
"\n }" /eg;
$in =~ s/Exclude\s*=\s*{\s*}/
"Exclude { }"/eg;
$in =~ s/Exclude\s*=\s*{\s*((?:.*?\n)+?)\s*}/
"Exclude {\n" . file_lines($1) . "\n }"/eg;
print $in;
syntax highlighted by Code2HTML, v. 0.9.1