| #!/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; |
| } |