68 lines
1.3 KiB
Perl
Executable file
68 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;
|
|
}
|