blob: 60018b5f556b6841db71c6d2909e1710f2858e76 [file] [log] [blame]
Manuel Pégourié-Gonnarde137ea62015-04-09 10:47:44 +02001#!/bin/sh
Simon Butcher71ebc582016-06-23 20:02:07 +01002#
3# This file is part of mbed TLS (https://tls.mbed.org)
4#
Gilles Peskine0c12e302019-05-22 18:22:45 +02005# Copyright (c) 2015-2019, ARM Limited, All Rights Reserved
6
Manuel Pégourié-Gonnarde137ea62015-04-09 10:47:44 +02007set -eu
8
Gilles Peskine0c12e302019-05-22 18:22:45 +02009if [ $# -ne 0 ] && [ "$1" = "--help" ]; then
10 cat <<EOF
11$0 [-v]
12This script confirms that the naming of all symbols and identifiers in mbed
13TLS are consistent with the house style and are also self-consistent.
14
15 -v If the script fails unexpectedly, print a command trace.
16EOF
17 exit
18fi
19
Simon Butcher71ebc582016-06-23 20:02:07 +010020if grep --version|head -n1|grep GNU >/dev/null; then :; else
Ron Eldorbf007d22016-12-15 14:42:37 +020021 echo "This script requires GNU grep.">&2
Simon Butcher71ebc582016-06-23 20:02:07 +010022 exit 1
23fi
24
Gilles Peskine36428d32019-05-15 17:29:15 +020025trace=
26if [ $# -ne 0 ] && [ "$1" = "-v" ]; then
27 shift
28 trace='-x'
29 exec 2>check-names.err
30 trap 'echo "FAILED UNEXPECTEDLY, status=$?";
31 cat check-names.err' EXIT
32 set -x
33fi
34
Simon Butcher71ebc582016-06-23 20:02:07 +010035printf "Analysing source code...\n"
36
Gilles Peskine36428d32019-05-15 17:29:15 +020037sh $trace tests/scripts/list-macros.sh
Manuel Pégourié-Gonnarde137ea62015-04-09 10:47:44 +020038tests/scripts/list-enum-consts.pl
Gilles Peskine36428d32019-05-15 17:29:15 +020039sh $trace tests/scripts/list-identifiers.sh
40sh $trace tests/scripts/list-symbols.sh
Manuel Pégourié-Gonnarde137ea62015-04-09 10:47:44 +020041
42FAIL=0
43
Simon Butcher71ebc582016-06-23 20:02:07 +010044printf "\nExported symbols declared in header: "
Manuel Pégourié-Gonnarde137ea62015-04-09 10:47:44 +020045UNDECLARED=$( diff exported-symbols identifiers | sed -n -e 's/^< //p' )
Manuel Pégourié-Gonnard9afdc832015-08-04 17:15:13 +020046if [ "x$UNDECLARED" = "x" ]; then
Manuel Pégourié-Gonnarde137ea62015-04-09 10:47:44 +020047 echo "PASS"
48else
49 echo "FAIL"
50 echo "$UNDECLARED"
51 FAIL=1
52fi
53
54diff macros identifiers | sed -n -e 's/< //p' > actual-macros
55
56for THING in actual-macros enum-consts; do
57 printf "Names of $THING: "
58 test -r $THING
Simon Butcher3ad2efd2018-05-02 14:49:38 +010059 BAD=$( grep -v '^MBEDTLS_[0-9A-Z_]*[0-9A-Z]$' $THING || true )
Manuel Pégourié-Gonnarde137ea62015-04-09 10:47:44 +020060 if [ "x$BAD" = "x" ]; then
61 echo "PASS"
62 else
63 echo "FAIL"
64 echo "$BAD"
65 FAIL=1
66 fi
67done
68
69for THING in identifiers; do
70 printf "Names of $THING: "
71 test -r $THING
72 BAD=$( grep -v '^mbedtls_[0-9a-z_]*[0-9a-z]$' $THING || true )
73 if [ "x$BAD" = "x" ]; then
74 echo "PASS"
75 else
76 echo "FAIL"
77 echo "$BAD"
78 FAIL=1
79 fi
80done
81
Manuel Pégourié-Gonnardf9aae832015-04-09 12:20:53 +020082printf "Likely typos: "
83sort -u actual-macros enum-consts > _caps
Jaeden Amero78d9d0c2019-07-04 20:50:11 +010084HEADERS=$( ls include/mbedtls/*.h crypto/include/mbedtls/*.h | egrep -v 'compat-1\.3\.h' )
Manuel Pégourié-Gonnardf9aae832015-04-09 12:20:53 +020085NL='
86'
Manuel Pégourié-Gonnard6ad5d352015-05-28 15:08:28 +020087sed -n 's/MBED..._[A-Z0-9_]*/\'"$NL"'&\'"$NL"/gp \
Manuel Pégourié-Gonnardf9aae832015-04-09 12:20:53 +020088 $HEADERS library/*.c \
89 | grep MBEDTLS | sort -u > _MBEDTLS_XXX
90TYPOS=$( diff _caps _MBEDTLS_XXX | sed -n 's/^> //p' \
Manuel Pégourié-Gonnard32da9f62015-07-31 15:52:30 +020091 | egrep -v 'XXX|__|_$|^MBEDTLS_.*CONFIG_FILE$' || true )
Manuel Pégourié-Gonnardf9aae832015-04-09 12:20:53 +020092rm _MBEDTLS_XXX _caps
Manuel Pégourié-Gonnard9afdc832015-08-04 17:15:13 +020093if [ "x$TYPOS" = "x" ]; then
Manuel Pégourié-Gonnardf9aae832015-04-09 12:20:53 +020094 echo "PASS"
95else
96 echo "FAIL"
97 echo "$TYPOS"
98 FAIL=1
99fi
100
Gilles Peskine36428d32019-05-15 17:29:15 +0200101if [ -n "$trace" ]; then
102 set +x
103 trap - EXIT
104 rm check-names.err
105fi
106
Simon Butcher71ebc582016-06-23 20:02:07 +0100107printf "\nOverall: "
Manuel Pégourié-Gonnarde137ea62015-04-09 10:47:44 +0200108if [ "$FAIL" -eq 0 ]; then
109 rm macros actual-macros enum-consts identifiers exported-symbols
110 echo "PASSED"
111 exit 0
112else
113 echo "FAILED"
114 exit 1
115fi