#! /usr/bin/env perl # Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy # in the file LICENSE in the source distribution or at # https://www.openssl.org/source/license.html use strict; use warnings; use File::Spec::Functions; use File::Basename; #use File::Copy; #use File::Path; use lib catdir(dirname($0), "perl"); use OpenSSL::Util::Pod; my %dups; sub parsenum() { my $file = shift; my @apis; open my $IN, '<', $file or die "Can't open $file, $!, stopped"; while ( <$IN> ) { next if /\sNOEXIST/; next if /EXPORT_VAR_AS_FUNC/; push @apis, $1 if /([^\s]+).\s/; } close $IN; print "# Found ", scalar(@apis), " in $file\n"; return sort @apis; } sub getdocced() { my $dir = shift; my %return; foreach my $pod ( glob("$dir/*.pod") ) { my %podinfo = extract_pod_info($pod); foreach my $n ( @{$podinfo{names}} ) { $return{$n} = $pod; print "# Duplicate $n in $pod and $dups{$n}\n" if defined $dups{$n} && $dups{$n} ne $pod; $dups{$n} = $pod; } } return %return; } my %docced = &getdocced('doc/man3'); sub printem() { my $numfile = shift; my $count = 0; foreach my $func ( &parsenum($numfile) ) { next if $docced{$func}; # Skip ASN1 utilities next if $func =~ /^ASN1_/; print $func, "\n"; $count++; } print "# Found $count missing from $numfile\n\n"; } &printem('util/libcrypto.num'); &printem('util/libssl.num');