blob: d0ec13705e0d48f8e9bad91dbed70384f5f9ec59 [file] [log] [blame]
Gilles Peskinef040a172017-05-05 18:56:12 +02001#!/usr/bin/env perl
Gilles Peskinef040a172017-05-05 18:56:12 +02002use strict;
3use warnings;
4
Gilles Peskinefd14bca2017-05-11 17:57:22 +02005if (!@ARGV || $ARGV[0] == '--help') {
6 print <<EOF;
7Usage: $0 mbedtls_test_foo <file.pem
8 $0 TEST_FOO mbedtls_test_foo <file.pem
9Print out a PEM file as C code defining a string constant.
10
11Used to include some of the test data in /library/certs.c for
12self-tests and sample programs.
13EOF
14 exit;
15}
16
Gilles Peskinef040a172017-05-05 18:56:12 +020017my $pp_name = @ARGV > 1 ? shift @ARGV : undef;
18my $name = shift @ARGV;
19
20my @lines = map {chomp; s/([\\"])/\\$1/g; "\"$_\\r\\n\""} <STDIN>;
21
22if (defined $pp_name) {
23 foreach ("#define $pp_name", @lines[0..@lines-2]) {
24 printf "%-72s\\\n", $_;
25 }
26 print "$lines[@lines-1]\n";
27 print "const char $name\[\] = $pp_name;\n";
28} else {
29 print "const char $name\[\] =";
30 foreach (@lines) {
31 print "\n$_";
32 }
33 print ";\n";
34}