+++ /dev/null
-#!/usr/bin/perl
-
-use strict;
-use Getopt::Long;
-
-my $source = "";
-my $destination = "";
-my $make;
-my $help;
-
-my @lines;
-my %included;
-
-########################################################################
-#
-# usage
-#
-
-sub usage()
-{
- print "Usage: shell_include --source <file> --destination <file> [--make] [--help]\n";
- print "\n";
- print "--make will output makefile dependencies to stdout and exit\n";
- print "--help will output this text and exit\n";
- print "\n";
-}
-########################################################################
-#
-# check_options
-#
-
-sub check_options()
-{
- if ( !GetOptions(
- 's|source=s' => \$source,
- 'd|destination=s' => \$destination,
- 'm|make' => \$make,
- 'h|help' => \$help ) )
- {
- &usage;
- exit 1;
- }
-
- if ( $help ) {
- &usage;
- exit 0;
- };
-
- die( "Missing input file - use --source <file>" ) if ( $source eq "" );
- die( "Missing output file - use --destination <file>") if ( $destination eq "" );
-}
-
-########################################################################
-#
-# read_input : Read in the initial input file into @lines
-#
-
-sub read_input()
-{
- open( SOURCE, $source ) || die ( "Cannot open input file : $source" );
- while ( <SOURCE> ) {
- @lines = ( @lines, $_ );
- };
- close( SOURCE );
-}
-
-########################################################################
-#
-# Process #include directives
-#
-sub process_includes()
-{
- my $changed = 0;
- my @newlines;
-
- foreach my $line ( @lines ) {
-
- if ( $line =~ /^(\s*)\#include(\s+)(\S+)/ ) {
- $changed = 1;
- my $filename = $3;
- if ( ! defined $included{ $filename } ) {
- open( INC, $filename ) || die ( "Cannot open include file : $filename" );
- @newlines = ( @newlines, "########################################################################\n" );
- @newlines = ( @newlines, "#\n" );
- @newlines = ( @newlines, "# Included file : $filename\n" );
- @newlines = ( @newlines, "#\n" );
- while( <INC> ) {
- @newlines = ( @newlines, $_ );
- }
- close( INC );
- @newlines = ( @newlines, "#\n" );
- @newlines = ( @newlines, "# End of included file : $filename\n" );
- @newlines = ( @newlines, "#\n" );
- @newlines = ( @newlines, "########################################################################\n" );
- $included{ $filename } = "";
- }
- } else {
- @newlines = ( @newlines, $line );
- }
- }
- @lines = @newlines;
- return $changed;
-}
-
-########################################################################
-#
-# write_output : write the final set of lines to the output file
-#
-sub write_output()
-{
- open( DEST, ">$destination" ) || die( "Cannot open output file : $destination" );
- foreach my $line ( @lines ) {
- print DEST $line;
- }
- close( DEST );
-}
-
-&check_options;
-&read_input;
-while ( &process_includes ) { };
-if ( $make ) {
- print "$destination: $source ";
- foreach my $inc ( sort( keys( %included ) ) ) {
- print "$inc ";
- };
- print "\n";
-} else {
- &write_output;
-}