1*6236dae4SAndroid Build Coastguard Worker#!/usr/bin/env perl 2*6236dae4SAndroid Build Coastguard Worker#*************************************************************************** 3*6236dae4SAndroid Build Coastguard Worker# _ _ ____ _ 4*6236dae4SAndroid Build Coastguard Worker# Project ___| | | | _ \| | 5*6236dae4SAndroid Build Coastguard Worker# / __| | | | |_) | | 6*6236dae4SAndroid Build Coastguard Worker# | (__| |_| | _ <| |___ 7*6236dae4SAndroid Build Coastguard Worker# \___|\___/|_| \_\_____| 8*6236dae4SAndroid Build Coastguard Worker# 9*6236dae4SAndroid Build Coastguard Worker# Copyright (C) Daniel Stenberg, <[email protected]>, et al. 10*6236dae4SAndroid Build Coastguard Worker# 11*6236dae4SAndroid Build Coastguard Worker# This software is licensed as described in the file COPYING, which 12*6236dae4SAndroid Build Coastguard Worker# you should have received as part of this distribution. The terms 13*6236dae4SAndroid Build Coastguard Worker# are also available at https://curl.se/docs/copyright.html. 14*6236dae4SAndroid Build Coastguard Worker# 15*6236dae4SAndroid Build Coastguard Worker# You may opt to use, copy, modify, merge, publish, distribute and/or sell 16*6236dae4SAndroid Build Coastguard Worker# copies of the Software, and permit persons to whom the Software is 17*6236dae4SAndroid Build Coastguard Worker# furnished to do so, under the terms of the COPYING file. 18*6236dae4SAndroid Build Coastguard Worker# 19*6236dae4SAndroid Build Coastguard Worker# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 20*6236dae4SAndroid Build Coastguard Worker# KIND, either express or implied. 21*6236dae4SAndroid Build Coastguard Worker# 22*6236dae4SAndroid Build Coastguard Worker# SPDX-License-Identifier: curl 23*6236dae4SAndroid Build Coastguard Worker# 24*6236dae4SAndroid Build Coastguard Worker########################################################################### 25*6236dae4SAndroid Build Coastguard Worker# 26*6236dae4SAndroid Build Coastguard Worker# 27*6236dae4SAndroid Build Coastguard Worker 28*6236dae4SAndroid Build Coastguard Workeruse strict; 29*6236dae4SAndroid Build Coastguard Workeruse warnings; 30*6236dae4SAndroid Build Coastguard Worker 31*6236dae4SAndroid Build Coastguard Workermy $sort = 0; 32*6236dae4SAndroid Build Coastguard Worker 33*6236dae4SAndroid Build Coastguard Worker# we may get the dir root pointed out 34*6236dae4SAndroid Build Coastguard Workermy $root = shift @ARGV; 35*6236dae4SAndroid Build Coastguard Workerwhile(defined $root) { 36*6236dae4SAndroid Build Coastguard Worker 37*6236dae4SAndroid Build Coastguard Worker if($root =~ /--heading=(.*)/) { 38*6236dae4SAndroid Build Coastguard Worker print "$1\n"; 39*6236dae4SAndroid Build Coastguard Worker $root = shift @ARGV; 40*6236dae4SAndroid Build Coastguard Worker next; 41*6236dae4SAndroid Build Coastguard Worker } 42*6236dae4SAndroid Build Coastguard Worker elsif($root =~ /--sort/) { 43*6236dae4SAndroid Build Coastguard Worker $sort = 1; 44*6236dae4SAndroid Build Coastguard Worker $root = shift @ARGV; 45*6236dae4SAndroid Build Coastguard Worker next; 46*6236dae4SAndroid Build Coastguard Worker } 47*6236dae4SAndroid Build Coastguard Worker 48*6236dae4SAndroid Build Coastguard Worker last; 49*6236dae4SAndroid Build Coastguard Worker} 50*6236dae4SAndroid Build Coastguard Worker 51*6236dae4SAndroid Build Coastguard Workerif(!defined $root) { 52*6236dae4SAndroid Build Coastguard Worker $root = "."; 53*6236dae4SAndroid Build Coastguard Worker} 54*6236dae4SAndroid Build Coastguard Worker 55*6236dae4SAndroid Build Coastguard Worker$root = "$root/include/curl"; 56*6236dae4SAndroid Build Coastguard Workeropendir(D, "$root") || die "Cannot open directory $root: $!\n"; 57*6236dae4SAndroid Build Coastguard Workermy @dir = readdir(D); 58*6236dae4SAndroid Build Coastguard Workerclosedir(D); 59*6236dae4SAndroid Build Coastguard Worker 60*6236dae4SAndroid Build Coastguard Workermy @incs; 61*6236dae4SAndroid Build Coastguard Workerforeach (sort(@dir)) { 62*6236dae4SAndroid Build Coastguard Worker if($_ =~ /\.h$/) { 63*6236dae4SAndroid Build Coastguard Worker push(@incs, "$root/$_"); 64*6236dae4SAndroid Build Coastguard Worker } 65*6236dae4SAndroid Build Coastguard Worker} 66*6236dae4SAndroid Build Coastguard Worker 67*6236dae4SAndroid Build Coastguard Workermy $verbose=0; 68*6236dae4SAndroid Build Coastguard Workermy $summary=0; 69*6236dae4SAndroid Build Coastguard Workermy $misses=0; 70*6236dae4SAndroid Build Coastguard Worker 71*6236dae4SAndroid Build Coastguard Workermy @syms; 72*6236dae4SAndroid Build Coastguard Workermy %doc; 73*6236dae4SAndroid Build Coastguard Workermy %rem; 74*6236dae4SAndroid Build Coastguard Worker 75*6236dae4SAndroid Build Coastguard Workermy @out; 76*6236dae4SAndroid Build Coastguard Workerforeach my $f (@incs) { 77*6236dae4SAndroid Build Coastguard Worker open H, "<$f" || die; 78*6236dae4SAndroid Build Coastguard Worker my $first = ""; 79*6236dae4SAndroid Build Coastguard Worker while(<H>) { 80*6236dae4SAndroid Build Coastguard Worker s/CURL_DEPRECATED\(.*"\)//; 81*6236dae4SAndroid Build Coastguard Worker s/ */ /g; 82*6236dae4SAndroid Build Coastguard Worker if (/^(^CURL_EXTERN .*?)\(/) { 83*6236dae4SAndroid Build Coastguard Worker my $decl = $1; 84*6236dae4SAndroid Build Coastguard Worker $decl =~ s/\r$//; 85*6236dae4SAndroid Build Coastguard Worker $decl =~ /([a-z_]+)$/; 86*6236dae4SAndroid Build Coastguard Worker push(@out, "$1"); 87*6236dae4SAndroid Build Coastguard Worker } 88*6236dae4SAndroid Build Coastguard Worker elsif (/^(^CURL_EXTERN .*)/) { 89*6236dae4SAndroid Build Coastguard Worker # handle two-line declarations 90*6236dae4SAndroid Build Coastguard Worker my $decl = $1; 91*6236dae4SAndroid Build Coastguard Worker $decl =~ s/\r$//; 92*6236dae4SAndroid Build Coastguard Worker $first = $decl; 93*6236dae4SAndroid Build Coastguard Worker } 94*6236dae4SAndroid Build Coastguard Worker elsif($first) { 95*6236dae4SAndroid Build Coastguard Worker if (/^ *(.*)\(/) { 96*6236dae4SAndroid Build Coastguard Worker my $decl = $1; 97*6236dae4SAndroid Build Coastguard Worker $decl =~ s/\r$//; 98*6236dae4SAndroid Build Coastguard Worker $first .= $decl; 99*6236dae4SAndroid Build Coastguard Worker $first =~ /([a-z_]+)$/; 100*6236dae4SAndroid Build Coastguard Worker push(@out, "$1"); 101*6236dae4SAndroid Build Coastguard Worker } 102*6236dae4SAndroid Build Coastguard Worker $first = ""; 103*6236dae4SAndroid Build Coastguard Worker } 104*6236dae4SAndroid Build Coastguard Worker } 105*6236dae4SAndroid Build Coastguard Worker close H; 106*6236dae4SAndroid Build Coastguard Worker} 107*6236dae4SAndroid Build Coastguard Worker 108*6236dae4SAndroid Build Coastguard Workerif($sort) { 109*6236dae4SAndroid Build Coastguard Worker @out = sort(@out); 110*6236dae4SAndroid Build Coastguard Worker} 111*6236dae4SAndroid Build Coastguard Worker 112*6236dae4SAndroid Build Coastguard Workerforeach (@out) { 113*6236dae4SAndroid Build Coastguard Worker print("$_\n"); 114*6236dae4SAndroid Build Coastguard Worker} 115