OS400: fix and complete ILE/RPG binding

- Fix wrong definitions of CURL_ZERO_TERNINATED, curl_mime_data() and
  curl_mime_data_ccsid().

- Add recent definitions, in particular blob, header API and WebSockets
  API.

- Support for CURLVERSION_ELEVENTH.

- New functions for EBCDIC support.

Reflect these changes in README.OS400.

Closes https://github.com/curl/curl/pull/10994
This commit is contained in:
Patrick Monnerat 2023-04-18 01:48:45 +02:00 committed by Jay Satiro
parent a1fa2b30c0
commit faa04801db
2 changed files with 264 additions and 24 deletions

View File

@ -355,8 +355,9 @@ in the global data section of the module's source code.
No vararg procedure support exists in ILE/RPG: for this reason, the following No vararg procedure support exists in ILE/RPG: for this reason, the following
considerations apply: considerations apply:
_ Procedures curl_easy_setopt_long(), curl_easy_setopt_object(), _ Procedures curl_easy_setopt_long(), curl_easy_setopt_object(),
curl_easy_setopt_function() and curl_easy_setopt_offset() are all alias curl_easy_setopt_function(), curl_easy_setopt_offset() and
prototypes to curl_easy_setopt(), but with different parameter lists. curl_easy_setopt_blob() are all alias prototypes to curl_easy_setopt(), but
with different parameter lists.
_ Procedures curl_easy_getinfo_string(), curl_easy_getinfo_long(), _ Procedures curl_easy_getinfo_string(), curl_easy_getinfo_long(),
curl_easy_getinfo_double(), curl_easy_getinfo_slist(), curl_easy_getinfo_double(), curl_easy_getinfo_slist(),
curl_easy_getinfo_ptr(), curl_easy_getinfo_socket() and curl_easy_getinfo_ptr(), curl_easy_getinfo_socket() and
@ -365,6 +366,11 @@ _ Procedures curl_easy_getinfo_string(), curl_easy_getinfo_long(),
_ Procedures curl_multi_setopt_long(), curl_multi_setopt_object(), _ Procedures curl_multi_setopt_long(), curl_multi_setopt_object(),
curl_multi_setopt_function() and curl_multi_setopt_offset() are all alias curl_multi_setopt_function() and curl_multi_setopt_offset() are all alias
prototypes to curl_multi_setopt(), but with different parameter lists. prototypes to curl_multi_setopt(), but with different parameter lists.
_ Procedures curl_share_setopt_int(), curl_share_setopt_ptr() and
curl_share_setopt_proc() are all alias prototypes to curl_share_setopt,
but with different parameter lists.
_ Procedure curl_easy_setopt_blob_ccsid() is an alias of
curl_easy_setopt_ccsid() supporting blob encoding conversion.
_ The prototype of procedure curl_formadd() allows specifying a pointer option _ The prototype of procedure curl_formadd() allows specifying a pointer option
and the CURLFORM_END option. This makes possible to use an option array and the CURLFORM_END option. This makes possible to use an option array
without any additional definition. If some specific incompatible argument without any additional definition. If some specific incompatible argument
@ -372,5 +378,6 @@ _ The prototype of procedure curl_formadd() allows specifying a pointer option
alias. The same applies to curl_formadd_ccsid() too. alias. The same applies to curl_formadd_ccsid() too.
Since RPG cannot cast a long to a pointer, procedure curl_form_long_value() Since RPG cannot cast a long to a pointer, procedure curl_form_long_value()
is provided for that purpose: this allows storing a long value in the curl_forms is provided for that purpose: this allows storing a long value in the
array. curl_forms array. Please note the form API is deprecated and the MIME API
should be used instead.

View File

