From 557cc55f6f398c0cd02571c077d5c73156820513 Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Thu, 23 Aug 2007 14:30:24 +0000 Subject: Porting library to OS/400 --- packages/OS400/ccsidcurl.c | 1099 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1099 insertions(+) create mode 100644 packages/OS400/ccsidcurl.c (limited to 'packages/OS400/ccsidcurl.c') diff --git a/packages/OS400/ccsidcurl.c b/packages/OS400/ccsidcurl.c new file mode 100644 index 000000000..978458f59 --- /dev/null +++ b/packages/OS400/ccsidcurl.c @@ -0,0 +1,1099 @@ +/*************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * Copyright (C) 1998 - 2007, 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 http://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. + * + * $Id$ + * + ***************************************************************************/ + +/* CCSID API wrappers for OS/400. */ + +#include +#include +#include +#include +#include + +#pragma enum(int) + +#include +#include "urldata.h" +#include "url.h" +#include "getinfo.h" +#include "ccsidcurl.h" + +#include "os400sys.h" + + +#define ASCII_CCSID 819 /* Use ISO-8859-1 as ASCII. */ +#define ICONV_ID_SIZE 32 /* Size of iconv_open() code identifier. */ +#define ICONV_OPEN_ERROR(t) ((t).return_value == -1) + +#define ALLOC_GRANULE 8 /* Alloc. granule for curl_formadd_ccsid(). */ + + +static void +makeOS400IconvCode(char buf[ICONV_ID_SIZE], unsigned int ccsid) + +{ + /** + *** Convert a CCSID to the corresponding IBM iconv_open() character + *** code identifier. + *** This code is specific to the OS400 implementation of the iconv library. + *** CCSID 65535 (no conversion) is replaced by the ASCII CCSID. + *** CCSID 0 is interpreted by the OS400 as the job's CCSID. + **/ + + ccsid &= 0xFFFF; + + if (ccsid == 65535) + ccsid = ASCII_CCSID; + + memset(buf, 0, ICONV_ID_SIZE); + curl_msprintf(buf, "IBMCCSID%05u0000000", ccsid); +} + + +static iconv_t +iconv_open_CCSID(unsigned int ccsidout, unsigned int ccsidin, unsigned int cstr) + +{ + char fromcode[ICONV_ID_SIZE]; + char tocode[ICONV_ID_SIZE]; + + /** + *** Like iconv_open(), but character codes are given as CCSIDs. + *** If `cstr' is non-zero, conversion is set up to stop whenever a + *** null character is encountered. + *** See iconv_open() IBM description in "National Language Support API". + **/ + + makeOS400IconvCode(fromcode, ccsidin); + makeOS400IconvCode(tocode, ccsidout); + memset(tocode + 13, 0, sizeof tocode - 13); /* Dest. code id format. */ + + if (cstr) + fromcode[18] = '1'; /* Set null-terminator flag. */ + + return iconv_open(tocode, fromcode); +} + + +static int +convert(char * d, size_t dlen, int dccsid, + const char * s, int slen, int sccsid) + +{ + int i; + iconv_t cd; + size_t lslen; + + /** + *** Convert `sccsid'-coded `slen'-data bytes at `s' into `dccsid'-coded + *** data stored in the `dlen'-byte buffer at `d'. + *** If `slen' < 0, source string is null-terminated. + *** CCSID 65535 (no conversion) is replaced by the ASCII CCSID. + *** Return the converted destination byte count, or -1 if error. + **/ + + if (sccsid == 65535) + sccsid = ASCII_CCSID; + + if (dccsid == 65535) + dccsid = ASCII_CCSID; + + if (sccsid == dccsid) { + lslen = slen >= 0? slen: strlen(s) + 1; + i = lslen < dlen? lslen: dlen; + + if (s != d && i > 0) + memcpy(d, s, i); + + return i; + } + + if (slen < 0) { + lslen = 0; + cd = iconv_open_CCSID(dccsid, sccsid, 1); + } + else { + lslen = (size_t) slen; + cd = iconv_open_CCSID(dccsid, sccsid, 0); + } + + if (ICONV_OPEN_ERROR(cd)) + return -1; + + i = dlen; + + if ((int) iconv(cd, (char * *) &s, &lslen, &d, &dlen) < 0) + i = -1; + else + i -= dlen; + + iconv_close(cd); + return i; +} + + +static char * +dynconvert(int dccsid, const char * s, int slen, int sccsid) + +{ + char * d; + char * cp; + size_t dlen; + int l; + int l2; + static const char nullbyte = 0; + + /* Like convert, but the destination is allocated and returned. */ + + dlen = (size_t) (slen < 0? strlen(s): slen) + 1; + dlen *= MAX_CONV_EXPANSION; /* Allow some expansion. */ + d = malloc(dlen); + + if (!d) + return (char *) NULL; + + l = convert(d, dlen, dccsid, s, slen, sccsid); + + if (l < 0) { + free(d); + return (char *) NULL; + } + + if (slen < 0) { + /* Need to null-terminate even when source length is given. + Since destination code size is unknown, use a conversion to generate + terminator. */ + + l2 = convert(d + l, dlen - l, dccsid, &nullbyte, -1, ASCII_CCSID); + + if (l2 < 0) { + free(d); + return (char *) NULL; + } + + l += l2; + } + + if ((size_t) l < dlen) { + cp = realloc(d, l); /* Shorten to minimum needed. */ + + if (cp) + d = cp; + } + + return d; +} + + +char * +curl_version_ccsid(unsigned int ccsid) + +{ + int i; + char * aversion; + char * eversion; + + aversion = curl_version(); + + if (!aversion) + return aversion; + + i = strlen(aversion) + 1; + i *= MAX_CONV_EXPANSION; + + if (!(eversion = Curl_thread_buffer(LK_CURL_VERSION, i))) + return (char *) NULL; + + if (convert(eversion, i, ccsid, aversion, -1, ASCII_CCSID) < 0) + return (char *) NULL; + + return eversion; +} + + +char * +curl_easy_escape_ccsid(CURL * handle, const char * string, int length, + unsigned int sccsid, unsigned int dccsid) + +{ + char * s; + char * d; + + if (!string) { + errno = EINVAL; + return (char *) NULL; + } + + s = dynconvert(ASCII_CCSID, s, length? length: -1, sccsid); + + if (!s) + return (char *) NULL; + + d = curl_easy_escape(handle, s, 0); + free(s); + + if (!d) + return (char *) NULL; + + s = dynconvert(dccsid, d, -1, ASCII_CCSID); + free(d); + return s; +} + + +char * +curl_easy_unescape_ccsid(CURL * handle, const char * string, int length, + int * outlength, + unsigned int sccsid, unsigned int dccsid) + +{ + char * s; + char * d; + + if (!string) { + errno = EINVAL; + return (char *) NULL; + } + + s = dynconvert(ASCII_CCSID, s, length? length: -1, sccsid); + + if (!s) + return (char *) NULL; + + d = curl_easy_unescape(handle, s, 0, outlength); + free(s); + + if (!d) + return (char *) NULL; + + s = dynconvert(dccsid, d, -1, ASCII_CCSID); + free(d); + + if (s && outlength) + *outlength = strlen(s); + + return s; +} + + +struct curl_slist * +curl_slist_append_ccsid(struct curl_slist * list, + const char * data, unsigned int ccsid) + +{ + char * s; + + s = (char *) NULL; + + if (!data) + return curl_slist_append(list, data); + + s = dynconvert(ASCII_CCSID, data, -1, ccsid); + + if (!s) + return (struct curl_slist *) NULL; + + list = curl_slist_append(list, s); + free(s); + return list; +} + + +time_t +curl_getdate_ccsid(const char * p, const time_t * unused, unsigned int ccsid) + +{ + char * s; + time_t t; + + if (!p) + return curl_getdate(p, unused); + + s = dynconvert(ASCII_CCSID, p, -1, ccsid); + + if (!s) + return (time_t) -1; + + t = curl_getdate(s, unused); + free(s); + return t; +} + + +static int +convert_version_info_string(const char * * stringp, + char * * bufp, int * left, unsigned int ccsid) + +{ + int l; + + /* Helper for curl_version_info_ccsid(): convert a string if defined. + Result is stored in the `*left'-byte buffer at `*bufp'. + `*bufp' and `*left' are updated accordingly. + Return 0 if ok, else -1. */ + + if (*stringp) { + l = convert(*bufp, *left, ccsid, *stringp, -1, ASCII_CCSID); + + if (l <= 0) + return -1; + + *stringp = *bufp; + *bufp += l; + *left -= l; + } + + return 0; +} + + +curl_version_info_data * +curl_version_info_ccsid(CURLversion stamp, unsigned int ccsid) + +{ + curl_version_info_data * p; + char * cp; + int n; + int nproto; + int i; + curl_version_info_data * id; + + /* The assertion below is possible, because although the second operand + is an enum member, the first is a #define. In that case, the OS/400 C + compiler seems to compare string values after substitution. */ + +#if CURLVERSION_NOW != CURLVERSION_FOURTH +#error curl_version_info_data structure has changed: upgrade this procedure too. +#endif + + /* If caller has been compiled with a new version, error. */ + + if (stamp > CURLVERSION_NOW) + return (curl_version_info_data *) NULL; + + p = curl_version_info(stamp); + + if (!p) + return p; + + /* Measure thread space needed. */ + + n = 0; + nproto = 0; + + if (p->protocols) { + while (p->protocols[nproto]) + n += strlen(p->protocols[nproto++]); + + n += nproto++; + } + + if (p->version) + n += strlen(p->version) + 1; + + if (p->host) + n += strlen(p->host) + 1; + + if (p->ssl_version) + n += strlen(p->ssl_version) + 1; + + if (p->libz_version) + n += strlen(p->libz_version) + 1; + + if (p->ares) + n += strlen(p->ares) + 1; + + if (p->libidn) + n += strlen(p->libidn) + 1; + + if (p->libssh_version) + n += strlen(p->libssh_version) + 1; + + /* Allocate thread space. */ + + n *= MAX_CONV_EXPANSION; + + if (nproto) + n += nproto * sizeof(const char *); + + cp = Curl_thread_buffer(LK_VERSION_INFO_DATA, n); + id = (curl_version_info_data *) Curl_thread_buffer(LK_VERSION_INFO, + sizeof *id); + + if (!id || !cp) + return (curl_version_info_data *) NULL; + + /* Copy data and convert strings. */ + + memcpy((char *) id, (char *) p, sizeof *p); + + if (id->protocols) { + id->protocols = (const char * const *) cp; + i = nproto * sizeof id->protocols[0]; + memcpy(cp, (char *) p->protocols, i); + cp += i; + n -= i; + + for (i = 0; id->protocols[i]; i++) + if (convert_version_info_string(((const char * *) id->protocols) + i, + &cp, &n, ccsid)) + return (curl_version_info_data *) NULL; + } + + if (convert_version_info_string(&id->version, &cp, &n, ccsid)) + return (curl_version_info_data *) NULL; + + if (convert_version_info_string(&id->host, &cp, &n, ccsid)) + return (curl_version_info_data *) NULL; + + if (convert_version_info_string(&id->ssl_version, &cp, &n, ccsid)) + return (curl_version_info_data *) NULL; + + if (convert_version_info_string(&id->libz_version, &cp, &n, ccsid)) + return (curl_version_info_data *) NULL; + + if (convert_version_info_string(&id->ares, &cp, &n, ccsid)) + return (curl_version_info_data *) NULL; + + if (convert_version_info_string(&id->libidn, &cp, &n, ccsid)) + return (curl_version_info_data *) NULL; + + if (convert_version_info_string(&id->libssh_version, &cp, &n, ccsid)) + return (curl_version_info_data *) NULL; + + return id; +} + + +const char * +curl_easy_strerror_ccsid(CURLcode error, unsigned int ccsid) + +{ + int i; + const char * s; + char * buf; + + s = curl_easy_strerror(error); + + if (!s) + return s; + + i = MAX_CONV_EXPANSION * (strlen(s) + 1); + + if (!(buf = Curl_thread_buffer(LK_EASY_STRERROR, i))) + return (const char *) NULL; + + if (convert(buf, i, ccsid, s, -1, ASCII_CCSID) < 0) + return (const char *) NULL; + + return (const char *) buf; +} + + +const char * +curl_share_strerror_ccsid(CURLSHcode error, unsigned int ccsid) + +{ + int i; + const char * s; + char * buf; + + s = curl_share_strerror(error); + + if (!s) + return s; + + i = MAX_CONV_EXPANSION * (strlen(s) + 1); + + if (!(buf = Curl_thread_buffer(LK_SHARE_STRERROR, i))) + return (const char *) NULL; + + if (convert(buf, i, ccsid, s, -1, ASCII_CCSID) < 0) + return (const char *) NULL; + + return (const char *) buf; +} + + +const char * +curl_multi_strerror_ccsid(CURLMcode error, unsigned int ccsid) + +{ + int i; + const char * s; + char * buf; + + s = curl_multi_strerror(error); + + if (!s) + return s; + + i = MAX_CONV_EXPANSION * (strlen(s) + 1); + + if (!(buf = Curl_thread_buffer(LK_MULTI_STRERROR, i))) + return (const char *) NULL; + + if (convert(buf, i, ccsid, s, -1, ASCII_CCSID) < 0) + return (const char *) NULL; + + return (const char *) buf; +} + + +CURLcode +curl_easy_getinfo_ccsid(CURL * curl, CURLINFO info, ...) + +{ + va_list arg; + void * paramp; + CURLcode ret; + unsigned int ccsid; + char * * cpp; + char * s; + char * d; + struct SessionHandle * data; + + /* WARNING: unlike curl_easy_get_info(), the strings returned by this + procedure have to be free'ed. */ + + data = (struct SessionHandle *) curl; + va_start(arg, info); + paramp = va_arg(arg, void *); + ret = Curl_getinfo(data, info, paramp); + + if (ret != CURLE_OK || ((int) info & CURLINFO_TYPEMASK) != CURLINFO_STRING) { + va_end(arg); + return ret; + } + + ccsid = va_arg(arg, unsigned int); + va_end(arg); + cpp = (char * *) paramp; + s = *cpp; + + if (!s) + return ret; + + d = dynconvert(ccsid, s, -1, ASCII_CCSID); + *cpp = d; + + if (!d) + return CURLE_OUT_OF_MEMORY; + + return ret; +} + + +static int +Curl_is_formadd_string(CURLformoption option) + +{ + switch (option) { + + case CURLFORM_FILENAME: + case CURLFORM_CONTENTTYPE: + case CURLFORM_BUFFER: + case CURLFORM_FILE: + case CURLFORM_FILECONTENT: + case CURLFORM_COPYCONTENTS: + case CURLFORM_COPYNAME: + return 1; + } + + return 0; +} + + +static void +Curl_formadd_release_local(struct curl_forms * forms, int nargs, int skip) + +{ + while (nargs--) + if (nargs != skip) + if (Curl_is_formadd_string(forms[nargs].option)) + if (forms[nargs].value) + free((char *) forms[nargs].value); + + free((char *) forms); +} + + +static int +Curl_formadd_convert(struct curl_forms * forms, + int formx, int lengthx, unsigned int ccsid) + +{ + int l; + char * cp; + char * cp2; + + if (formx < 0 || !forms[formx].value) + return 0; + + if (lengthx >= 0) + l = (int) forms[lengthx].value; + else + l = strlen(forms[formx].value) + 1; + + cp = malloc(MAX_CONV_EXPANSION * l); + + if (!cp) + return -1; + + l = convert(cp, MAX_CONV_EXPANSION * l, ASCII_CCSID, + forms[formx].value, l, ccsid); + + if (l < 0) { + free(cp); + return -1; + } + + cp2 = realloc(cp, l); /* Shorten buffer to the string size. */ + + if (cp2) + cp = cp2; + + forms[formx].value = cp; + + if (lengthx >= 0) + forms[lengthx].value = (char *) l; /* Update to length after conversion. */ + + return l; +} + + +CURLFORMcode +curl_formadd_ccsid(struct curl_httppost * * httppost, + struct curl_httppost * * last_post, ...) + +{ + va_list arg; + CURLformoption option; + CURLFORMcode result; + struct curl_forms * forms; + struct curl_forms * lforms; + struct curl_forms * tforms; + unsigned int lformlen; + const char * value; + unsigned int ccsid; + int nargs; + int namex; + int namelengthx; + int contentx; + int lengthx; + unsigned int contentccsid; + unsigned int nameccsid; + + /* A single curl_formadd() call cannot be splitted in several calls to deal + with all parameters: the original parameters are thus copied to a local + curl_forms array and converted to ASCII when needed. + CURLFORM_PTRNAME is processed as if it were CURLFORM_COPYNAME. + CURLFORM_COPYNAME and CURLFORM_NAMELENGTH occurrence order in + parameters is not defined; for this reason, the actual conversion is + delayed to the end of parameter processing. The same applies to + CURLFORM_COPYCONTENTS/CURLFORM_CONTENTSLENGTH, but these may appear + several times in the parameter list; the problem resides here in knowing + which CURLFORM_CONTENTSLENGTH applies to which CURLFORM_COPYCONTENTS and + when we can be sure to have both info for conversion: end of parameter + list is such a point, but CURLFORM_CONTENTTYPE is also used here as a + natural separator between content data definitions; this seems to be + in accordance with FormAdd() behavior. */ + + /* Allocate the local curl_forms array. */ + + lformlen = ALLOC_GRANULE; + lforms = (struct curl_forms *) malloc(lformlen * sizeof * lforms); + + if (!lforms) + return CURL_FORMADD_MEMORY; + + /* Process the arguments, copying them into local array, latching conversion + indexes and converting when needed. */ + + result = CURL_FORMADD_OK; + nargs = 0; + contentx = -1; + lengthx = -1; + namex = -1; + namelengthx = -1; + forms = (struct curl_forms *) NULL; + va_start(arg, last_post); + + for (;;) { + /* Make sure there is still room for an item in local array. */ + + if (nargs >= lformlen) { + lformlen += ALLOC_GRANULE; + tforms = (struct curl_forms *) realloc((char *) lforms, + lformlen * sizeof *lforms); + + if (!tforms) { + result = CURL_FORMADD_MEMORY; + break; + } + + lforms = tforms; + } + + /* Get next option. */ + + if (forms) { + /* Get option from array. */ + + option = forms->option; + value = forms->value; + forms++; + } + else { + /* Get option from arguments. */ + + option = va_arg(arg, CURLformoption); + + if (option == CURLFORM_END) + break; + } + + /* Dispatch by option. */ + + switch (option) { + + case CURLFORM_END: + forms = (struct curl_forms *) NULL; /* Leave array mode. */ + continue; + + case CURLFORM_ARRAY: + if (!forms) { + forms = va_arg(arg, struct curl_forms *); + continue; + } + + result = CURL_FORMADD_ILLEGAL_ARRAY; + break; + + case CURLFORM_COPYNAME: + option = CURLFORM_PTRNAME; /* Static for now. */ + + case CURLFORM_PTRNAME: + if (namex >= 0) + result = CURL_FORMADD_OPTION_TWICE; + + namex = nargs; + + if (!forms) { + value = va_arg(arg, char *); + nameccsid = (unsigned int) va_arg(arg, long); + } + else { + nameccsid = (unsigned int) forms->value; + forms++; + } + + break; + + case CURLFORM_COPYCONTENTS: + if (contentx >= 0) + result = CURL_FORMADD_OPTION_TWICE; + + contentx = nargs; + + if (!forms) { + value = va_arg(arg, char *); + contentccsid = (unsigned int) va_arg(arg, long); + } + else { + contentccsid = (unsigned int) forms->value; + forms++; + } + + break; + + case CURLFORM_PTRCONTENTS: + case CURLFORM_BUFFERPTR: + if (!forms) + value = va_arg(arg, char *); /* No conversion. */ + + break; + + case CURLFORM_CONTENTSLENGTH: + lengthx = nargs; + + if (!forms) + value = (char *) va_arg(arg, long); + + break; + + case CURLFORM_NAMELENGTH: + namelengthx = nargs; + + if (!forms) + value = (char *) va_arg(arg, long); + + break; + + case CURLFORM_BUFFERLENGTH: + if (!forms) + value = (char *) va_arg(arg, long); + + break; + + case CURLFORM_CONTENTHEADER: + if (!forms) + value = (char *) va_arg(arg, struct curl_slist *); + + break; + + case CURLFORM_CONTENTTYPE: + /* If a previous content has been encountered, convert it now. */ + + if (Curl_formadd_convert(lforms, contentx, lengthx, contentccsid) < 0) { + result = CURL_FORMADD_MEMORY; + break; + } + + contentx = -1; + lengthx = -1; + /* Fall into default. */ + + default: + /* Must be a convertible string. */ + + if (!Curl_is_formadd_string(option)) { + result = CURL_FORMADD_UNKNOWN_OPTION; + break; + } + + if (!forms) { + value = va_arg(arg, char *); + ccsid = (unsigned int) va_arg(arg, long); + } + else { + ccsid = (unsigned int) forms->value; + forms++; + } + + /* Do the conversion. */ + + lforms[nargs].value = value; + + if (Curl_formadd_convert(lforms, nargs, -1, ccsid) < 0) { + result = CURL_FORMADD_MEMORY; + break; + } + + value = lforms[nargs].value; + } + + if (result != CURL_FORMADD_OK) + break; + + lforms[nargs].value = value; + lforms[nargs++].option = option; + } + + va_end(arg); + + /* Convert the name and the last content, now that we know their lengths. */ + + if (result == CURL_FORMADD_OK && namex >= 0) { + if (Curl_formadd_convert(lforms, namex, namelengthx, nameccsid) < 0) + result = CURL_FORMADD_MEMORY; + else + lforms[namex].option = CURLFORM_COPYNAME; /* Force copy. */ + } + + if (result == CURL_FORMADD_OK) { + if (Curl_formadd_convert(lforms, contentx, lengthx, contentccsid) < 0) + result = CURL_FORMADD_MEMORY; + else + contentx = -1; + } + + /* Do the formadd with our converted parameters. */ + + if (result == CURL_FORMADD_OK) { + lforms[nargs].option = CURLFORM_END; + result = curl_formadd(httppost, last_post, + CURLFORM_ARRAY, lforms, CURLFORM_END); + } + + /* Terminate. */ + + Curl_formadd_release_local(lforms, nargs, contentx); + return result; +} + + +typedef struct { + curl_formget_callback append; + void * arg; + unsigned int ccsid; +} cfcdata; + + +static size_t +Curl_formget_callback_ccsid(void * arg, const char * buf, size_t len) + +{ + cfcdata * p; + char * b; + int l; + size_t ret; + + p = (cfcdata *) arg; + + if ((long) len <= 0) + return (*p->append)(p->arg, buf, len); + + b = malloc(MAX_CONV_EXPANSION * len); + + if (!b) + return (size_t) -1; + + l = convert(b, MAX_CONV_EXPANSION * len, p->ccsid, buf, len, ASCII_CCSID); + + if (l < 0) { + free(b); + return (size_t) -1; + } + + ret = (*p->append)(p->arg, b, l); + free(b); + return ret == l? len: -1; +} + + +int +curl_formget_ccsid(struct curl_httppost * form, void * arg, + curl_formget_callback append, unsigned int ccsid) + +{ + cfcdata lcfc; + + lcfc.append = append; + lcfc.arg = arg; + lcfc.ccsid = ccsid; + return curl_formget(form, (void *) &lcfc, Curl_formget_callback_ccsid); +} + + +CURLcode +curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...) + +{ + CURLcode result; + va_list arg; + struct SessionHandle * data; + char * s; + unsigned int ccsid; + static char testwarn = 1; + + /* Warns if this procedure has not been updated when the dupstring enum + changes. + We (try to) do it only once: there is no need to issue several times + the same message; but since threadsafeness is not handled here, + this may occur (and we don't care!). */ + + if (testwarn) { + testwarn = 0; + + if ((int) STRING_LAST != (int) STRING_USERPWD + 1) + curl_mfprintf(stderr, + "*** WARNING: curl_easy_setopt_ccsid() should be reworked ***\n"); + } + + data = (struct SessionHandle *) curl; + va_start(arg, tag); + + switch (tag) { + + case CURLOPT_CAINFO: + case CURLOPT_CAPATH: + case CURLOPT_COOKIE: + case CURLOPT_COOKIEFILE: + case CURLOPT_COOKIEJAR: + case CURLOPT_COOKIELIST: + case CURLOPT_CUSTOMREQUEST: + case CURLOPT_EGDSOCKET: + case CURLOPT_ENCODING: + case CURLOPT_FTPPORT: + case CURLOPT_FTP_ACCOUNT: + case CURLOPT_FTP_ALTERNATIVE_TO_USER: + case CURLOPT_INTERFACE: + case CURLOPT_KRBLEVEL: + case CURLOPT_NETRC_FILE: + case CURLOPT_POSTFIELDS: + case CURLOPT_PROXY: + case CURLOPT_PROXYUSERPWD: + case CURLOPT_RANDOM_FILE: + case CURLOPT_RANGE: + case CURLOPT_REFERER: + case CURLOPT_SSH_PRIVATE_KEYFILE: + case CURLOPT_SSH_PUBLIC_KEYFILE: + case CURLOPT_SSLCERT: + case CURLOPT_SSLCERTTYPE: + case CURLOPT_SSLENGINE: + case CURLOPT_SSLKEY: + case CURLOPT_SSLKEYPASSWD: + case CURLOPT_SSLKEYTYPE: + case CURLOPT_SSL_CIPHER_LIST: + case CURLOPT_URL: + case CURLOPT_USERAGENT: + case CURLOPT_USERPWD: + s = va_arg(arg, char *); + ccsid = va_arg(arg, unsigned int); + + if (s) { + s = dynconvert(ASCII_CCSID, s, -1, ccsid); + + if (!s) { + result = CURLE_OUT_OF_MEMORY; + break; + } + } + + result = curl_easy_setopt(curl, tag, s); + + if (s) + free(s); + + break; + + case CURLOPT_ERRORBUFFER: /* This is an output buffer. */ + default: + result = Curl_setopt(data, tag, arg); + break; + } + + va_end(arg); + return result; +} + + +char * +curl_form_long_value(long value) + +{ + /* ILE/RPG cannot cast an integer to a pointer. This procedure does it. */ + + return (char *) value; +} -- cgit v1.2.1 From 9f44a95522162c0f4a61093efe1bf1f58b087358 Mon Sep 17 00:00:00 2001 From: Dan Fandrich Date: Thu, 30 Aug 2007 20:34:57 +0000 Subject: Renamed several libcurl error codes and options to make them more general and allow reuse by multiple protocols. Several unused error codes were removed. In all cases, macros were added to preserve source (and binary) compatibility with the old names. These macros are subject to removal at a future date, but probably not before 2009. An application can be tested to see if it is using any obsolete code by compiling it with the CURL_NO_OLDIES macro defined. Documented some newer error codes in libcurl-error(3) --- packages/OS400/ccsidcurl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'packages/OS400/ccsidcurl.c') diff --git a/packages/OS400/ccsidcurl.c b/packages/OS400/ccsidcurl.c index 978458f59..26d15fa5a 100644 --- a/packages/OS400/ccsidcurl.c +++ b/packages/OS400/ccsidcurl.c @@ -1039,6 +1039,7 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...) case CURLOPT_FTP_ACCOUNT: case CURLOPT_FTP_ALTERNATIVE_TO_USER: case CURLOPT_INTERFACE: + case CURLOPT_KEYPASSWD: case CURLOPT_KRBLEVEL: case CURLOPT_NETRC_FILE: case CURLOPT_POSTFIELDS: @@ -1053,7 +1054,6 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...) case CURLOPT_SSLCERTTYPE: case CURLOPT_SSLENGINE: case CURLOPT_SSLKEY: - case CURLOPT_SSLKEYPASSWD: case CURLOPT_SSLKEYTYPE: case CURLOPT_SSL_CIPHER_LIST: case CURLOPT_URL: -- cgit v1.2.1 From 43b10339abc7bed4c199e91e08ccdc5839416767 Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Wed, 3 Oct 2007 15:09:21 +0000 Subject: Upgrade OS400 wrappers and RPG copy file according to latest code updates --- packages/OS400/ccsidcurl.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'packages/OS400/ccsidcurl.c') diff --git a/packages/OS400/ccsidcurl.c b/packages/OS400/ccsidcurl.c index 26d15fa5a..ad8f0fa7c 100644 --- a/packages/OS400/ccsidcurl.c +++ b/packages/OS400/ccsidcurl.c @@ -1016,7 +1016,7 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...) if (testwarn) { testwarn = 0; - if ((int) STRING_LAST != (int) STRING_USERPWD + 1) + if ((int) STRING_LAST != (int) STRING_SSH_HOST_PUBLIC_KEY_MD5 + 1) curl_mfprintf(stderr, "*** WARNING: curl_easy_setopt_ccsid() should be reworked ***\n"); } @@ -1059,6 +1059,7 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...) case CURLOPT_URL: case CURLOPT_USERAGENT: case CURLOPT_USERPWD: + case CURLOPT_SSH_HOST_PUBLIC_KEY_MD5: s = va_arg(arg, char *); ccsid = va_arg(arg, unsigned int); -- cgit v1.2.1 From a005243908803662d4a05427bc1061db42f4d057 Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Mon, 15 Oct 2007 18:32:01 +0000 Subject: Fix dynamic CURLOPT_POSTFIELDS bug: back to static. CURLOPT_COPYPOSTFIELDS option added for dynamic. Fix some OS400 features. --- packages/OS400/ccsidcurl.c | 71 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 69 insertions(+), 2 deletions(-) (limited to 'packages/OS400/ccsidcurl.c') diff --git a/packages/OS400/ccsidcurl.c b/packages/OS400/ccsidcurl.c index ad8f0fa7c..78ff74d95 100644 --- a/packages/OS400/ccsidcurl.c +++ b/packages/OS400/ccsidcurl.c @@ -40,8 +40,13 @@ #include "os400sys.h" +#ifndef SIZE_MAX +#define SIZE_MAX ((size_t) ~0) /* Is unsigned on OS/400. */ +#endif + #define ASCII_CCSID 819 /* Use ISO-8859-1 as ASCII. */ +#define NOCONV_CCSID 65535 /* No conversion. */ #define ICONV_ID_SIZE 32 /* Size of iconv_open() code identifier. */ #define ICONV_OPEN_ERROR(t) ((t).return_value == -1) @@ -62,7 +67,7 @@ makeOS400IconvCode(char buf[ICONV_ID_SIZE], unsigned int ccsid) ccsid &= 0xFFFF; - if (ccsid == 65535) + if (ccsid == NOCONV_CCSID) ccsid = ASCII_CCSID; memset(buf, 0, ICONV_ID_SIZE); @@ -1004,7 +1009,10 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...) va_list arg; struct SessionHandle * data; char * s; + char * cp; unsigned int ccsid; + size_t len; + curl_off_t pfsize; static char testwarn = 1; /* Warns if this procedure has not been updated when the dupstring enum @@ -1042,7 +1050,6 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...) case CURLOPT_KEYPASSWD: case CURLOPT_KRBLEVEL: case CURLOPT_NETRC_FILE: - case CURLOPT_POSTFIELDS: case CURLOPT_PROXY: case CURLOPT_PROXYUSERPWD: case CURLOPT_RANDOM_FILE: @@ -1079,6 +1086,66 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...) break; + case CURLOPT_COPYPOSTFIELDS: + /* Special case: byte count may have been given by CURLOPT_POSTFIELDSIZE + prior to this call. In this case, convert the given byte count and + replace the length according to the conversion result. */ + s = va_arg(arg, char *); + ccsid = va_arg(arg, unsigned int); + + pfsize = data->set.postfieldsize; + + if (!s || !pfsize || ccsid == NOCONV_CCSID || ccsid == ASCII_CCSID) { + result = curl_easy_setopt(curl, CURLOPT_COPYPOSTFIELDS, s); + break; + } + + if (pfsize == -1) { + /* Data is null-terminated. */ + s = dynconvert(ASCII_CCSID, s, -1, ccsid); + + if (!s) { + result = CURLE_OUT_OF_MEMORY; + break; + } + } + else { + /* Data length specified. */ + + if (pfsize < 0 || pfsize > SIZE_MAX) { + result = CURLE_OUT_OF_MEMORY; + break; + } + + len = pfsize; + pfsize = len * MAX_CONV_EXPANSION; + + if (pfsize > SIZE_MAX) + pfsize = SIZE_MAX; + + cp = malloc(pfsize); + + if (!cp) { + result = CURLE_OUT_OF_MEMORY; + break; + } + + pfsize = convert(cp, pfsize, ASCII_CCSID, s, len, ccsid); + + if (pfsize < 0) { + free(cp); + result = CURLE_OUT_OF_MEMORY; + break; + } + + data->set.postfieldsize = pfsize; /* Replace data size. */ + s = cp; + } + + result = curl_easy_setopt(curl, CURLOPT_POSTFIELDS, s); + data->set.str[STRING_COPYPOSTFIELDS] = s; /* Give to library. */ + break; + case CURLOPT_ERRORBUFFER: /* This is an output buffer. */ default: result = Curl_setopt(data, tag, arg); -- cgit v1.2.1 From 3ee32d79207845f976ee89830063a3faa689e566 Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Wed, 16 Jan 2008 16:04:47 +0000 Subject: OS/400 update: New declarations in curl.h reported to curl.inc.in. Copyrights extended to 2008. SONAME handling introduced in build scripts. --- packages/OS400/ccsidcurl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'packages/OS400/ccsidcurl.c') diff --git a/packages/OS400/ccsidcurl.c b/packages/OS400/ccsidcurl.c index 78ff74d95..f5ae8921e 100644 --- a/packages/OS400/ccsidcurl.c +++ b/packages/OS400/ccsidcurl.c @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2007, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2008, 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 -- cgit v1.2.1 From a08b6ae813df73c90b2cfc8364c4ff1eb0723d84 Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Mon, 7 Apr 2008 13:09:17 +0000 Subject: Adapt OS400 SSL (qssl.h) to V5R4 Fix qssl.c wrong error message Upgrade OS400 wrappers and makefiles to 7.18.1 --- packages/OS400/ccsidcurl.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'packages/OS400/ccsidcurl.c') diff --git a/packages/OS400/ccsidcurl.c b/packages/OS400/ccsidcurl.c index f5ae8921e..17f5c85a1 100644 --- a/packages/OS400/ccsidcurl.c +++ b/packages/OS400/ccsidcurl.c @@ -867,6 +867,12 @@ curl_formadd_ccsid(struct curl_httppost * * httppost, break; + case CURLFORM_STREAM: + if (!forms) + value = (char *) va_arg(arg, void *); + + break; + case CURLFORM_CONTENTTYPE: /* If a previous content has been encountered, convert it now. */ -- cgit v1.2.1 From ddfa4b889681131bf19c8a911e9b376e14380551 Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Mon, 7 Jul 2008 10:39:46 +0000 Subject: New options added to OS400 wrapper and ILERPG definitions. Wrong defines (typos) for QSSL layer fixed. --- packages/OS400/ccsidcurl.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'packages/OS400/ccsidcurl.c') diff --git a/packages/OS400/ccsidcurl.c b/packages/OS400/ccsidcurl.c index 17f5c85a1..c44db0e1c 100644 --- a/packages/OS400/ccsidcurl.c +++ b/packages/OS400/ccsidcurl.c @@ -1030,7 +1030,7 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...) if (testwarn) { testwarn = 0; - if ((int) STRING_LAST != (int) STRING_SSH_HOST_PUBLIC_KEY_MD5 + 1) + if ((int) STRING_LAST != (int) STRING_SSL_ISSUERCERT + 1) curl_mfprintf(stderr, "*** WARNING: curl_easy_setopt_ccsid() should be reworked ***\n"); } @@ -1073,6 +1073,8 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...) case CURLOPT_USERAGENT: case CURLOPT_USERPWD: case CURLOPT_SSH_HOST_PUBLIC_KEY_MD5: + case CURLOPT_CRLFILE: + case CURLOPT_ISSUERCERT: s = va_arg(arg, char *); ccsid = va_arg(arg, unsigned int); -- cgit v1.2.1 From 861b647e7b1da564b831a5b07312a30feb7b6c58 Mon Sep 17 00:00:00 2001 From: Yang Tse Date: Sat, 6 Sep 2008 04:28:43 +0000 Subject: remove unnecessary typecasting of realloc() --- packages/OS400/ccsidcurl.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'packages/OS400/ccsidcurl.c') diff --git a/packages/OS400/ccsidcurl.c b/packages/OS400/ccsidcurl.c index c44db0e1c..27412afa2 100644 --- a/packages/OS400/ccsidcurl.c +++ b/packages/OS400/ccsidcurl.c @@ -749,8 +749,7 @@ curl_formadd_ccsid(struct curl_httppost * * httppost, if (nargs >= lformlen) { lformlen += ALLOC_GRANULE; - tforms = (struct curl_forms *) realloc((char *) lforms, - lformlen * sizeof *lforms); + tforms = realloc(lforms, lformlen * sizeof *lforms); if (!tforms) { result = CURL_FORMADD_MEMORY; -- cgit v1.2.1 From 59e378f48fed849e8e41f0bc6a10bf7a1732ae8a Mon Sep 17 00:00:00 2001 From: Yang Tse Date: Sat, 6 Sep 2008 05:29:05 +0000 Subject: remove unnecessary typecasting of malloc() --- packages/OS400/ccsidcurl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'packages/OS400/ccsidcurl.c') diff --git a/packages/OS400/ccsidcurl.c b/packages/OS400/ccsidcurl.c index 27412afa2..9b91bd8b1 100644 --- a/packages/OS400/ccsidcurl.c +++ b/packages/OS400/ccsidcurl.c @@ -727,7 +727,7 @@ curl_formadd_ccsid(struct curl_httppost * * httppost, /* Allocate the local curl_forms array. */ lformlen = ALLOC_GRANULE; - lforms = (struct curl_forms *) malloc(lformlen * sizeof * lforms); + lforms = malloc(lformlen * sizeof(struct curl_forms)); if (!lforms) return CURL_FORMADD_MEMORY; -- cgit v1.2.1 From 651dad0cc16adfb2f7d31ba78b914270baf0ea68 Mon Sep 17 00:00:00 2001 From: Yang Tse Date: Sat, 13 Sep 2008 16:37:16 +0000 Subject: fix compiler warning: external declaration in primary source file --- packages/OS400/ccsidcurl.c | 1 + 1 file changed, 1 insertion(+) (limited to 'packages/OS400/ccsidcurl.c') diff --git a/packages/OS400/ccsidcurl.c b/packages/OS400/ccsidcurl.c index 9b91bd8b1..9694a345c 100644 --- a/packages/OS400/ccsidcurl.c +++ b/packages/OS400/ccsidcurl.c @@ -33,6 +33,7 @@ #pragma enum(int) #include +#include #include "urldata.h" #include "url.h" #include "getinfo.h" -- cgit v1.2.1 From bb1f6e681830aba56db14c84512af371877f8601 Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Fri, 10 Oct 2008 15:54:07 +0000 Subject: _ Adapt OS400 EBCDIC wrappers to new options. _ Update RPG binding accordingly. _ Fix new options comments. --- packages/OS400/ccsidcurl.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'packages/OS400/ccsidcurl.c') diff --git a/packages/OS400/ccsidcurl.c b/packages/OS400/ccsidcurl.c index 9694a345c..0530b5232 100644 --- a/packages/OS400/ccsidcurl.c +++ b/packages/OS400/ccsidcurl.c @@ -728,7 +728,7 @@ curl_formadd_ccsid(struct curl_httppost * * httppost, /* Allocate the local curl_forms array. */ lformlen = ALLOC_GRANULE; - lforms = malloc(lformlen * sizeof(struct curl_forms)); + lforms = malloc(lformlen * sizeof *lforms); if (!lforms) return CURL_FORMADD_MEMORY; @@ -1030,7 +1030,7 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...) if (testwarn) { testwarn = 0; - if ((int) STRING_LAST != (int) STRING_SSL_ISSUERCERT + 1) + if ((int) STRING_LAST != (int) STRING_PASSWORD + 1) curl_mfprintf(stderr, "*** WARNING: curl_easy_setopt_ccsid() should be reworked ***\n"); } @@ -1075,6 +1075,8 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...) case CURLOPT_SSH_HOST_PUBLIC_KEY_MD5: case CURLOPT_CRLFILE: case CURLOPT_ISSUERCERT: + case CURLOPT_USERNAME: + case CURLOPT_PASSWORD: s = va_arg(arg, char *); ccsid = va_arg(arg, unsigned int); -- cgit v1.2.1 From f66e1c49b026a9f72cda3edd604a68b1ec9f4052 Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Fri, 17 Oct 2008 13:17:41 +0000 Subject: Introduce new options CURLOPT_PROXY{USERNAME, PASSWORD} in OS400 code and RPG binding. --- packages/OS400/ccsidcurl.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'packages/OS400/ccsidcurl.c') diff --git a/packages/OS400/ccsidcurl.c b/packages/OS400/ccsidcurl.c index 0530b5232..88aa9c08d 100644 --- a/packages/OS400/ccsidcurl.c +++ b/packages/OS400/ccsidcurl.c @@ -1030,7 +1030,7 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...) if (testwarn) { testwarn = 0; - if ((int) STRING_LAST != (int) STRING_PASSWORD + 1) + if ((int) STRING_LAST != (int) STRING_PROXYPASSWORD + 1) curl_mfprintf(stderr, "*** WARNING: curl_easy_setopt_ccsid() should be reworked ***\n"); } @@ -1077,6 +1077,8 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...) case CURLOPT_ISSUERCERT: case CURLOPT_USERNAME: case CURLOPT_PASSWORD: + case CURLOPT_PROXYUSERNAME: + case CURLOPT_PROXYPASSWORD: s = va_arg(arg, char *); ccsid = va_arg(arg, unsigned int); -- cgit v1.2.1 From 1472be4d3e55e1f3c0c0d1fdbee77a45630f326b Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Mon, 16 Feb 2009 15:33:17 +0000 Subject: Preparation of imminent release: synchronizing OS400 wrappers + RPG binding to current state. --- packages/OS400/ccsidcurl.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'packages/OS400/ccsidcurl.c') diff --git a/packages/OS400/ccsidcurl.c b/packages/OS400/ccsidcurl.c index 88aa9c08d..1591978a5 100644 --- a/packages/OS400/ccsidcurl.c +++ b/packages/OS400/ccsidcurl.c @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2008, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2009, 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 @@ -1030,7 +1030,7 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...) if (testwarn) { testwarn = 0; - if ((int) STRING_LAST != (int) STRING_PROXYPASSWORD + 1) + if ((int) STRING_LAST != (int) STRING_NOPROXY + 1) curl_mfprintf(stderr, "*** WARNING: curl_easy_setopt_ccsid() should be reworked ***\n"); } @@ -1079,6 +1079,7 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...) case CURLOPT_PASSWORD: case CURLOPT_PROXYUSERNAME: case CURLOPT_PROXYPASSWORD: + case CURLOPT_NOPROXY: s = va_arg(arg, char *); ccsid = va_arg(arg, unsigned int); -- cgit v1.2.1 From 4608d0157ee890a669aa2e88b81023d8bb7347e7 Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Tue, 17 Feb 2009 16:16:07 +0000 Subject: Continue sync work on OS400 specific code and RPG binding. --- packages/OS400/ccsidcurl.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'packages/OS400/ccsidcurl.c') diff --git a/packages/OS400/ccsidcurl.c b/packages/OS400/ccsidcurl.c index 1591978a5..14630b633 100644 --- a/packages/OS400/ccsidcurl.c +++ b/packages/OS400/ccsidcurl.c @@ -1030,7 +1030,7 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...) if (testwarn) { testwarn = 0; - if ((int) STRING_LAST != (int) STRING_NOPROXY + 1) + if ((int) STRING_LAST != (int) STRING_SOCKS5_GSSAPI_SERVICE + 1) curl_mfprintf(stderr, "*** WARNING: curl_easy_setopt_ccsid() should be reworked ***\n"); } @@ -1080,6 +1080,7 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...) case CURLOPT_PROXYUSERNAME: case CURLOPT_PROXYPASSWORD: case CURLOPT_NOPROXY: + case CURLOPT_SOCKS5_GSSAPI_SERVICE: s = va_arg(arg, char *); ccsid = va_arg(arg, unsigned int); -- cgit v1.2.1 From 501f9f83099d654a98c94ca29cf45b60d0963c27 Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Tue, 11 Aug 2009 14:07:08 +0000 Subject: Fix definition of CURLOPT_SOCKS5_GSSAPI_SERVICE from LONG to OBJECTPOINT Fix OS400 makefile for tests to use the new Makefile.inc in libtest Update the OS400 wrappers and RPG binding according to the current CVS source state --- packages/OS400/ccsidcurl.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'packages/OS400/ccsidcurl.c') diff --git a/packages/OS400/ccsidcurl.c b/packages/OS400/ccsidcurl.c index 14630b633..d64672dab 100644 --- a/packages/OS400/ccsidcurl.c +++ b/packages/OS400/ccsidcurl.c @@ -1080,6 +1080,8 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...) case CURLOPT_PROXYUSERNAME: case CURLOPT_PROXYPASSWORD: case CURLOPT_NOPROXY: + /* SSH2 not (yet) implemented on OS400. */ + /* case CURLOPT_SSH_KNOWNHOSTS: */ case CURLOPT_SOCKS5_GSSAPI_SERVICE: s = va_arg(arg, char *); ccsid = va_arg(arg, unsigned int); -- cgit v1.2.1 From eb438719f7cd9f6ae3f39a14db3a18007448341a Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Mon, 31 Aug 2009 15:22:16 +0000 Subject: OS400: adjust inclusion paths in include files to avoid "include file not found" in DB2 mode. --- packages/OS400/ccsidcurl.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'packages/OS400/ccsidcurl.c') diff --git a/packages/OS400/ccsidcurl.c b/packages/OS400/ccsidcurl.c index d64672dab..4a38f7c59 100644 --- a/packages/OS400/ccsidcurl.c +++ b/packages/OS400/ccsidcurl.c @@ -32,8 +32,8 @@ #pragma enum(int) -#include -#include +#include "curl.h" +#include "mprintf.h" #include "urldata.h" #include "url.h" #include "getinfo.h" -- cgit v1.2.1 From 57d3488a0d373151879ca622a4a90e2bbb72de14 Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Mon, 21 Dec 2009 12:26:48 +0000 Subject: Take new SMTP definitions into account in OS400 wrapper and RPG binding --- packages/OS400/ccsidcurl.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'packages/OS400/ccsidcurl.c') diff --git a/packages/OS400/ccsidcurl.c b/packages/OS400/ccsidcurl.c index 4a38f7c59..4d722d565 100644 --- a/packages/OS400/ccsidcurl.c +++ b/packages/OS400/ccsidcurl.c @@ -1030,7 +1030,7 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...) if (testwarn) { testwarn = 0; - if ((int) STRING_LAST != (int) STRING_SOCKS5_GSSAPI_SERVICE + 1) + if ((int) STRING_LAST != (int) STRING_MAIL_RCPT + 1) curl_mfprintf(stderr, "*** WARNING: curl_easy_setopt_ccsid() should be reworked ***\n"); } @@ -1083,6 +1083,8 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...) /* SSH2 not (yet) implemented on OS400. */ /* case CURLOPT_SSH_KNOWNHOSTS: */ case CURLOPT_SOCKS5_GSSAPI_SERVICE: + case CURLOPT_MAIL_FROM: + case CURLOPT_MAIL_RCPT: s = va_arg(arg, char *); ccsid = va_arg(arg, unsigned int); -- cgit v1.2.1 From 4258e943a15013952afd67354800ec6199af7050 Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Thu, 11 Feb 2010 18:49:06 +0000 Subject: _ Make it compilable again on OS400. _ Upgrade OS400 EBCDIC wrappers for new options. _ Upgrade ILE/RPG bindings to current state. --- packages/OS400/ccsidcurl.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'packages/OS400/ccsidcurl.c') diff --git a/packages/OS400/ccsidcurl.c b/packages/OS400/ccsidcurl.c index 4d722d565..38fe2ba54 100644 --- a/packages/OS400/ccsidcurl.c +++ b/packages/OS400/ccsidcurl.c @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2009, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2010, 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 @@ -1030,7 +1030,7 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...) if (testwarn) { testwarn = 0; - if ((int) STRING_LAST != (int) STRING_MAIL_RCPT + 1) + if ((int) STRING_LAST != (int) STRING_MAIL_FROM + 1) curl_mfprintf(stderr, "*** WARNING: curl_easy_setopt_ccsid() should be reworked ***\n"); } @@ -1080,11 +1080,13 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...) case CURLOPT_PROXYUSERNAME: case CURLOPT_PROXYPASSWORD: case CURLOPT_NOPROXY: + case CURLOPT_RTSP_SESSION_ID: + case CURLOPT_RTSP_STREAM_URI: + case CURLOPT_RTSP_TRANSPORT: /* SSH2 not (yet) implemented on OS400. */ /* case CURLOPT_SSH_KNOWNHOSTS: */ case CURLOPT_SOCKS5_GSSAPI_SERVICE: case CURLOPT_MAIL_FROM: - case CURLOPT_MAIL_RCPT: s = va_arg(arg, char *); ccsid = va_arg(arg, unsigned int); -- cgit v1.2.1 From 2309b4e330b96bc2e1f8e36b6184015e59544037 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Wed, 24 Mar 2010 11:02:54 +0100 Subject: remove the CVSish $Id$ lines --- packages/OS400/ccsidcurl.c | 1 - 1 file changed, 1 deletion(-) (limited to 'packages/OS400/ccsidcurl.c') diff --git a/packages/OS400/ccsidcurl.c b/packages/OS400/ccsidcurl.c index 38fe2ba54..ad67e1c87 100644 --- a/packages/OS400/ccsidcurl.c +++ b/packages/OS400/ccsidcurl.c @@ -18,7 +18,6 @@ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * - * $Id$ * ***************************************************************************/ -- cgit v1.2.1 From ed8749e308a9ed0da49ad46b8b2ba5e8aae80244 Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Mon, 14 Mar 2011 17:54:57 +0100 Subject: - Take new char * options into account in OS400 curl_easy_setopt_ccsid(). - Keep RPG binding, STRING_* table end check and OS400 README up to date. --- packages/OS400/ccsidcurl.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'packages/OS400/ccsidcurl.c') diff --git a/packages/OS400/ccsidcurl.c b/packages/OS400/ccsidcurl.c index ad67e1c87..f7bb98ee2 100644 --- a/packages/OS400/ccsidcurl.c +++ b/packages/OS400/ccsidcurl.c @@ -1029,7 +1029,11 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...) if (testwarn) { testwarn = 0; +#ifdef USE_TLS_SRP + if ((int) STRING_LAST != (int) STRING_TLSAUTH_PASSWORD + 1) +#else if ((int) STRING_LAST != (int) STRING_MAIL_FROM + 1) +#endif curl_mfprintf(stderr, "*** WARNING: curl_easy_setopt_ccsid() should be reworked ***\n"); } @@ -1086,6 +1090,11 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...) /* case CURLOPT_SSH_KNOWNHOSTS: */ case CURLOPT_SOCKS5_GSSAPI_SERVICE: case CURLOPT_MAIL_FROM: +#ifdef USE_TLS_SRP + case CURLOPT_TLSAUTH_USERNAME: + case CURLOPT_TLSAUTH_PASSWORD: + case CURLOPT_TLSAUTH_TYPE: +#endif s = va_arg(arg, char *); ccsid = va_arg(arg, unsigned int); -- cgit v1.2.1 From 8165e05f293800ee2b75abfecf7a6220252c5228 Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Wed, 26 Oct 2011 14:48:20 +0200 Subject: - Prepare the ILE/RPG binding and OS400 documentation for the upcoming release --- packages/OS400/ccsidcurl.c | 41 +++++++++++++++++++---------------------- 1 file changed, 19 insertions(+), 22 deletions(-) (limited to 'packages/OS400/ccsidcurl.c') diff --git a/packages/OS400/ccsidcurl.c b/packages/OS400/ccsidcurl.c index f7bb98ee2..2943ba62f 100644 --- a/packages/OS400/ccsidcurl.c +++ b/packages/OS400/ccsidcurl.c @@ -1049,52 +1049,49 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...) case CURLOPT_COOKIEFILE: case CURLOPT_COOKIEJAR: case CURLOPT_COOKIELIST: + case CURLOPT_CRLFILE: case CURLOPT_CUSTOMREQUEST: case CURLOPT_EGDSOCKET: case CURLOPT_ENCODING: - case CURLOPT_FTPPORT: case CURLOPT_FTP_ACCOUNT: case CURLOPT_FTP_ALTERNATIVE_TO_USER: + case CURLOPT_FTPPORT: case CURLOPT_INTERFACE: + case CURLOPT_ISSUERCERT: case CURLOPT_KEYPASSWD: case CURLOPT_KRBLEVEL: + case CURLOPT_MAIL_FROM: case CURLOPT_NETRC_FILE: + case CURLOPT_NOPROXY: + case CURLOPT_PASSWORD: case CURLOPT_PROXY: + case CURLOPT_PROXYPASSWORD: + case CURLOPT_PROXYUSERNAME: case CURLOPT_PROXYUSERPWD: case CURLOPT_RANDOM_FILE: case CURLOPT_RANGE: case CURLOPT_REFERER: + case CURLOPT_RTSP_SESSION_ID: + case CURLOPT_RTSP_STREAM_URI: + case CURLOPT_RTSP_TRANSPORT: + case CURLOPT_SOCKS5_GSSAPI_SERVICE: + case CURLOPT_SSH_HOST_PUBLIC_KEY_MD5: + case CURLOPT_SSH_KNOWNHOSTS: case CURLOPT_SSH_PRIVATE_KEYFILE: case CURLOPT_SSH_PUBLIC_KEYFILE: case CURLOPT_SSLCERT: case CURLOPT_SSLCERTTYPE: + case CURLOPT_SSL_CIPHER_LIST: case CURLOPT_SSLENGINE: case CURLOPT_SSLKEY: case CURLOPT_SSLKEYTYPE: - case CURLOPT_SSL_CIPHER_LIST: + case CURLOPT_TLSAUTH_PASSWORD: + case CURLOPT_TLSAUTH_TYPE: + case CURLOPT_TLSAUTH_USERNAME: case CURLOPT_URL: case CURLOPT_USERAGENT: - case CURLOPT_USERPWD: - case CURLOPT_SSH_HOST_PUBLIC_KEY_MD5: - case CURLOPT_CRLFILE: - case CURLOPT_ISSUERCERT: case CURLOPT_USERNAME: - case CURLOPT_PASSWORD: - case CURLOPT_PROXYUSERNAME: - case CURLOPT_PROXYPASSWORD: - case CURLOPT_NOPROXY: - case CURLOPT_RTSP_SESSION_ID: - case CURLOPT_RTSP_STREAM_URI: - case CURLOPT_RTSP_TRANSPORT: - /* SSH2 not (yet) implemented on OS400. */ - /* case CURLOPT_SSH_KNOWNHOSTS: */ - case CURLOPT_SOCKS5_GSSAPI_SERVICE: - case CURLOPT_MAIL_FROM: -#ifdef USE_TLS_SRP - case CURLOPT_TLSAUTH_USERNAME: - case CURLOPT_TLSAUTH_PASSWORD: - case CURLOPT_TLSAUTH_TYPE: -#endif + case CURLOPT_USERPWD: s = va_arg(arg, char *); ccsid = va_arg(arg, unsigned int); -- cgit v1.2.1 From 4b994e14fbcd67c60023ee95f967719da24e3e94 Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Mon, 12 Nov 2012 14:26:16 +0100 Subject: OS400: upgrade wrappers for the 7.28.1 release. --- packages/OS400/ccsidcurl.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'packages/OS400/ccsidcurl.c') diff --git a/packages/OS400/ccsidcurl.c b/packages/OS400/ccsidcurl.c index 2943ba62f..1baff3951 100644 --- a/packages/OS400/ccsidcurl.c +++ b/packages/OS400/ccsidcurl.c @@ -1032,7 +1032,7 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...) #ifdef USE_TLS_SRP if ((int) STRING_LAST != (int) STRING_TLSAUTH_PASSWORD + 1) #else - if ((int) STRING_LAST != (int) STRING_MAIL_FROM + 1) + if ((int) STRING_LAST != (int) STRING_MAIL_AUTH + 1) #endif curl_mfprintf(stderr, "*** WARNING: curl_easy_setopt_ccsid() should be reworked ***\n"); @@ -1051,6 +1051,7 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...) case CURLOPT_COOKIELIST: case CURLOPT_CRLFILE: case CURLOPT_CUSTOMREQUEST: + case CURLOPT_DNS_SERVERS: case CURLOPT_EGDSOCKET: case CURLOPT_ENCODING: case CURLOPT_FTP_ACCOUNT: @@ -1061,6 +1062,7 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...) case CURLOPT_KEYPASSWD: case CURLOPT_KRBLEVEL: case CURLOPT_MAIL_FROM: + case CURLOPT_MAIL_AUTH: case CURLOPT_NETRC_FILE: case CURLOPT_NOPROXY: case CURLOPT_PASSWORD: -- cgit v1.2.1