mbedtls/scripts/activate-config.pl

69 lines
1.3 KiB
Perl
Executable file

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