summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Monnerat <patrick@monnerat.net>2018-11-05 15:37:23 +0100
committerPatrick Monnerat <patrick@monnerat.net>2018-11-05 15:37:23 +0100
commita77b640cc0ddace57758946881294db6f03db16e (patch)
tree68d64e26ddff18f2da490282a88a0824292d02b1
parent5bfaa86ceb3c2a9ac474a928e748c4a86a703b33 (diff)
downloadcurl-a77b640cc0ddace57758946881294db6f03db16e.tar.gz
OS400: add URL API ccsid wrappers and sync ILE/RPG bindings
-rw-r--r--packages/OS400/README.OS4001
-rw-r--r--packages/OS400/ccsidcurl.c46
-rw-r--r--packages/OS400/ccsidcurl.h6
-rw-r--r--packages/OS400/curl.inc.in140
4 files changed, 189 insertions, 4 deletions
diff --git a/packages/OS400/README.OS400 b/packages/OS400/README.OS400
index 2f9910377..967c26f68 100644
--- a/packages/OS400/README.OS400
+++ b/packages/OS400/README.OS400
@@ -75,6 +75,7 @@ options:
CURLOPT_CUSTOMREQUEST
CURLOPT_DEFAULT_PROTOCOL
CURLOPT_DNS_SERVERS
+ CURLOPT_DOH_URL
CURLOPT_EGDSOCKET
CURLOPT_ENCODING
CURLOPT_FTPPORT
diff --git a/packages/OS400/ccsidcurl.c b/packages/OS400/ccsidcurl.c
index af53f6761..b1d3ba845 100644
--- a/packages/OS400/ccsidcurl.c
+++ b/packages/OS400/ccsidcurl.c
@@ -1125,7 +1125,7 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...)
if(testwarn) {
testwarn = 0;
- if((int) STRING_LASTZEROTERMINATED != (int) STRING_TARGET + 1 ||
+ if((int) STRING_LASTZEROTERMINATED != (int) STRING_DOH + 1 ||
(int) STRING_LAST != (int) STRING_COPYPOSTFIELDS + 1)
curl_mfprintf(stderr,
"*** WARNING: curl_easy_setopt_ccsid() should be reworked ***\n");
@@ -1147,6 +1147,7 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...)
case CURLOPT_CUSTOMREQUEST:
case CURLOPT_DEFAULT_PROTOCOL:
case CURLOPT_DNS_SERVERS:
+ case CURLOPT_DOH_URL:
case CURLOPT_EGDSOCKET:
case CURLOPT_ENCODING:
case CURLOPT_FTPPORT:
@@ -1424,3 +1425,46 @@ curl_mime_data_ccsid(curl_mimepart *part,
free(s);
return result;
}
+
+CURLUcode
+curl_url_get_ccsid(CURLU *handle, CURLUPart what, char **part,
+ unsigned int flags, unsigned int ccsid)
+
+{
+ char *s = (char *)NULL;
+ CURLUcode result;
+
+ if(!part)
+ return CURLUE_BAD_PARTPOINTER;
+
+ *part = (char *)NULL;
+ result = curl_url_get(handle, what, &s, flags);
+ if(result == CURLUE_OK) {
+ if(s) {
+ *part = dynconvert(ccsid, s, -1, ccsid, ASCII_CCSID);
+ if(!*part)
+ result = CURLUE_OUT_OF_MEMORY;
+ }
+ if(s)
+ free(s);
+ return result;
+}
+
+CURLUcode
+curl_url_set_ccsid(CURLU *handle, CURLUPart what, const char *part,
+ unsigned int flags, unsigned int ccsid)
+
+{
+ char *s = (char *)NULL;
+ CURLUcode result;
+
+ if(part) {
+ s = dynconvert(ASCII_CCSID, part, -1, ccsid);
+ if(!s)
+ return CURLUE_OUT_OF_MEMORY;
+ }
+ result = curl_url_set(handle, what, s, flags);
+ if(s)
+ free(s);
+ return result;
+}
diff --git a/packages/OS400/ccsidcurl.h b/packages/OS400/ccsidcurl.h
index a65dfbc2a..895db7002 100644
--- a/packages/OS400/ccsidcurl.h
+++ b/packages/OS400/ccsidcurl.h
@@ -85,5 +85,11 @@ CURL_EXTERN CURLcode curl_mime_filedata_ccsid(curl_mimepart *part,
CURL_EXTERN CURLcode curl_mime_data_ccsid(curl_mimepart *part,
const char *data, size_t datasize,
unsigned int ccsid);
+CURL_EXTERN CURLUcode curl_url_get_ccsid(CURLU *handle, CURLUPart what,
+ char **part, unsigned int flags,
+ unsigned int ccsid);
+CURL_EXTERN CURLUcode curl_url_set_ccsid(CURLU *handle, CURLUPart what,
+ const char *part, unsigned int flags,
+ unsigned int ccsid);
#endif
diff --git a/packages/OS400/curl.inc.in b/packages/OS400/curl.inc.in
index 2cf7899bd..5dd052848 100644
--- a/packages/OS400/curl.inc.in
+++ b/packages/OS400/curl.inc.in
@@ -369,6 +369,27 @@
d CURL_WAIT_POLLOUT...
d c X'0004'
*
+ d CURLU_DEFAULT_PORT...
+ d c X'00000001'
+ d CURLU_NO_DEFAULT_PORT...
+ d c X'00000002'
+ d CURLU_DEFAULT_SCHEME...
+ d c X'00000004'
+ d CURLU_NON_SUPPORT_SCHEME...
+ d c X'00000008'
+ d CURLU_PATH_AS_IS...
+ d c X'00000010'
+ d CURLU_DISALLOW_USER...
+ d c X'00000020'
+ d CURLU_URLDECODE...
+ d c X'00000040'
+ d CURLU_URLENCODE...
+ d c X'00000080'
+ d CURLU_APPENDQUERY...
+ d c X'00000100'
+ d CURLU_GUESS_SCHEME...
+ d c X'00000200'
+ *
**************************************************************************
* Types
**************************************************************************
@@ -480,7 +501,7 @@
d c 49
d CURLE_OBSOLETE50...
d c 50
- d CURLE_PEER_FAILED_VERIFICATION...
+ d CURLE_OBSOLETE51...
d c 51
d CURLE_GOT_NOTHING...
d c 52
@@ -498,7 +519,7 @@
d c 58
d CURLE_SSL_CIPHER...
d c 59
- d CURLE_SSL_CACERT...
+ d CURLE_PEER_FAILED_VERIFICATION...
d c 60
d CURLE_BAD_CONTENT_ENCODING...
d c 61
@@ -565,6 +586,9 @@
d CURLE_HTTP2_STREAM...
d c 92
*
+ d CURLE_SSL_CACERT...
+ d c 60
+ *
/if not defined(CURL_NO_OLDIES)
d CURLE_URL_MALFORMAT_USER...
d c 4
@@ -727,6 +751,12 @@
d CURLSSLOPT_NO_REVOKE...
d c X'0002'
*
+ d CURL_HET_DEFAULT...
+ d c 200
+ *
+ d CURL_UPKEEP_INTERVAL_DEFAULT...
+ d c 60000
+ *
/if not defined(CURL_NO_OLDIES)
d curl_ftpssl s like(curl_usessl)
d based(######ptr######)
@@ -1348,6 +1378,12 @@
d c 10277
d CURLOPT_DISALLOW_USERNAME_IN_URL...
d c 00278
+ d CURLOPT_DOH_URL...
+ d c 10279
+ d CURLOPT_UPLOAD_BUFFERSIZE...
+ d c 00280
+ d CURLOPT_UPKEEP_INTERVAL_MS...
+ d c 00281
*
/if not defined(CURL_NO_OLDIES)
d CURLOPT_FILE c 10001
@@ -1804,7 +1840,64 @@
d c 12
d CURL_RTSPREQ_LAST...
d c 13
-
+ *
+ d CURLUcode s 10i 0 based(######ptr######) Enum
+ d CURLUE_OK c 0
+ d CURLUE_BAD_HANDLE...
+ d c 1
+ d CURLUE_BAD_PARTPOINTER...
+ d c 2
+ d CURLUE_MALFORMED_INPUT...
+ d c 3
+ d CURLUE_BAD_PORT_NUMBER...
+ d c 4
+ d CURLUE_UNSUPPORTED_SCHEME...
+ d c 5
+ d CURLUE_URLDECODE...
+ d c 6
+ d CURLUE_OUT_OF_MEMORY...
+ d c 7
+ d CURLUE_USER_NOT_ALLOWED...
+ d c 8
+ d CURLUE_UNKNOWN_PART...
+ d c 9
+ d CURLUE_NO_SCHEME...
+ d c 10
+ d CURLUE_NO_USER...
+ d c 11
+ d CURLUE_NO_PASSWORD...
+ d c 12
+ d CURLUE_NO_OPTIONS...
+ d c 13
+ d CURLUE_NO_HOST...
+ d c 14
+ d CURLUE_NO_PORT...
+ d c 15
+ d CURLUE_NO_QUERY...
+ d c 16
+ d CURLUE_NO_FRAGMENT...
+ d c 17
+ *
+ d CURLUPart s 10i 0 based(######ptr######) Enum
+ d CURLUPART_URL c 0
+ d CURLUPART_SCHEME...
+ d c 1
+ d CURLUPART_USER...
+ d c 2
+ d CURLUPART_PASSWORD...
+ d c 3
+ d CURLUPART_OPTIONS...
+ d c 4
+ d CURLUPART_HOST...
+ d c 5
+ d CURLUPART_PORT...
+ d c 6
+ d CURLUPART_PATH...
+ d c 7
+ d CURLUPART_QUERY...
+ d c 8
+ d CURLUPART_FRAGMENT...
+ d c 9
*
* Renaming CURLMsg to CURL_Msg to avoid case-insensivity name clash.
*
@@ -2486,6 +2579,29 @@
d sockfd value like(curl_socket_t)
d sockp * value void *
*
+ d curl_url pr * extproc('curl_url') CURLU *
+ *
+ d curl_url_cleanup...
+ d pr extproc('curl_url_cleanup')
+ d handle * value CURLU *
+ *
+ d curl_url_dup pr * extproc('curl_url_dup') CURLU *
+ d in * value CURLU *
+ *
+ d curl_url_get pr extproc('curl_url_get')
+ d like(CURLUcode)
+ d handle * value CURLU *
+ d what value like(CURLUPart)
+ d part * char **
+ d flags 10u 0 value
+ *
+ d curl_url_set pr extproc('curl_url_set')
+ d like(CURLUcode)
+ d handle * value CURLU *
+ d what value like(CURLUPart)
+ d part * value options(*string)
+ d flags 10u 0 value
+ *
**************************************************************************
* CCSID wrapper procedure prototypes
**************************************************************************
@@ -2642,4 +2758,22 @@
d filename * value options(*string)
d ccsid 10u 0 value
*
+ d curl_url_get_ccsid...
+ d pr extproc('curl_url_get_ccsid')
+ d like(CURLUcode)
+ d handle * value CURLU *
+ d what value like(CURLUPart)
+ d part * char **
+ d flags 10u 0 value
+ d ccsid 10u 0 value
+ *
+ d curl_url_set_ccsid...
+ d pr extproc('curl_url_set_ccsid')
+ d like(CURLUcode)
+ d handle * value CURLU *
+ d what value like(CURLUPart)
+ d part * value options(*string)
+ d flags 10u 0 value
+ d ccsid 10u 0 value
+ *
/endif