xref: /aosp_15_r20/external/mbedtls/tests/data_files/print_c.pl (revision 62c56f9862f102b96d72393aff6076c951fb8148)
1*62c56f98SSadaf Ebrahimi#!/usr/bin/env perl
2*62c56f98SSadaf Ebrahimi#
3*62c56f98SSadaf Ebrahimi# Copyright The Mbed TLS Contributors
4*62c56f98SSadaf Ebrahimi# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
5*62c56f98SSadaf Ebrahimi
6*62c56f98SSadaf Ebrahimiuse strict;
7*62c56f98SSadaf Ebrahimiuse warnings;
8*62c56f98SSadaf Ebrahimi
9*62c56f98SSadaf Ebrahimiif (!@ARGV || $ARGV[0] == '--help') {
10*62c56f98SSadaf Ebrahimi    print <<EOF;
11*62c56f98SSadaf EbrahimiUsage: $0 mbedtls_test_foo <file.pem
12*62c56f98SSadaf Ebrahimi       $0 TEST_FOO mbedtls_test_foo <file.pem
13*62c56f98SSadaf EbrahimiPrint out a PEM file as C code defining a string constant.
14*62c56f98SSadaf Ebrahimi
15*62c56f98SSadaf EbrahimiUsed to include some of the test data in /library/certs.c for
16*62c56f98SSadaf Ebrahimiself-tests and sample programs.
17*62c56f98SSadaf EbrahimiEOF
18*62c56f98SSadaf Ebrahimi    exit;
19*62c56f98SSadaf Ebrahimi}
20*62c56f98SSadaf Ebrahimi
21*62c56f98SSadaf Ebrahimimy $pp_name = @ARGV > 1 ? shift @ARGV : undef;
22*62c56f98SSadaf Ebrahimimy $name = shift @ARGV;
23*62c56f98SSadaf Ebrahimi
24*62c56f98SSadaf Ebrahimimy @lines = map {chomp; s/([\\"])/\\$1/g; "\"$_\\r\\n\""} <STDIN>;
25*62c56f98SSadaf Ebrahimi
26*62c56f98SSadaf Ebrahimiif (defined $pp_name) {
27*62c56f98SSadaf Ebrahimi    foreach ("#define $pp_name", @lines[0..@lines-2]) {
28*62c56f98SSadaf Ebrahimi        printf "%-72s\\\n", $_;
29*62c56f98SSadaf Ebrahimi    }
30*62c56f98SSadaf Ebrahimi    print "$lines[@lines-1]\n";
31*62c56f98SSadaf Ebrahimi    print "const char $name\[\] = $pp_name;\n";
32*62c56f98SSadaf Ebrahimi} else {
33*62c56f98SSadaf Ebrahimi    print "const char $name\[\] =";
34*62c56f98SSadaf Ebrahimi    foreach (@lines) {
35*62c56f98SSadaf Ebrahimi        print "\n$_";
36*62c56f98SSadaf Ebrahimi    }
37*62c56f98SSadaf Ebrahimi    print ";\n";
38*62c56f98SSadaf Ebrahimi}
39