Mercurial > hgrepos > Python2 > PyMuPDF
comparison mupdf-source/thirdparty/curl/scripts/singleuse.pl @ 2:b50eed0cc0ef upstream
ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
The directory name has changed: no version number in the expanded directory now.
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Mon, 15 Sep 2025 11:43:07 +0200 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 1:1d09e1dec1d9 | 2:b50eed0cc0ef |
|---|---|
| 1 #!/usr/bin/perl | |
| 2 #*************************************************************************** | |
| 3 # _ _ ____ _ | |
| 4 # Project ___| | | | _ \| | | |
| 5 # / __| | | | |_) | | | |
| 6 # | (__| |_| | _ <| |___ | |
| 7 # \___|\___/|_| \_\_____| | |
| 8 # | |
| 9 # Copyright (C) 2019, Daniel Stenberg, <daniel@haxx.se>, et al. | |
| 10 # | |
| 11 # This software is licensed as described in the file COPYING, which | |
| 12 # you should have received as part of this distribution. The terms | |
| 13 # are also available at https://curl.haxx.se/docs/copyright.html. | |
| 14 # | |
| 15 # You may opt to use, copy, modify, merge, publish, distribute and/or sell | |
| 16 # copies of the Software, and permit persons to whom the Software is | |
| 17 # furnished to do so, under the terms of the COPYING file. | |
| 18 # | |
| 19 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | |
| 20 # KIND, either express or implied. | |
| 21 # | |
| 22 ########################################################################### | |
| 23 # | |
| 24 # This script is aimed to help scan for and detect globally declared functions | |
| 25 # that are not used from other source files. | |
| 26 # | |
| 27 # Use it like this: | |
| 28 # | |
| 29 # $ ./scripts/singleuse.pl lib/.libs/libcurl.a | |
| 30 # | |
| 31 # Be aware that it might cause false positives due to various build options. | |
| 32 # | |
| 33 | |
| 34 my $file = $ARGV[0]; | |
| 35 | |
| 36 my %wl = ( | |
| 37 'Curl_none_cert_status_request' => 'multiple TLS backends', | |
| 38 'Curl_none_check_cxn' => 'multiple TLS backends', | |
| 39 'Curl_none_cleanup' => 'multiple TLS backends', | |
| 40 'Curl_none_close_all' => 'multiple TLS backends', | |
| 41 'Curl_none_data_pending' => 'multiple TLS backends', | |
| 42 'Curl_none_engines_list' => 'multiple TLS backends', | |
| 43 'Curl_none_init' => 'multiple TLS backends', | |
| 44 'Curl_none_md5sum' => 'multiple TLS backends', | |
| 45 'Curl_none_random' => 'multiple TLS backends', | |
| 46 'Curl_none_session_free' => 'multiple TLS backends', | |
| 47 'Curl_none_set_engine' => 'multiple TLS backends', | |
| 48 'Curl_none_set_engine_default' => 'multiple TLS backends', | |
| 49 'Curl_none_shutdown' => 'multiple TLS backends', | |
| 50 'Curl_multi_dump' => 'debug build only', | |
| 51 'Curl_parse_port' => 'UNITTEST', | |
| 52 'Curl_shuffle_addr' => 'UNITTEST', | |
| 53 'de_cleanup' => 'UNITTEST', | |
| 54 'doh_decode' => 'UNITTEST', | |
| 55 'doh_encode' => 'UNITTEST', | |
| 56 'Curl_auth_digest_get_pair' => 'by digest_sspi', | |
| 57 'curlx_uztoso' => 'cmdline tool use', | |
| 58 'curlx_uztoul' => 'by krb5_sspi', | |
| 59 'curlx_uitous' => 'by schannel', | |
| 60 'Curl_islower' => 'by curl_fnmatch', | |
| 61 'getaddressinfo' => 'UNITTEST', | |
| 62 ); | |
| 63 | |
| 64 my %api = ( | |
| 65 'curl_easy_cleanup' => 'API', | |
| 66 'curl_easy_duphandle' => 'API', | |
| 67 'curl_easy_escape' => 'API', | |
| 68 'curl_easy_getinfo' => 'API', | |
| 69 'curl_easy_init' => 'API', | |
| 70 'curl_easy_pause' => 'API', | |
| 71 'curl_easy_perform' => 'API', | |
| 72 'curl_easy_recv' => 'API', | |
| 73 'curl_easy_reset' => 'API', | |
| 74 'curl_easy_send' => 'API', | |
| 75 'curl_easy_setopt' => 'API', | |
| 76 'curl_easy_strerror' => 'API', | |
| 77 'curl_easy_unescape' => 'API', | |
| 78 'curl_easy_upkeep' => 'API', | |
| 79 'curl_escape' => 'API', | |
| 80 'curl_formadd' => 'API', | |
| 81 'curl_formfree' => 'API', | |
| 82 'curl_formget' => 'API', | |
| 83 'curl_free' => 'API', | |
| 84 'curl_getdate' => 'API', | |
| 85 'curl_getenv' => 'API', | |
| 86 'curl_global_cleanup' => 'API', | |
| 87 'curl_global_init' => 'API', | |
| 88 'curl_global_init_mem' => 'API', | |
| 89 'curl_global_sslset' => 'API', | |
| 90 'curl_maprintf' => 'API', | |
| 91 'curl_mfprintf' => 'API', | |
| 92 'curl_mime_addpart' => 'API', | |
| 93 'curl_mime_data' => 'API', | |
| 94 'curl_mime_data_cb' => 'API', | |
| 95 'curl_mime_encoder' => 'API', | |
| 96 'curl_mime_filedata' => 'API', | |
| 97 'curl_mime_filename' => 'API', | |
| 98 'curl_mime_free' => 'API', | |
| 99 'curl_mime_headers' => 'API', | |
| 100 'curl_mime_init' => 'API', | |
| 101 'curl_mime_name' => 'API', | |
| 102 'curl_mime_subparts' => 'API', | |
| 103 'curl_mime_type' => 'API', | |
| 104 'curl_mprintf' => 'API', | |
| 105 'curl_msnprintf' => 'API', | |
| 106 'curl_msprintf' => 'API', | |
| 107 'curl_multi_add_handle' => 'API', | |
| 108 'curl_multi_assign' => 'API', | |
| 109 'curl_multi_cleanup' => 'API', | |
| 110 'curl_multi_fdset' => 'API', | |
| 111 'curl_multi_info_read' => 'API', | |
| 112 'curl_multi_init' => 'API', | |
| 113 'curl_multi_perform' => 'API', | |
| 114 'curl_multi_remove_handle' => 'API', | |
| 115 'curl_multi_setopt' => 'API', | |
| 116 'curl_multi_socket' => 'API', | |
| 117 'curl_multi_socket_action' => 'API', | |
| 118 'curl_multi_socket_all' => 'API', | |
| 119 'curl_multi_strerror' => 'API', | |
| 120 'curl_multi_timeout' => 'API', | |
| 121 'curl_multi_wait' => 'API', | |
| 122 'curl_mvaprintf' => 'API', | |
| 123 'curl_mvfprintf' => 'API', | |
| 124 'curl_mvprintf' => 'API', | |
| 125 'curl_mvsnprintf' => 'API', | |
| 126 'curl_mvsprintf' => 'API', | |
| 127 'curl_pushheader_byname' => 'API', | |
| 128 'curl_pushheader_bynum' => 'API', | |
| 129 'curl_share_cleanup' => 'API', | |
| 130 'curl_share_init' => 'API', | |
| 131 'curl_share_setopt' => 'API', | |
| 132 'curl_share_strerror' => 'API', | |
| 133 'curl_slist_append' => 'API', | |
| 134 'curl_slist_free_all' => 'API', | |
| 135 'curl_strequal' => 'API', | |
| 136 'curl_strnequal' => 'API', | |
| 137 'curl_unescape' => 'API', | |
| 138 'curl_url' => 'API', | |
| 139 'curl_url_cleanup' => 'API', | |
| 140 'curl_url_dup' => 'API', | |
| 141 'curl_url_get' => 'API', | |
| 142 'curl_url_set' => 'API', | |
| 143 'curl_version' => 'API', | |
| 144 'curl_version_info' => 'API', | |
| 145 | |
| 146 # the following functions are provided globally in debug builds | |
| 147 'curl_easy_perform_ev' => 'debug-build', | |
| 148 ); | |
| 149 | |
| 150 open(N, "nm $file|") || | |
| 151 die; | |
| 152 | |
| 153 my %exist; | |
| 154 my %uses; | |
| 155 my $file; | |
| 156 while (<N>) { | |
| 157 my $l = $_; | |
| 158 chomp $l; | |
| 159 | |
| 160 if($l =~ /^([0-9a-z_-]+)\.o:/) { | |
| 161 $file = $1; | |
| 162 } | |
| 163 if($l =~ /^([0-9a-f]+) T (.*)/) { | |
| 164 my ($name)=($2); | |
| 165 #print "Define $name in $file\n"; | |
| 166 $file =~ s/^libcurl_la-//; | |
| 167 $exist{$name} = $file; | |
| 168 } | |
| 169 elsif($l =~ /^ U (.*)/) { | |
| 170 my ($name)=($1); | |
| 171 #print "Uses $name in $file\n"; | |
| 172 $uses{$name} .= "$file, "; | |
| 173 } | |
| 174 } | |
| 175 close(N); | |
| 176 | |
| 177 my $err; | |
| 178 for(sort keys %exist) { | |
| 179 #printf "%s is defined in %s, used by: %s\n", $_, $exist{$_}, $uses{$_}; | |
| 180 if(!$uses{$_}) { | |
| 181 # this is a symbol with no "global" user | |
| 182 if($_ =~ /^curl_/) { | |
| 183 if(!$api{$_}) { | |
| 184 # not present in the API, or for debug-builds | |
| 185 print STDERR "Bad curl-prefix: $_\n"; | |
| 186 $err++; | |
| 187 } | |
| 188 } | |
| 189 elsif($_ =~ /^curl_dbg_/) { | |
| 190 # we ignore the memdebug symbols | |
| 191 } | |
| 192 elsif($wl{$_}) { | |
| 193 #print "$_ is WL\n"; | |
| 194 } | |
| 195 else { | |
| 196 printf "%s is defined in %s, but not used outside\n", $_, $exist{$_}; | |
| 197 $err++; | |
| 198 } | |
| 199 } | |
| 200 elsif($_ =~ /^curl_/) { | |
| 201 # global prefix, make sure it is "blessed" | |
| 202 if(!$api{$_}) { | |
| 203 # not present in the API, or for debug-builds | |
| 204 print STDERR "Bad curl-prefix $_\n"; | |
| 205 $err++; | |
| 206 } | |
| 207 } | |
| 208 } | |
| 209 | |
| 210 exit $err; |