@ -184,10 +184,17 @@
* *
d CURL_WRITEFUNC_PAUSE... d CURL_WRITEFUNC_PAUSE...
d c X'10000001' d c X'10000001'
d CURL_WRITEFUNC_ERROR...
d c X'FFFFFFFF'
* *
d CURL_TRAILERFUNC_OK... d CURL_TRAILERFUNC_OK...
d c 0 d c 0
d CURL_TRAILERFUNC_ABORT... d CURL_TRAILERFUNC_ABORT...
d c 1
*
d CURL_PREREQFUNC_OK...
d c 0
d CURL_PREREQFUNC_ABORT...
d c 1 d c 1
* *
d CURLAUTH_NONE c X'00000000' d CURLAUTH_NONE c X'00000000'
@ -278,6 +285,10 @@
d c 4 d c 4
d CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE... d CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE...
d c 5 d c 5
d CURL_HTTP_VERSION_3...
d c 30
d CURL_HTTP_VERSION_3ONLY...
d c 31
* *
d CURL_NETRC_IGNORED... d CURL_NETRC_IGNORED...
d c 0 d c 0
@ -330,7 +341,7 @@
d c 7 d c 7
* *
d CURL_ZERO_TERMINATED... d CURL_ZERO_TERMINATED...
d c -1 d c X'FFFFFFFF'
* *
d CURL_POLL_NONE c 0 d CURL_POLL_NONE c 0
d CURL_POLL_IN c 1 d CURL_POLL_IN c 1
@ -340,6 +351,10 @@
d CURL_POLL_REMOVE... d CURL_POLL_REMOVE...
d c 4 d c 4
* *
d CURL_BLOB_NOCOPY...
d c 0
d CURL_BLOB_COPY c 1
*
d CURL_CSELECT_IN... d CURL_CSELECT_IN...
d c X'00000001' d c X'00000001'
d CURL_CSELECT_OUT... d CURL_CSELECT_OUT...
@ -424,8 +439,29 @@
d c X'00000200' d c X'00000200'
d CURLU_NO_AUTHORITY... d CURLU_NO_AUTHORITY...
d c X'00000400' d c X'00000400'
d CURLU_ALLOW_SPACE...
d c X'00000800'
d CURLU_PUNYCODE...
d c X'00001000'
* *
d CURLOT_FLAG_ALIAS... d CURLOT_FLAG_ALIAS...
d c X'00000001'
*
d CURLH_HEADER c X'00000001'
d CURLH_TRAILER c X'00000002'
d CURLH_CONNECT c X'00000004'
d CURLH_1XX c X'00000008'
d CURLH_PSEUDO c X'00000010'
*
d CURLWS_TEXT c X'00000001'
d CURLWS_BINARY c X'00000002'
d CURLWS_CONT c X'00000004'
d CURLWS_CLOSE c X'00000008'
d CURLWS_PING c X'00000010'
d CURLWS_OFFSET c X'00000020'
d CURLWS_PONG c X'00000040'
*
d CURLWS_RAW_MODE...
d c X'00000001' d c X'00000001'
* *
************************************************************************** **************************************************************************
@ -533,7 +569,7 @@
d c 47 d c 47
d CURLE_UNKNOWN_OPTION... d CURLE_UNKNOWN_OPTION...
d c 48 d c 48
d CURLE_TELNET_OPTION_SYNTAX... d CURLE_SETOPT_OPTION_SYNTAX...
d c 49 d c 49
d CURLE_OBSOLETE50... d CURLE_OBSOLETE50...
d c 50 d c 50
@ -559,7 +595,7 @@
d c 60 d c 60
d CURLE_BAD_CONTENT_ENCODING... d CURLE_BAD_CONTENT_ENCODING...
d c 61 d c 61
d CURLE_LDAP_INVALID_URL... d CURLE_OBSOLETE62...
d c 62 d c 62
d CURLE_FILESIZE_EXCEEDED... d CURLE_FILESIZE_EXCEEDED...
d c 63 d c 63
@ -585,20 +621,18 @@
d c 73 d c 73
d CURLE_TFTP_NOSUCHUSER... d CURLE_TFTP_NOSUCHUSER...
d c 74 d c 74
d CURLE_CONV_FAILED... d CURLE_OBSOLETE75...
d c 75 d c 75
d CURLE_CONV_REQD... d CURLE_OBSOLETE76...
d c 76 d c 76
d CURLE_SSL_CACERT_BADFILE... d CURLE_SSL_CACERT_BADFILE...
d c 77 d c 77
d CURLE_REMOTE_FILE_NOT_FOUND... d CURLE_REMOTE_FILE_NOT_FOUND...
d c 78 d c 78
d CURLE_SSH... d CURLE_SSH c 79
d c 79
d CURLE_SSL_SHUTDOWN_FAILED... d CURLE_SSL_SHUTDOWN_FAILED...
d c 80 d c 80
d CURLE_AGAIN... d CURLE_AGAIN c 81
d c 81
d CURLE_SSL_CRL_BADFILE... d CURLE_SSL_CRL_BADFILE...
d c 82 d c 82
d CURLE_SSL_ISSUER_ERROR... d CURLE_SSL_ISSUER_ERROR...
@ -625,12 +659,14 @@
d c 93 d c 93
d CURLE_AUTH_ERROR... d CURLE_AUTH_ERROR...
d c 94 d c 94
d CURLE_HTTP3... d CURLE_HTTP3 c 95
d c 95
d CURLE_QUIC_CONNECT_ERROR... d CURLE_QUIC_CONNECT_ERROR...
d c 96 d c 96
d CURLE_PROXY... d CURLE_PROXY c 97
d c 97 d CURLE_SSL_CLIENTCERT...
d c 98
d CURLE_UNRECOVERABLE_POLL...
d c 99
* *
/if not defined(CURL_NO_OLDIES) /if not defined(CURL_NO_OLDIES)
d CURLE_URL_MALFORMAT_USER... d CURLE_URL_MALFORMAT_USER...
@ -679,6 +715,8 @@
d c 46 d c 46
d CURLE_UNKNOWN_TELNET_OPTION... d CURLE_UNKNOWN_TELNET_OPTION...
d c 48 d c 48
d CURLE_TELNET_OPTION_SYNTAX...
d c 49
d CURLE_OBSOLETE... d CURLE_OBSOLETE...
d c 50 d c 50
d CURLE_SHARE_IN_USE... d CURLE_SHARE_IN_USE...
@ -687,12 +725,18 @@
d c 60 d c 60
d CURLE_SSL_PEER_CERTIFICATE... d CURLE_SSL_PEER_CERTIFICATE...
d c 60 d c 60
d CURLE_LDAP_INVALID_URL...
d c 62
d CURLE_FTP_SSL_FAILED... d CURLE_FTP_SSL_FAILED...
d c 64 d c 64
d CURLE_TFTP_DISKFULL... d CURLE_TFTP_DISKFULL...
d c 70 d c 70
d CURLE_TFTP_EXISTS... d CURLE_TFTP_EXISTS...
d c 73 d c 73
d CURLE_CONV_FAILED...
d c 75
d CURLE_CONV_REQD...
d c 76
d CURLE_ALREADY_COMPLETE... d CURLE_ALREADY_COMPLETE...
d c 99999 d c 99999
/endif /endif
@ -821,6 +865,8 @@
d c 1 d c 1
d CURLPROXY_HTTPS... d CURLPROXY_HTTPS...
d c 2 d c 2
d CURLPROXY_HTTPS2...
d c 3
d CURLPROXY_SOCKS4... d CURLPROXY_SOCKS4...
d c 4 d c 4
d CURLPROXY_SOCKS5... d CURLPROXY_SOCKS5...
@ -1208,8 +1254,6 @@
d c 00111 d c 00111
d CURLOPT_SERVER_RESPONSE_TIMEOUT... d CURLOPT_SERVER_RESPONSE_TIMEOUT...
d c 00112 d c 00112
d CURLOPT_SERVER_RESPONSE_TIMEOUT... Alias
d c 00112
d CURLOPT_IPRESOLVE... d CURLOPT_IPRESOLVE...
d c 00113 d c 00113
d CURLOPT_MAXFILESIZE... d CURLOPT_MAXFILESIZE...
@ -1587,10 +1631,30 @@
d c 40309 d c 40309
d CURLOPT_PROXY_CAINFO_BLOB... d CURLOPT_PROXY_CAINFO_BLOB...
d c 40310 d c 40310
d CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256...
d c 10311
d CURLOPT_PREREQFUNCTION...
d c 20312
d CURLOPT_PREREQDATA...
d c 10313
d CURLOPT_MAXLIFETIME_CONN... d CURLOPT_MAXLIFETIME_CONN...
d c 00314 d c 00314
d CURLOPT_MIME_OPTIONS... d CURLOPT_MIME_OPTIONS...
d c 00315 d c 00315
d CURLOPT_SSH_HOSTKEYFUNCTION...
d c 20316
d CURLOPT_SSH_HOSTKEYDATA...
d c 10317
d CURLOPT_PROTOCOLS_STR...
d c 10318
d CURLOPT_REDIR_PROTOCOLS_STR...
d c 10319
d CURLOPT_WS_OPTIONS...
d c 00320
d CURLOPT_CA_CACHE_TIMEOUT...
d c 00321
d CURLOPT_QUICK_EXIT...
d c 00322
* *
/if not defined(CURL_NO_OLDIES) /if not defined(CURL_NO_OLDIES)
d CURLOPT_FILE c 10001 d CURLOPT_FILE c 10001
@ -1618,6 +1682,8 @@
d c 00119 d c 00119
d CURLOPT_POST301... d CURLOPT_POST301...
d c 00161 d c 00161
d CURLOPT_FTP_RESPONSE_TIMEOUT...
d c 00112
/endif /endif
* *
d CURLFORMcode s 10i 0 based(######ptr######) Enum d CURLFORMcode s 10i 0 based(######ptr######) Enum
@ -1820,6 +1886,10 @@
d c X'0020003B' d c X'0020003B'
d CURLINFO_REFERER... CURLINFO_STRING + 60 d CURLINFO_REFERER... CURLINFO_STRING + 60
d c X'0010003C' d c X'0010003C'
d CURLINFO_CAINFO... CURLINFO_STRING + 61
d c X'0010003D'
d CURLINFO_CAPATH... CURLINFO_STRING + 62
d c X'0010003E'
* *
d CURLINFO_HTTP_CODE... Old ...RESPONSE_CODE d CURLINFO_HTTP_CODE... Old ...RESPONSE_CODE
d c X'00200002' d c X'00200002'
@ -1857,10 +1927,12 @@
d CURLSSLBACKEND_RUSTLS... d CURLSSLBACKEND_RUSTLS...
d c 14 d c 14
* Aliases for clones. * Aliases for clones.
d CURLSSLBACKEND_LIBRESSL... d CURLSSLBACKEND_AWSLC...
d c 1 d c 1
d CURLSSLBACKEND_BORINGSSL... d CURLSSLBACKEND_BORINGSSL...
d c 1 d c 1
d CURLSSLBACKEND_LIBRESSL...
d c 1
d CURLSSLBACKEND_WOLFSSL... d CURLSSLBACKEND_WOLFSSL...
d c 6 d c 6
* *
@ -1893,8 +1965,10 @@
d c 5 d c 5
d CURL_LOCK_DATA_PSL... d CURL_LOCK_DATA_PSL...
d c 6 d c 6
d CURL_LOCK_DATA_LAST... d CURL_LOCK_DATA_HSTS...
d c 7 d c 7
d CURL_LOCK_DATA_LAST...
d c 8
* *
d curl_lock_access... d curl_lock_access...
d s 10i 0 based(######ptr######) Enum d s 10i 0 based(######ptr######) Enum
@ -1977,8 +2051,27 @@
d c 8 d c 8
d CURLVERSION_TENTH... d CURLVERSION_TENTH...
d c 9 d c 9
d CURLVERSION_ELEVENTH...
d c 10
d CURLVERSION_NOW... d CURLVERSION_NOW...
d c 9 CURLVERSION_TENTH d c 10 CURLVERSION_ELEVENTH
*
d CURLHcode s 10i 0 based(######ptr######) Enum
d CURLHE_OK c 0
d CURLHE_BADINDEX...
d c 1
d CURLHE_MISSING...
d c 2
d CURLHE_NOHEADERS...
d c 3
d CURLHE_NOREQUEST...
d c 4
d CURLHE_OUT_OF_MEMORY...
d c 5
d CURLHE_BAD_ARGUMENT...
d c 6
d CURLHE_NOT_BUILT_IN...
d c 7
* *
d curlsocktype s 10i 0 based(######ptr######) Enum d curlsocktype s 10i 0 based(######ptr######) Enum
d CURLSOCKTYPE_IPCXN... d CURLSOCKTYPE_IPCXN...
@ -2132,6 +2225,32 @@
d c 16 d c 16
d CURLUE_NO_FRAGMENT... d CURLUE_NO_FRAGMENT...
d c 17 d c 17
d CURLUE_NO_ZONEID...
d c 18
d CURLUE_BAD_FILE_URL...
d c 19
d CURLUE_BAD_FRAGMENT...
d c 20
d CURLUE_BAD_HOSTNAME...
d c 21
d CURLUE_BAD_IPV6...
d c 22
d CURLUE_BAD_LOGIN...
d c 23
d CURLUE_BAD_PASSWORD...
d c 24
d CURLUE_BAD_PATH...
d c 25
d CURLUE_BAD_QUERY...
d c 26
d CURLUE_BAD_SCHEME...
d c 27
d CURLUE_BAD_SLASHES...
d c 28
d CURLUE_BAD_USER...
d c 29
d CURLUE_LACKS_IDN...
d c 30
* *
d CURLUPart s 10i 0 based(######ptr######) Enum d CURLUPart s 10i 0 based(######ptr######) Enum
d CURLUPART_URL c 0 d CURLUPART_URL c 0
@ -2278,6 +2397,8 @@
d hyper_version... d hyper_version...
d * const char * d * const char *
d gsasl_version... d gsasl_version...
d * const char *
d feature_names...
d * const char * d * const char *
* *
d curl_certinfo ds based(######ptr######) d curl_certinfo ds based(######ptr######)
@ -2337,6 +2458,29 @@
d index 10u 0 size_t d index 10u 0 size_t
d total 10u 0 size_t d total 10u 0 size_t
* *
d curl_header ds based(######ptr######)
d qualified
d name * char *
d value * char *
d amount 10u 0 size_t
d index 10u 0 size_t
d origin 10u 0
d anchor * void *
*
d curl_blob ds based(######ptr######)
d qualified
d data * void *
d len 10u 0 size_t
d flags 10u 0
*
d curl_ws_frame ds based(######ptr######)
d qualified
d age 10i 0
d flags 10i 0
d offset like(curl_off_t)
d bytesleft like(curl_off_t)
d len 10u 0 size_t
*
d curl_formget_callback... d curl_formget_callback...
d s * based(######ptr######) procptr d s * based(######ptr######) procptr
* *
@ -2428,6 +2572,15 @@
d s * based(######ptr######) procptr d s * based(######ptr######) procptr
* *
d curl_hstswrite_callback... d curl_hstswrite_callback...
d s * based(######ptr######) procptr
*
d curl_prereq_callback...
d s * based(######ptr######) procptr
*
d curl_sshhostkeycallback...
d s * based(######ptr######) procptr
*
d curl_ws_write_callback...
d s * based(######ptr######) procptr d s * based(######ptr######) procptr
* *
************************************************************************** **************************************************************************
@ -2470,7 +2623,7 @@
d like(CURLcode) d like(CURLcode)
d part * value curl_mimepart * d part * value curl_mimepart *
d data * value options(*string) d data * value options(*string)
d datasize 10u 0 size_t d datasize 10u 0 value size_t
* *
d curl_mime_filedata... d curl_mime_filedata...
d pr extproc('curl_mime_filedata') d pr extproc('curl_mime_filedata')
@ -2669,6 +2822,14 @@
d curl * value CURL * d curl * value CURL *
d option value like(CURLoption) d option value like(CURLoption)
d offsetarg value like(curl_off_t) d offsetarg value like(curl_off_t)
d options(*nopass)
*
d curl_easy_setopt_blob...
d pr extproc('curl_easy_setopt')
d like(CURLcode)
d curl * value CURL *
d option value like(CURLoption)
d blob const likeds(curl_blob)
d options(*nopass) d options(*nopass)
* *
* *
@ -2940,6 +3101,43 @@
d pr * extproc('curl_easy_next') curl_easyoption * d pr * extproc('curl_easy_next') curl_easyoption *
d prev * value curl_easyoption * d prev * value curl_easyoption *
* *
d curl_ws_recv pr extproc('curl_ws_recv')
d like(CURLcode)
d curl * value CURL *
d buffer * value void *
d buflen 10u 0 value size_t
d recv 10u 0 size_t *
d metap likeds(curl_ws_frame)
*
d curl_ws_send pr extproc('curl_ws_send')
d like(CURLcode)
d curl * value CURL *
d buffer * value const void *
d buflen 10u 0 value size_t
d sent 10u 0 size_t *
d framesize like(curl_off_t)
d sendflags 10u 0 value
*
d curl_ws_meta pr * extproc('curl_ws_meta') curl_ws_frame *
d curl * value CURL *
*
d curl_easy_header...
d pr extproc('curl_easy_header') curl_header *
d like(CURLHcode)
d curl * value CURL *
d name * value options(*string) const char *
d index 10u 0 value size_t
d origin 10u 0 value
d request 10i 0 value
d hout * curl_header **
*
d curl_easy_nextheader...
d pr * extproc('curl_easy_nextheader') curl_header *
d curl * value CURL *
d origin 10u 0 value
d request 10i 0 value
d prev * value curl_header *
*
************************************************************************** **************************************************************************
* CCSID wrapper procedure prototypes * CCSID wrapper procedure prototypes
************************************************************************** **************************************************************************
@ -3036,6 +3234,15 @@
d curl * value CURL * d curl * value CURL *
d option value like(CURLoption) d option value like(CURLoption)
d objectarg * value options(*string: *nopass) d objectarg * value options(*string: *nopass)
d ccsid 10u 0 value options(*nopass)
*
d curl_easy_setopt_blob_ccsid...
d pr extproc('curl_easy_setopt_ccsid')
d like(CURLcode)
d curl * value CURL *
d option value like(CURLoption)
d blob const likeds(curl_blob)
d options(*nopass)
d ccsid 10u 0 value options(*nopass) d ccsid 10u 0 value options(*nopass)
* *
d curl_pushheader_bynum_ccsid... d curl_pushheader_bynum_ccsid...
@ -3086,7 +3293,7 @@
d like(CURLcode) d like(CURLcode)
d part * value curl_mimepart * d part * value curl_mimepart *
d data * value options(*string) d data * value options(*string)
d datasize 10u 0 size_t d datasize 10u 0 value size_t
d ccsid 10u 0 value d ccsid 10u 0 value
* *
d curl_mime_filedata_ccsid... d curl_mime_filedata_ccsid...
@ -3112,6 +3319,11 @@
d what value like(CURLUPart) d what value like(CURLUPart)
d part * value options(*string) d part * value options(*string)
d flags 10u 0 value d flags 10u 0 value
d ccsid 10u 0 value
*
d curl_url_strerror_ccsid...
d pr * extproc('curl_url_strerror_ccsid') const char *
d code value like(CURLUcode)
d ccsid 10u 0 value d ccsid 10u 0 value
* *
d curl_easy_option_by_name_ccsid... d curl_easy_option_by_name_ccsid...
@ -3124,6 +3336,27 @@
d pr * extproc( const char * d pr * extproc( const char *
d 'curl_easy_option_get_name_ccsid') d 'curl_easy_option_get_name_ccsid')
d option * value curl_easyoption * d option * value curl_easyoption *
d ccsid 10u 0 value
*
d curl_easy_header_ccsid...
d pr extproc('curl_easy_header_ccsid') curl_header *
d like(CURLHcode)
d curl * value CURL *
d name * value options(*string) const char *
d index 10u 0 value size_t
d origin 10u 0 value
d request 10i 0 value
d hout * curl_header **
d ccsid 10u 0 value
*
d curl_from_ccsid...
d pr * extproc('curl_from_ccsid') const char *
d s * value options(*string) const char *
d ccsid 10u 0 value
*
d curl_to_ccsid...
d pr * extproc('curl_to_ccsid') const char *
d s * value options(*string) const char *
d ccsid 10u 0 value d ccsid 10u 0 value
* *
/endif /endif