#!/usr/bin/env perl #*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 2017, Daniel Stenberg, , et al. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. The terms # are also available at https://curl.haxx.se/docs/copyright.html. # # You may opt to use, copy, modify, merge, publish, distribute and/or sell # copies of the Software, and permit persons to whom the Software is # furnished to do so, under the terms of the COPYING file. # # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY # KIND, either express or implied. # ########################################################################### # Usage: # cat ../../include/curl/curl.h | perl mk-lib1521.pl > lib1521.c # minimum and maximum 32 signed values my $minlong = - (1<<31)+1; my $maxlong = (1<<31); print <
, et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms * are also available at https://curl.haxx.se/docs/copyright.html. * * You may opt to use, copy, modify, merge, publish, distribute and/or sell * copies of the Software, and permit persons to whom the Software is * furnished to do so, under the terms of the COPYING file. * * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ***************************************************************************/ #include "test.h" #include "memdebug.h" /* This source code is generated by mk-lib1521.pl ! */ struct data { char *blaha; }; static int func(void) { return 0; } #define LO $minlong #define HI $maxlong #define OFF_VAL (curl_off_t) 3123123123 #define OFF_LO (curl_off_t) LO #define OFF_HI (curl_off_t) HI #define OFF_NO (curl_off_t) 0 int test(char *URL) { CURL *curl; CURL *dep; CURLSH *share; (void)URL; /* not used */ char errorbuffer[CURL_ERROR_SIZE]; curl_write_callback writecb; curl_read_callback readcb; curl_progress_callback progresscb; curl_write_callback headercb; curl_debug_callback debugcb; curl_ssl_ctx_callback ssl_ctx_cb; curl_ioctl_callback ioctlcb; void *conv_from_network_cb; void *conv_to_network_cb; void *conv_from_utf8_cb; curl_sockopt_callback sockoptcb; curl_opensocket_callback opensocketcb; curl_seek_callback seekcb; curl_sshkeycallback ssh_keycb; void *interleavecb; curl_chunk_bgn_callback chunk_bgn_cb; curl_chunk_end_callback chunk_end_cb; curl_fnmatch_callback fnmatch_cb; curl_closesocket_callback closesocketcb; curl_xferinfo_callback xferinfocb; char *stringpointerextra="moooo"; struct curl_slist *slist=NULL; struct curl_httppost *httppost=NULL; FILE *stream = stderr; dep = curl_easy_init(); share = curl_share_init(); curl = curl_easy_init(); if(curl) { struct data object; HEADER ; while() { if($_ =~ /^ CINIT\(([^ ]*), ([^ ]*), (\d*)\)/) { my ($name, $type, $val)=($1, $2, $3); my $w=" "; my $pref = "$w(void)curl_easy_setopt(curl, CURLOPT_$name,"; my $i = ' ' x (length($w) + 23); if($type eq "STRINGPOINT") { print "${pref} \"string\");\n"; print "${pref} NULL);\n"; } elsif($type eq "LONG") { print "${pref} 0L);\n"; print "${pref} 22L);\n"; print "${pref} LO);\n"; print "${pref} HI);\n"; } elsif($type eq "OBJECTPOINT") { if($name =~ /DEPENDS/) { print "${pref} dep);\n"; } elsif($name =~ "SHARE") { print "${pref} share);\n"; } elsif($name eq "ERRORBUFFER") { print "${pref} errorbuffer);\n"; } elsif(($name eq "POSTFIELDS") || ($name eq "COPYPOSTFIELDS")) { print "${pref} stringpointerextra);\n"; } elsif(($name eq "HTTPHEADER") || ($name eq "POSTQUOTE") || ($name eq "PREQUOTE") || ($name eq "HTTP200ALIASES") || ($name eq "TELNETOPTIONS") || ($name eq "MAIL_RCPT") || ($name eq "RESOLVE") || ($name eq "PROXYHEADER") || ($name eq "QUOTE")) { print "${pref} slist);\n"; } elsif($name eq "HTTPPOST") { print "${pref} httppost);\n"; } elsif($name eq "STDERR") { print "${pref} stream);\n"; } else { print "${pref} &object);\n"; } print "${pref} NULL);\n"; } elsif($type eq "FUNCTIONPOINT") { if($name =~ /([^ ]*)FUNCTION/) { my $l=lc($1); print "${pref}\n$i${l}cb);\n"; } else { print "${pref} &func);\n"; } print "${pref} NULL);\n"; } elsif($type eq "OFF_T") { # play conservative to work with 32bit curl_off_t print "${pref} OFF_NO);\n"; print "${pref} OFF_VAL);\n"; print "${pref} OFF_LO);\n"; } else { print "\n---- $type\n"; } } } print <