12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- #!/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();
|