forked from Mirrors/freeswitch
50 lines
1.0 KiB
Perl
50 lines
1.0 KiB
Perl
|
#!/usr/bin/perl -w
|
||
|
use strict;
|
||
|
|
||
|
=head1 NAME
|
||
|
|
||
|
combineconf.pl - expand #include PIs in a freeswitch conf file
|
||
|
|
||
|
=head1 SYNOPSIS
|
||
|
|
||
|
# cd conf
|
||
|
# ../scripts/combineconf.pl freeswitch.xml > freeswitch_combined.xml
|
||
|
|
||
|
=head1 DESCRIPTION
|
||
|
|
||
|
This is recursive, and will take multiple input files on the command line.
|
||
|
|
||
|
You need to run it from the working directory that the relative include paths
|
||
|
except to be resolved from.
|
||
|
|
||
|
=head1 AUTHOR
|
||
|
|
||
|
Mark D. Anderson (mda@discerning.com)
|
||
|
Released under same terms as Perl, or alternatively the MPL.
|
||
|
|
||
|
=cut
|
||
|
|
||
|
use IO::File;
|
||
|
|
||
|
sub filter_file {
|
||
|
my ($f) = @_;
|
||
|
my $fh = $f eq '-' ? \*STDIN : IO::File->new($f, 'r');
|
||
|
die "ERROR: Can't open $f: $!\n" unless $fh;
|
||
|
while(<$fh>) {
|
||
|
if (m/<!--#include\s+"(.*?)"/) {
|
||
|
filter_file($1);
|
||
|
}
|
||
|
else {print;}
|
||
|
}
|
||
|
undef $fh;
|
||
|
}
|
||
|
|
||
|
sub main {
|
||
|
die "Usage: $0 file1 ...\nCombined output goes to stdout. Use '-' as the filename to use stdin." unless @ARGV;
|
||
|
for(@ARGV) {
|
||
|
filter_file($_);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
main();
|