#!/usr/bin/perl # activate a pre-defined configuration use warnings; use strict; my $config_h = "include/polarssl/config.h"; exit( main() ); sub read_default { open my $fh, '<', $config_h or die "Failed to read $config_h: $!\n"; my (@pre, @post); my $state = 'pre'; while( my $line = <$fh> ) { if( $state eq 'pre' ) { push @pre, $line; $state = 'skip' if $line =~ /} name SECTION: System support/; } elsif( $state eq 'skip' ) { $state = 'post' if $line =~/} name SECTION: PolarSSL modules/; } else { push @post, $line; } } die "Failed to parse $config_h\n" if( $state ne 'post' ); close $fh; push @pre, "\n"; return \@pre, \@post; } sub read_custom { my ($file_name) = @_; open my $fh, '<', $file_name or die "Failed to read $file_name: $!\n"; my @content = <$fh>; close $fh; return \@content; } sub write_custom { my ($pre, $mid, $post) = @_; open my $fh, '>', $config_h or die "Failed to write $config_h: $!\n"; print $fh @$pre; print $fh @$mid; print $fh @$post; close $fh; } sub main { my $custom_file_name = $ARGV[0]; my ($pre, $post) = read_default(); my $mine = read_custom( $custom_file_name ); write_custom( $pre, $mine, $post ); return 0; }