1#!/usr/bin/env perl 2# *************************************************************************** 3# * _ _ ____ _ 4# * Project ___| | | | _ \| | 5# * / __| | | | |_) | | 6# * | (__| |_| | _ <| |___ 7# * \___|\___/|_| \_\_____| 8# * 9# * Copyright (C) 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.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# * SPDX-License-Identifier: curl 23# * 24# *************************************************************************** 25 26use POSIX qw(strftime); 27my @ts; 28if (defined($ENV{SOURCE_DATE_EPOCH})) { 29 @ts = localtime($ENV{SOURCE_DATE_EPOCH}); 30} else { 31 @ts = localtime; 32} 33my $date = strftime "%b %e, %Y", @ts; 34my $year = strftime "%Y", @ts; 35 36print <<HEADER 37--- 38c: Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al. 39SPDX-License-Identifier: curl 40Title: libcurl-symbols 41Section: 3 42Source: libcurl 43Protocol: 44 - All 45See-also: 46 - libcurl (3) 47 - libcurl-easy (3) 48 - libcurl-multi (3) 49 - libcurl-security (3) 50 - libcurl-thread (3) 51--- 52# libcurl symbols 53 54This man page details version information for public symbols provided in the 55libcurl header files. This lists the first version in which the symbol was 56introduced and for some symbols two additional information pieces: 57 58The first version in which the symbol is marked "deprecated" - meaning that 59since that version no new code should be written to use the symbol as it is 60marked for getting removed in a future. 61 62The last version that featured the specific symbol. Using the symbol in source 63code will make it no longer compile error-free after that specified version. 64 65This man page is automatically generated from the symbols-in-versions file. 66HEADER 67 ; 68 69sub nameref { 70 my ($n)=@_; 71 if($n =~ /^CURLOPT_/) { 72 if($n eq "CURLOPT_RTSPHEADER") { 73 $n = "CURLOPT_HTTPHEADER"; 74 } 75 elsif($n eq "CURLOPT_WRITEHEADER") { 76 $n = "CURLOPT_HEADERDATA"; 77 } 78 elsif($n eq "CURLOPT_WRITEINFO") { 79 ; # now obsolete 80 } 81 else { 82 return "$n(3)"; 83 } 84 } 85 elsif($n =~ /^CURLMOPT_/) { 86 return "$n(3)"; 87 } 88 elsif($n =~ /^CURLINFO_/) { 89 my %infotypes = ( 90 'CURLINFO_TEXT' => 1, 91 'CURLINFO_HEADER_IN' => 1, 92 'CURLINFO_HEADER_OUT' => 1, 93 'CURLINFO_DATA_IN' => 1, 94 'CURLINFO_DATA_OUT' => 1, 95 'CURLINFO_SSL_DATA_IN' => 1, 96 'CURLINFO_SSL_DATA_OUT' => 1, 97 ); 98 if($infotypes{$n}) { 99 return "CURLOPT_DEBUGFUNCTION(3)"; 100 } 101 } 102 elsif($n =~ /^CURLALTSVC_/) { 103 return "CURLOPT_ALTSVC_CTRL(3)"; 104 } 105 elsif($n =~ /^CURLAUTH_/) { 106 return "CURLOPT_HTTPAUTH(3)"; 107 } 108 elsif($n =~ /^CURLFORM_/) { 109 return "curl_formadd(3)"; 110 } 111 elsif($n =~ /^CURLKH/) { 112 return "CURLOPT_SSH_KEYFUNCTION(3)"; 113 } 114 elsif($n =~ /^CURLE_/) { 115 return "libcurl-errors(3)"; 116 } 117 elsif($n =~ /^CURLM_/) { 118 return "libcurl-errors(3)"; 119 } 120 elsif($n =~ /^CURLUE_/) { 121 return "libcurl-errors(3)"; 122 } 123 elsif($n =~ /^CURLHE_/) { 124 return "libcurl-errors(3)"; 125 } 126 elsif($n =~ /^CURLSHE_/) { 127 return "libcurl-errors(3)"; 128 } 129 elsif($n =~ /^CURLPROTO_/) { 130 return "CURLINFO_PROTOCOL(3)"; 131 } 132 elsif($n =~ /^CURLPX_/) { 133 return "CURLINFO_PROXY_ERROR(3)"; 134 } 135 elsif($n =~ /^CURLPROXY_/) { 136 return "CURLOPT_PROXYTYPE(3)"; 137 } 138 elsif($n =~ /^CURLSSLBACKEND_/) { 139 return "curl_global_sslset(3)"; 140 } 141 elsif($n =~ /^CURLSSLOPT_/) { 142 return "CURLOPT_SSL_OPTIONS(3)"; 143 } 144 elsif($n =~ /^CURLSSLSET_/) { 145 return "curl_global_sslset(3)"; 146 } 147 elsif($n =~ /^CURLUPART_/) { 148 return "curl_url_get(3)"; 149 } 150 elsif($n =~ /^CURLU_/) { 151 return "curl_url_get(3)"; 152 } 153 elsif($n =~ /^CURLVERSION_/) { 154 return "curl_version_info(3)"; 155 } 156 elsif($n =~ /^CURLSHOPT_/) { 157 if($n eq "CURLSHOPT_NONE") { 158 $n = "curl_share_setopt"; 159 } 160 return "$n(3)"; 161 } 162 elsif($n =~ /^CURLWS_/) { 163 return "curl_ws_send(3)"; 164 } 165 elsif($n =~ /^CURL_FORMADD_/) { 166 return "curl_formadd(3)"; 167 } 168 elsif($n =~ /^CURL_HTTPPOST_/) { 169 return "curl_formadd(3)"; 170 } 171 elsif($n =~ /^CURL_GLOBAL_/) { 172 return "curl_global_init(3)"; 173 } 174 elsif($n =~ /^CURL_HTTP_VERSION_/) { 175 return "CURLOPT_HTTP_VERSION(3)"; 176 } 177 elsif($n =~ /^CURL_LOCK_/) { 178 return "CURLSHOPT_SHARE(3)"; 179 } 180 elsif($n =~ /^CURL_SSLVERSION_/) { 181 return "CURLOPT_SSLVERSION(3)"; 182 } 183 elsif($n =~ /^CURL_VERSION_/) { 184 return "curl_version_info(3)"; 185 } 186 elsif($n =~ /^CURL_RTSPREQ_/) { 187 return "CURLOPT_RTSP_REQUEST(3)"; 188 } 189 elsif($n =~ /^CURLH_/) { 190 return "curl_easy_header(3)"; 191 } 192 elsif($n =~ /^CURL_TRAILERFUNC_/) { 193 return "CURLOPT_TRAILERFUNCTION(3)"; 194 } 195 elsif($n =~ /^CURLOT_/) { 196 return "curl_easy_option_next(3)"; 197 } 198 elsif($n =~ /^CURLFINFOFLAG_/) { 199 return "CURLOPT_CHUNK_BGN_FUNCTION(3)"; 200 } 201 elsif($n =~ /^CURLFILETYPE_/) { 202 return "CURLOPT_CHUNK_BGN_FUNCTION(3)"; 203 } 204 elsif($n =~ /^CURL_CHUNK_BGN_FUNC_/) { 205 return "CURLOPT_CHUNK_BGN_FUNCTION(3)"; 206 } 207 elsif($n =~ /^CURL_CHUNK_END_FUNC_/) { 208 return "CURLOPT_CHUNK_END_FUNCTION(3)"; 209 } 210 elsif($n =~ /^CURLSSH_AUTH_/) { 211 return "CURLOPT_SSH_AUTH_TYPES(3)"; 212 } 213 elsif($n =~ /^CURL_POLL_/) { 214 return "CURLMOPT_SOCKETFUNCTION(3)"; 215 } 216 elsif($n =~ /^CURLMSG_/) { 217 return "curl_multi_info_read(3)"; 218 } 219 elsif($n =~ /^CURLFTPAUTH_/) { 220 return "CURLOPT_FTPSSLAUTH(3)"; 221 } 222 elsif($n =~ /^CURLFTPMETHOD_/) { 223 return "CURLOPT_FTP_FILEMETHOD(3)"; 224 } 225 elsif($n =~ /^CURLFTPSSL_/) { 226 return "CURLOPT_USE_SSL(3)"; 227 } 228 elsif($n =~ /^CURLFTP_CREATE_/) { 229 return "CURLOPT_FTP_CREATE_MISSING_DIRS(3)"; 230 } 231 elsif($n =~ /^CURLGSSAPI_DELEGATION_/) { 232 return "CURLOPT_GSSAPI_DELEGATION(3)"; 233 } 234 elsif($n =~ /^CURLHEADER_/) { 235 return "CURLOPT_HEADEROPT(3)"; 236 } 237 elsif($n =~ /^CURLHSTS_/) { 238 return "CURLOPT_HSTS_CTRL(3)"; 239 } 240 elsif($n =~ /^CURLIOCMD_/) { 241 return "CURLOPT_IOCTLFUNCTION(3)"; 242 } 243 elsif($n =~ /^CURLIOE_/) { 244 return "CURLOPT_IOCTLFUNCTION(3)"; 245 } 246 elsif($n =~ /^CURLMIMEOPT_/) { 247 return "CURLOPT_MIME_OPTIONS(3)"; 248 } 249 elsif($n =~ /^CURLPAUSE_/) { 250 return "curl_easy_pause(3)"; 251 } 252 elsif($n =~ /^CURLPIPE_/) { 253 return "CURLMOPT_PIPELINING(3)"; 254 } 255 elsif($n =~ /^CURLSOCKTYPE_/) { 256 return "CURLOPT_SOCKOPTFUNCTION(3)"; 257 } 258 elsif($n =~ /^CURLSTS_/) { 259 return "CURLOPT_HSTSREADFUNCTION(3)"; 260 } 261 elsif($n =~ /^CURLUSESSL_/) { 262 return "CURLOPT_USE_SSL(3)"; 263 } 264 elsif($n =~ /^CURL_CSELECT_/) { 265 return "curl_multi_socket_action(3)"; 266 } 267 elsif($n =~ /^CURL_FNMATCHFUNC_/) { 268 return "CURLOPT_FNMATCH_FUNCTION(3)"; 269 } 270 elsif($n =~ /^CURL_HET_/) { 271 return "CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS(3)"; 272 } 273 elsif($n =~ /^CURL_IPRESOLVE_/) { 274 return "CURLOPT_IPRESOLVE(3)"; 275 } 276 elsif($n =~ /^CURL_SEEKFUNC_/) { 277 return "CURLOPT_SEEKFUNCTION(3)"; 278 } 279 elsif($n =~ /^CURL_TIMECOND_/) { 280 return "CURLOPT_TIMECONDITION(3)"; 281 } 282 elsif($n =~ /^CURL_REDIR_POST_/) { 283 return "CURLOPT_POSTREDIR(3)"; 284 } 285} 286 287while(<STDIN>) { 288 if($_ =~ /^(CURL[A-Z0-9_.]*) *(.*)/i) { 289 my ($symbol, $rest)=($1,$2); 290 my ($intro, $dep, $rem); 291 if($rest =~ s/^([0-9.]*) *//) { 292 $intro = $1; 293 } 294 if($rest =~ s/^([0-9.]*) *//) { 295 $dep = $1; 296 } 297 if($rest =~ s/^- *([0-9.]*)//) { 298 $rem = $1; 299 } 300 print "\n## $symbol\nIntroduced in $intro."; 301 if($dep) { 302 print " Deprecated since $dep."; 303 } 304 if($rem) { 305 print " Last used in $rem."; 306 } 307 my $see = $rem || $dep ? "" : nameref($symbol); 308 if($see) { 309 print " See $see."; 310 } 311 print "\n"; 312 } 313} 314