From 32d4260c2d93503f035ee97e7eb92faf5c2ec6ae Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Tue, 21 Jul 2015 16:36:34 +0200 Subject: os400: ebcdic wrappers for new functions. Upgrade ILE/RPG bindings. --- packages/OS400/README.OS400 | 14 +++++++++--- packages/OS400/ccsidcurl.c | 39 ++++++++++++++++++++++++++++++++ packages/OS400/ccsidcurl.h | 6 +++++ packages/OS400/curl.inc.in | 54 ++++++++++++++++++++++++++++++++++++++++++++- packages/OS400/makefile.sh | 2 +- 5 files changed, 110 insertions(+), 5 deletions(-) (limited to 'packages/OS400') diff --git a/packages/OS400/README.OS400 b/packages/OS400/README.OS400 index 0cb1cf294..269ead33e 100644 --- a/packages/OS400/README.OS400 +++ b/packages/OS400/README.OS400 @@ -148,7 +148,7 @@ parameter/array boundary. Please note that CURLFORM_PTRCONTENTS and CURLFORM_BUFFERPTR are considered unconvertible strings and thus are NOT followed by a CCSID. -_ curl_easy_getinfo_ccsid +_ curl_easy_getinfo_ccsid() The following options are followed by a 'char * *' and a CCSID. Unlike curl_easy_getinfo(), the value returned in the pointer should be freed after use: @@ -169,6 +169,14 @@ CCSID. Returned structures sould be free'ed using curl_certinfo_free_all() after use. Other options are processed like in curl_easy_getinfo(). +_ curl_pushheader_bynum_cssid() and curl_pushheader_byname_ccsid() + Although the prototypes are self-explanatory, the returned string pointer +should be freed after use, as opposite to the non-ccsid versions of these +procedures. + Please note that HTTP2 is not (yet) implemented on OS/400, thus these +functions will always return NULL. + + Standard compilation environment does support neither autotools nor make; in fact, very few common utilities are available. As a consequence, the config-os400.h has been coded manually and the compilation scripts are @@ -265,14 +273,14 @@ _ Do not use original source include files unless you know what you are doing. ILE/RPG support: Since 95% of the OS/400 programmers use ILE/RPG exclusively, a definition - /COPY member is provided for this language. To include all libcurl + /INCLUDE member is provided for this language. To include all libcurl definitions in an ILE/RPG module, line h bnddir('CURL/CURL') must figure in the program header, and line - d/copy curl/h,curl.inc + d/include curl/h,curl.inc in the global data section of the module's source code. diff --git a/packages/OS400/ccsidcurl.c b/packages/OS400/ccsidcurl.c index a903fe34a..7b7607130 100644 --- a/packages/OS400/ccsidcurl.c +++ b/packages/OS400/ccsidcurl.c @@ -1278,3 +1278,42 @@ curl_form_long_value(long value) return (char *) value; } + + +char * +curl_pushheader_bynum_cssid(struct curl_pushheaders *h, + size_t num, unsigned int ccsid) + +{ + char *d = (char *) NULL; + char *s = curl_pushheader_bynum(h, num); + + if(s) + d = dynconvert(ccsid, s, -1, ASCII_CCSID); + + return d; +} + + +char * +curl_pushheader_byname_ccsid(struct curl_pushheaders *h, const char *header, + unsigned int ccsidin, unsigned int ccsidout) + +{ + char *d = (char *) NULL; + char *s; + + if(header) { + header = dynconvert(ASCII_CCSID, header, -1, ccsidin); + + if(header) { + s = curl_pushheader_byname(h, header); + free((char *) header); + + if(s) + d = dynconvert(ccsidout, s, -1, ASCII_CCSID); + } + } + + return d; +} diff --git a/packages/OS400/ccsidcurl.h b/packages/OS400/ccsidcurl.h index 3d1fe7949..cb15cced8 100644 --- a/packages/OS400/ccsidcurl.h +++ b/packages/OS400/ccsidcurl.h @@ -61,5 +61,11 @@ CURL_EXTERN int curl_formget_ccsid(struct curl_httppost * form, void * arg, unsigned int ccsid); CURL_EXTERN CURLcode curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...); CURL_EXTERN void curl_certinfo_free_all(struct curl_certinfo *info); +CURL_EXTERN char *curl_pushheader_bynum_cssid(struct curl_pushheaders *h, + size_t num, unsigned int ccsid); +CURL_EXTERN char *curl_pushheader_byname_ccsid(struct curl_pushheaders *h, + const char *header, + unsigned int ccsidin, + unsigned int ccsidout); #endif diff --git a/packages/OS400/curl.inc.in b/packages/OS400/curl.inc.in index 2bbf6b0ff..1221015e5 100644 --- a/packages/OS400/curl.inc.in +++ b/packages/OS400/curl.inc.in @@ -221,6 +221,8 @@ d CURL_HTTP_VERSION_1_1... d c 2 d CURL_HTTP_VERSION_2_0... + d c 3 + d CURL_HTTP_VERSION_2... d c 3 * d CURL_NETRC_IGNORED... @@ -276,6 +278,9 @@ d CURL_CSELECT_ERR... d c X'00000004' * + d CURL_PUSH_OK c 0 + d CURL_PUSH_DENY c 1 + * d CURLPAUSE_RECV c X'00000001' d CURLPAUSE_RECV_CONT... d c X'00000000' @@ -676,7 +681,9 @@ d c 3 * d CURLSSLOPT_ALLOW_BEAST... - d c 1 + d c X'0001' + d CURLSSLOPT_NO_REVOKE... + d c X'0002' * /if not defined(CURL_NO_OLDIES) d curl_ftpssl s like(curl_usessl) @@ -1215,6 +1222,8 @@ d c 10235 d CURLOPT_SERVICE_NAME... d c 10236 + d CURLOPT_PIPEWAIT... + d c 00237 * /if not defined(CURL_NO_OLDIES) d CURLOPT_FILE c 10001 @@ -1573,6 +1582,18 @@ d c 10012 d CURLMOPT_MAX_TOTAL_CONNECTIONS... d c 00013 + d CURLMOPT_PUSHFUNCTION... + d c 20014 + d CURLMOPT_PUSHDATA... + d c 10015 + * + * Bitmask bits for CURLMOPT_PIPELING. + * + d CURLPIPE_NOTHING... + d c x'00000000' + d CURLPIPE_HTTP1 c x'00000001' + d CURLPIPE_MULTIPLEX... + d c x'00000002' * * Public API enums for RTSP requests. * @@ -1789,6 +1810,12 @@ d s * based(######ptr######) procptr * d curl_socket_callback... + d s * based(######ptr######) procptr + * + d curl_multi_timer_callback... + d s * based(######ptr######) procptr + * + d curl_push_callback... d s * based(######ptr######) procptr * d curl_opensocket_callback... @@ -2106,6 +2133,16 @@ d pr * extproc('curl_multi_strerror') char * d code value like(CURLMcode) * + d curl_pushheader_bynum... + d pr * extproc('curl_pushheader_bynum') char * + d h * value curl_pushheaders * + d num 10u 0 value + * + d curl_pushheader_byname... + d pr * extproc('curl_pushheader_byname') char * + d h * value curl_pushheaders * + d header * value options(*string) const char * + * d curl_multi_socket... d pr extproc('curl_multi_socket') d like(CURLMcode) @@ -2273,4 +2310,19 @@ d objectarg * value options(*string: *nopass) d ccsid 10u 0 value options(*nopass) * + d curl_pushheader_bynum_ccsid... + d pr * extproc( char * + d 'curl_pushheader_bynum_ccsid') + d h * value curl_pushheaders * + d num 10u 0 value + d ccsid 10u 0 value + * + d curl_pushheader_byname_ccsid... + d pr * extproc( char * + d 'curl_pushheader_byname_ccsid') + d h * value curl_pushheaders * + d header * value options(*string) const char * + d ccsidin 10u 0 value + d ccsidout 10u 0 value + * /endif diff --git a/packages/OS400/makefile.sh b/packages/OS400/makefile.sh index d2b6bc98a..141d8778c 100644 --- a/packages/OS400/makefile.sh +++ b/packages/OS400/makefile.sh @@ -21,7 +21,7 @@ fi # Create the DOCS source file if it does not exist. if action_needed "${LIBIFSNAME}/DOCS.FILE" -then CMD="CRTSRCPF FILE(${TARGETLIB}/DOCS) RCDLEN(112)" +then CMD="CRTSRCPF FILE(${TARGETLIB}/DOCS) RCDLEN(240)" CMD="${CMD} CCSID(${TGTCCSID}) TEXT('Documentation texts')" system "${CMD}" fi -- cgit v1.2.3