1#!/usr/bin/env perl 2# 3# Copyright The Mbed TLS Contributors 4# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later 5# 6# This file is provided under the Apache License 2.0, or the 7# GNU General Public License v2.0 or later. 8# 9# ********** 10# Apache License 2.0: 11# 12# Licensed under the Apache License, Version 2.0 (the "License"); you may 13# not use this file except in compliance with the License. 14# You may obtain a copy of the License at 15# 16# http://www.apache.org/licenses/LICENSE-2.0 17# 18# Unless required by applicable law or agreed to in writing, software 19# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 20# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 21# See the License for the specific language governing permissions and 22# limitations under the License. 23# 24# ********** 25# 26# ********** 27# GNU General Public License v2.0 or later: 28# 29# This program is free software; you can redistribute it and/or modify 30# it under the terms of the GNU General Public License as published by 31# the Free Software Foundation; either version 2 of the License, or 32# (at your option) any later version. 33# 34# This program is distributed in the hope that it will be useful, 35# but WITHOUT ANY WARRANTY; without even the implied warranty of 36# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 37# GNU General Public License for more details. 38# 39# You should have received a copy of the GNU General Public License along 40# with this program; if not, write to the Free Software Foundation, Inc., 41# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 42# 43# ********** 44 45use warnings; 46use strict; 47 48use utf8; 49use open qw(:std utf8); 50 51-d 'include/mbedtls' or die "$0: must be run from root\n"; 52 53@ARGV = grep { ! /compat-1\.3\.h/ } <include/mbedtls/*.h>; 54 55my @consts; 56my $state = 'out'; 57while (<>) 58{ 59 if( $state eq 'out' and /^(typedef )?enum \{/ ) { 60 $state = 'in'; 61 } elsif( $state eq 'out' and /^(typedef )?enum/ ) { 62 $state = 'start'; 63 } elsif( $state eq 'start' and /{/ ) { 64 $state = 'in'; 65 } elsif( $state eq 'in' and /}/ ) { 66 $state = 'out'; 67 } elsif( $state eq 'in' ) { 68 s/=.*//; s!/\*.*!!; s/,.*//; s/\s+//g; chomp; 69 push @consts, $_ if $_; 70 } 71} 72 73open my $fh, '>', 'enum-consts' or die; 74print $fh "$_\n" for sort @consts; 75close $fh or die; 76 77printf "%8d enum-consts\n", scalar @consts; 78