45 #define SIZE_MAX ((size_t) ~0) 49 #define ASCII_CCSID 819 50 #define NOCONV_CCSID 65535 51 #define ICONV_ID_SIZE 32 52 #define ICONV_OPEN_ERROR(t) ((t).return_value == -1) 54 #define ALLOC_GRANULE 8 74 memset(
buf, 0, ICONV_ID_SIZE);
96 memset(tocode + 13, 0,
sizeof tocode - 13);
101 return iconv_open(tocode, fromcode);
107 const char * s,
int slen,
int sccsid)
128 if(sccsid == dccsid) {
129 lslen = slen >= 0? slen: strlen(s) + 1;
130 i = lslen < dlen? lslen: dlen;
152 if((
int) iconv(cd, (
char * *) &s, &lslen, &d, &dlen) < 0)
170 static const char nullbyte = 0;
174 dlen = (
size_t) (slen < 0? strlen(s): slen) + 1;
179 return (
char *) NULL;
181 l =
convert(d, dlen, dccsid, s, slen, sccsid);
185 return (
char *) NULL;
197 return (
char *) NULL;
203 if((
size_t) l < dlen) {
246 i = strlen(aversion) + 1;
250 return (
char *) NULL;
253 return (
char *) NULL;
261 unsigned int sccsid,
unsigned int dccsid)
269 return (
char *) NULL;
275 return (
char *) NULL;
281 return (
char *) NULL;
292 unsigned int sccsid,
unsigned int dccsid)
300 return (
char *) NULL;
306 return (
char *) NULL;
312 return (
char *) NULL;
318 *outlength = strlen(s);
326 const char *
data,
unsigned int ccsid)
370 char * * bufp,
int * left,
unsigned int ccsid)
407 #if CURLVERSION_NOW != CURLVERSION_FOURTH 408 #error curl_version_info_data structure has changed: upgrade this procedure. 437 n += strlen(p->
host) + 1;
446 n += strlen(p->
ares) + 1;
449 n += strlen(p->
libidn) + 1;
459 n += nproto *
sizeof(
const char *);
470 memcpy((
char *)
id, (
char *) p,
sizeof *p);
473 int i = nproto *
sizeof id->protocols[0];
475 id->protocols = (
const char *
const *) cp;
480 for(i = 0;
id->protocols[
i]; i++)
527 return (
const char *) NULL;
530 return (
const char *) NULL;
532 return (
const char *)
buf;
552 return (
const char *) NULL;
555 return (
const char *) NULL;
557 return (
const char *)
buf;
577 return (
const char *) NULL;
580 return (
const char *) NULL;
582 return (
const char *)
buf;
623 paramp = va_arg(arg,
void *);
630 ccsid = va_arg(arg,
unsigned int);
631 cpp = (
char * *) paramp;
643 ccsid = va_arg(arg,
unsigned int);
706 case CURLFORM_FILENAME:
707 case CURLFORM_CONTENTTYPE:
708 case CURLFORM_BUFFER:
710 case CURLFORM_FILECONTENT:
711 case CURLFORM_COPYCONTENTS:
712 case CURLFORM_COPYNAME:
727 if(forms[nargs].
value)
728 free((
char *) forms[nargs].value);
730 free((
char *) forms);
736 int formx,
int lengthx,
unsigned int ccsid)
743 if(formx < 0 || !forms[formx].
value)
747 l = (int) forms[lengthx].value;
749 l = strlen(forms[formx].value) + 1;
757 forms[formx].value, l, ccsid);
769 forms[formx].
value = cp;
772 forms[lengthx].
value = (
char *) l;
789 unsigned int lformlen;
797 unsigned int contentccsid;
798 unsigned int nameccsid;
818 lforms =
malloc(lformlen *
sizeof *lforms);
833 va_start(arg, last_post);
838 if(nargs >= lformlen) {
840 tforms =
realloc(lforms, lformlen *
sizeof *lforms);
856 value = forms->
value;
864 if(option == CURLFORM_END)
885 case CURLFORM_COPYNAME:
886 option = CURLFORM_PTRNAME;
888 case CURLFORM_PTRNAME:
895 value = va_arg(arg,
char *);
896 nameccsid = (
unsigned int) va_arg(arg,
long);
899 nameccsid = (
unsigned int) forms->
value;
905 case CURLFORM_COPYCONTENTS:
912 value = va_arg(arg,
char *);
913 contentccsid = (
unsigned int) va_arg(arg,
long);
916 contentccsid = (
unsigned int) forms->
value;
922 case CURLFORM_PTRCONTENTS:
923 case CURLFORM_BUFFERPTR:
925 value = va_arg(arg,
char *);
929 case CURLFORM_CONTENTSLENGTH:
933 value = (
char *) va_arg(arg,
long);
937 case CURLFORM_CONTENTLEN:
945 case CURLFORM_NAMELENGTH:
949 value = (
char *) va_arg(arg,
long);
953 case CURLFORM_BUFFERLENGTH:
955 value = (
char *) va_arg(arg,
long);
959 case CURLFORM_CONTENTHEADER:
961 value = (
char *) va_arg(arg,
struct curl_slist *);
965 case CURLFORM_STREAM:
967 value = (
char *) va_arg(arg,
void *);
971 case CURLFORM_CONTENTTYPE:
992 value = va_arg(arg,
char *);
993 ccsid = (
unsigned int) va_arg(arg,
long);
996 ccsid = (
unsigned int) forms->
value;
1009 value = lforms[nargs].value;
1015 lforms[nargs].value =
value;
1016 lforms[nargs++].option =
option;
1027 lforms[namex].option = CURLFORM_COPYNAME;
1040 lforms[nargs].option = CURLFORM_END;
1042 CURLFORM_ARRAY, lforms, CURLFORM_END);
1087 return ret == l? len: -1;
1116 static char testwarn = 1;
1130 "*** WARNING: curl_easy_setopt_ccsid() should be reworked ***\n");
1138 case CURLOPT_ABSTRACT_UNIX_SOCKET:
1139 case CURLOPT_CAINFO:
1140 case CURLOPT_CAPATH:
1141 case CURLOPT_COOKIE:
1142 case CURLOPT_COOKIEFILE:
1143 case CURLOPT_COOKIEJAR:
1144 case CURLOPT_COOKIELIST:
1145 case CURLOPT_CRLFILE:
1146 case CURLOPT_CUSTOMREQUEST:
1147 case CURLOPT_DEFAULT_PROTOCOL:
1148 case CURLOPT_DNS_SERVERS:
1149 case CURLOPT_EGDSOCKET:
1151 case CURLOPT_FTPPORT:
1152 case CURLOPT_FTP_ACCOUNT:
1153 case CURLOPT_FTP_ALTERNATIVE_TO_USER:
1154 case CURLOPT_INTERFACE:
1155 case CURLOPT_ISSUERCERT:
1156 case CURLOPT_KEYPASSWD:
1157 case CURLOPT_KRBLEVEL:
1158 case CURLOPT_LOGIN_OPTIONS:
1159 case CURLOPT_MAIL_AUTH:
1160 case CURLOPT_MAIL_FROM:
1161 case CURLOPT_NETRC_FILE:
1162 case CURLOPT_NOPROXY:
1163 case CURLOPT_PASSWORD:
1164 case CURLOPT_PINNEDPUBLICKEY:
1165 case CURLOPT_PRE_PROXY:
1167 case CURLOPT_PROXYPASSWORD:
1168 case CURLOPT_PROXYUSERNAME:
1169 case CURLOPT_PROXYUSERPWD:
1170 case CURLOPT_PROXY_CAINFO:
1171 case CURLOPT_PROXY_CAPATH:
1172 case CURLOPT_PROXY_CRLFILE:
1173 case CURLOPT_PROXY_KEYPASSWD:
1174 case CURLOPT_PROXY_PINNEDPUBLICKEY:
1175 case CURLOPT_PROXY_SERVICE_NAME:
1176 case CURLOPT_PROXY_SSLCERT:
1177 case CURLOPT_PROXY_SSLCERTTYPE:
1178 case CURLOPT_PROXY_SSLKEY:
1179 case CURLOPT_PROXY_SSLKEYTYPE:
1180 case CURLOPT_PROXY_SSL_CIPHER_LIST:
1181 case CURLOPT_PROXY_TLSAUTH_PASSWORD:
1182 case CURLOPT_PROXY_TLSAUTH_TYPE:
1183 case CURLOPT_PROXY_TLSAUTH_USERNAME:
1184 case CURLOPT_RANDOM_FILE:
1186 case CURLOPT_REFERER:
1187 case CURLOPT_RTSP_SESSION_ID:
1188 case CURLOPT_RTSP_STREAM_URI:
1189 case CURLOPT_RTSP_TRANSPORT:
1190 case CURLOPT_SERVICE_NAME:
1191 case CURLOPT_SOCKS5_GSSAPI_SERVICE:
1192 case CURLOPT_SSH_HOST_PUBLIC_KEY_MD5:
1193 case CURLOPT_SSH_KNOWNHOSTS:
1194 case CURLOPT_SSH_PRIVATE_KEYFILE:
1195 case CURLOPT_SSH_PUBLIC_KEYFILE:
1196 case CURLOPT_SSLCERT:
1197 case CURLOPT_SSLCERTTYPE:
1198 case CURLOPT_SSLENGINE:
1199 case CURLOPT_SSLKEY:
1200 case CURLOPT_SSLKEYTYPE:
1201 case CURLOPT_SSL_CIPHER_LIST:
1202 case CURLOPT_TLSAUTH_PASSWORD:
1203 case CURLOPT_TLSAUTH_TYPE:
1204 case CURLOPT_TLSAUTH_USERNAME:
1205 case CURLOPT_UNIX_SOCKET_PATH:
1207 case CURLOPT_USERAGENT:
1208 case CURLOPT_USERNAME:
1209 case CURLOPT_USERPWD:
1210 case CURLOPT_XOAUTH2_BEARER:
1211 s = va_arg(arg,
char *);
1212 ccsid = va_arg(arg,
unsigned int);
1227 case CURLOPT_COPYPOSTFIELDS:
1231 s = va_arg(arg,
char *);
1232 ccsid = va_arg(arg,
unsigned int);
1254 if(pfsize < 0 || pfsize >
SIZE_MAX) {
1262 if(pfsize > SIZE_MAX)
1288 case CURLOPT_ERRORBUFFER:
1305 return (
char *)
value;
1311 size_t num,
unsigned int ccsid)
1314 char *
d = (
char *) NULL;
1326 unsigned int ccsidin,
unsigned int ccsidout)
1329 char *
d = (
char *) NULL;
1337 free((
char *) header);
CURL_EXTERN char * curl_pushheader_bynum(struct curl_pushheaders *h, size_t num)
char * curl_pushheader_bynum_cssid(struct curl_pushheaders *h, size_t num, unsigned int ccsid)
CURL_EXTERN curl_version_info_data * curl_version_info(CURLversion)
static void Curl_formadd_release_local(struct curl_forms *forms, int nargs, int skip)
CURL_EXTERN char * curl_easy_escape(CURL *handle, const char *string, int length)
struct curl_slist * Curl_slist_append_nodup(struct curl_slist *list, char *data)
char *(* Curl_thread_buffer)(localkey_t key, long size)
static int Curl_formadd_convert(struct curl_forms *forms, int formx, int lengthx, unsigned int ccsid)
static char * dynconvert(int dccsid, const char *s, int slen, int sccsid)
static size_t Curl_formget_callback_ccsid(void *arg, const char *buf, size_t len)
CURLcode curl_easy_setopt_ccsid(CURL *curl, CURLoption tag,...)
CURLFORMcode curl_formadd_ccsid(struct curl_httppost **httppost, struct curl_httppost **last_post,...)
#define CURLINFO_TYPEMASK
#define realloc(ptr, size)
static int convert(char *d, size_t dlen, int dccsid, const char *s, int slen, int sccsid)
CURL_EXTERN const char * curl_multi_strerror(CURLMcode)
geometry_msgs::TransformStamped t
UNITTEST_START int result
#define curl_easy_setopt(handle, option, value)
CURL_EXTERN int curl_msprintf(char *buffer, const char *format,...)
curl_formget_callback append
static srvr_sockaddr_union_t from
char * curl_pushheader_byname_ccsid(struct curl_pushheaders *h, const char *header, unsigned int ccsidin, unsigned int ccsidout)
memcpy(filename, filename1, strlen(filename1))
CURL_EXTERN char * curl_pushheader_byname(struct curl_pushheaders *h, const char *name)
void curl_certinfo_free_all(struct curl_certinfo *info)
CURL_EXTERN int curl_mfprintf(FILE *fd, const char *format,...)
curl_easy_setopt expects a curl_off_t argument for this option curl_easy_setopt expects a curl_write_callback argument for this option curl_easy_setopt expects a curl_ioctl_callback argument for this option curl_easy_setopt expects a curl_opensocket_callback argument for this option curl_easy_setopt expects a curl_debug_callback argument for this option curl_easy_setopt expects a curl_conv_callback argument for this option curl_easy_setopt expects a private data pointer as argument for this option curl_easy_setopt expects a FILE *argument for this option curl_easy_setopt expects a struct curl_httppost *argument for this option curl_easy_setopt expects a struct curl_slist *argument for this option curl_easy_getinfo expects a pointer to char *for this info curl_easy_getinfo expects a pointer to double for this info curl_easy_getinfo expects a pointer to struct curl_tlssessioninfo *for this info curl_easy_getinfo expects a pointer to curl_socket_t for this info size_t
size_t(* curl_formget_callback)(void *arg, const char *buf, size_t len)
CURL_EXTERN CURLFORMcode curl_formadd(struct curl_httppost **httppost, struct curl_httppost **last_post,...)
const char * libz_version
time_t curl_getdate_ccsid(const char *p, const time_t *unused, unsigned int ccsid)
static iconv_t iconv_open_CCSID(unsigned int ccsidout, unsigned int ccsidin, unsigned int cstr)
CURL_EXTERN struct curl_slist * curl_slist_append(struct curl_slist *, const char *)
struct curl_slist * curl_slist_append_ccsid(struct curl_slist *list, const char *data, unsigned int ccsid)
UNITTEST_START struct Curl_easy data
CURL_TYPEOF_CURL_OFF_T curl_off_t
const char * curl_easy_strerror_ccsid(CURLcode error, unsigned int ccsid)
CURLcode curl_easy_getinfo_ccsid(CURL *curl, CURLINFO info,...)
const char * curl_share_strerror_ccsid(CURLSHcode error, unsigned int ccsid)
char * curl_easy_unescape_ccsid(CURL *handle, const char *string, int length, int *outlength, unsigned int sccsid, unsigned int dccsid)
static int convert_version_info_string(const char **stringp, char **bufp, int *left, unsigned int ccsid)
static int Curl_is_formadd_string(CURLformoption option)
struct curl_slist ** certinfo
curl_version_info_data * curl_version_info_ccsid(CURLversion stamp, unsigned int ccsid)
CURL_EXTERN time_t curl_getdate(const char *p, const time_t *unused)
char * curl_version_ccsid(unsigned int ccsid)
#define ICONV_OPEN_ERROR(t)
CURL_EXTERN int curl_formget(struct curl_httppost *form, void *arg, curl_formget_callback append)
static struct curl_slist * slist_convert(int dccsid, struct curl_slist *from, int sccsid)
static void makeOS400IconvCode(char buf[ICONV_ID_SIZE], unsigned int ccsid)
const char * curl_multi_strerror_ccsid(CURLMcode error, unsigned int ccsid)
const char * libssh_version
UNITTEST_START int * value
int curl_formget_ccsid(struct curl_httppost *form, void *arg, curl_formget_callback append, unsigned int ccsid)
CURLcode Curl_setopt(struct Curl_easy *data, CURLoption option, va_list param)
#define MAX_CONV_EXPANSION
CURL_EXTERN const char * curl_share_strerror(CURLSHcode)
static void skip(const char **date)
char * curl_form_long_value(long value)
CURL_EXTERN char * curl_easy_unescape(CURL *handle, const char *string, int length, int *outlength)
CURL_EXTERN const char * curl_easy_strerror(CURLcode)
CURL_EXTERN void curl_slist_free_all(struct curl_slist *)
char * curl_easy_escape_ccsid(CURL *handle, const char *string, int length, unsigned int sccsid, unsigned int dccsid)
const char *const * protocols
#define calloc(nbelem, size)
CURL_EXTERN char * curl_version(void)
CURLcode Curl_getinfo(struct Curl_easy *data, CURLINFO info,...)