summaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
Diffstat (limited to 'packages')
-rw-r--r--packages/OS400/README.OS4001
-rw-r--r--packages/OS400/ccsidcurl.c7
-rw-r--r--packages/OS400/curl.inc.in29
-rw-r--r--packages/OS400/initscript.sh71
-rw-r--r--packages/OS400/make-include.sh52
-rw-r--r--packages/OS400/make-lib.sh14
-rw-r--r--packages/OS400/make-tests.sh6
-rw-r--r--packages/OS400/os400sys.c157
-rw-r--r--packages/OS400/os400sys.h2
9 files changed, 233 insertions, 106 deletions
diff --git a/packages/OS400/README.OS400 b/packages/OS400/README.OS400
index 73e81f8c3..4a39738a9 100644
--- a/packages/OS400/README.OS400
+++ b/packages/OS400/README.OS400
@@ -118,6 +118,7 @@ options:
CURLOPT_USERAGENT
CURLOPT_USERNAME
CURLOPT_USERPWD
+ CURLOPT_XOAUTH2_BEARER
Else it is the same as for curl_easy_setopt().
Note that CURLOPT_ERRORBUFFER is not in the list above, since it gives the
address of an (empty) character buffer, not the address of a string.
diff --git a/packages/OS400/ccsidcurl.c b/packages/OS400/ccsidcurl.c
index a37f79027..9049d9e49 100644
--- a/packages/OS400/ccsidcurl.c
+++ b/packages/OS400/ccsidcurl.c
@@ -1111,11 +1111,7 @@ 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_AUTH + 1)
-#endif
+ if((int) STRING_LAST != (int) STRING_BEARER + 1)
curl_mfprintf(stderr,
"*** WARNING: curl_easy_setopt_ccsid() should be reworked ***\n");
}
@@ -1176,6 +1172,7 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...)
case CURLOPT_USERAGENT:
case CURLOPT_USERNAME:
case CURLOPT_USERPWD:
+ case CURLOPT_XOAUTH2_BEARER:
s = va_arg(arg, char *);
ccsid = va_arg(arg, unsigned int);
diff --git a/packages/OS400/curl.inc.in b/packages/OS400/curl.inc.in
index b14d84f83..edd516740 100644
--- a/packages/OS400/curl.inc.in
+++ b/packages/OS400/curl.inc.in
@@ -115,6 +115,8 @@
d c X'00004000'
d CURL_VERSION_NTLM_WB...
d c X'00008000'
+ d CURL_VERSION_HTTP2...
+ d c X'00010000'
*
d HTTPPOST_FILENAME...
d c X'00000001'
@@ -212,6 +214,8 @@
d c 1
d CURL_HTTP_VERSION_1_1...
d c 2
+ d CURL_HTTP_VERSION_2_0...
+ d c 3
*
d CURL_NETRC_IGNORED...
d c 0
@@ -1168,6 +1172,14 @@
d c 00218
d CURLOPT_XFERINFOFUNCTION...
d c 20219
+ d CURLOPT_XOAUTH2_BEARER...
+ d c 10220
+ d CURLOPT_DNS_INTERFACE...
+ d c 10221
+ d CURLOPT_DNS_LOCAL_IP4...
+ d c 10222
+ d CURLOPT_DNS_LOCAL_IP6...
+ d c 10223
*
/if not defined(CURL_NO_OLDIES)
d CURLOPT_SSLKEYPASSWD...
@@ -1457,7 +1469,9 @@
d c 5
d CURLM_UNKNOWN_OPTION...
d c 6
- d CURLM_LAST c 7
+ d CURLM_ADDED_ALREADY...
+ d c 7
+ d CURLM_LAST c 8
*
d CURLMSG s 10i 0 based(######ptr######) Enum
d CURLMSG_NONE c 0
@@ -1566,12 +1580,7 @@
d addrlen 10u 0
d addr 16 struct sockaddr
*
- d curl_khkey ds based(######ptr######)
- d qualified
- d key * const char *
- d len 10u 0
- d keytype 10i 0
- *
+ d curl_khtype s 10i 0 based(######ptr######) enum
d CURLKHTYPE_UNKNOWN...
d c 0
d CURLKHTYPE_RSA1...
@@ -1581,6 +1590,12 @@
d CURLKHTYPE_DSS...
d c 3
*
+ d curl_khkey ds based(######ptr######)
+ d qualified
+ d key * const char *
+ d len 10u 0
+ d keytype like(curl_khtype)
+ *
d curl_forms ds based(######ptr######)
d qualified
d option like(CURLformoption)
diff --git a/packages/OS400/initscript.sh b/packages/OS400/initscript.sh
index c07355fc0..64147e393 100644
--- a/packages/OS400/initscript.sh
+++ b/packages/OS400/initscript.sh
@@ -1,6 +1,16 @@
#!/bin/sh
+setenv()
+
+{
+ # Define and export.
+
+ eval ${1}="${2}"
+ export ${1}
+}
+
+
case "${SCRIPTDIR}" in
/*) ;;
*) SCRIPTDIR="`pwd`/${SCRIPTDIR}"
@@ -32,18 +42,23 @@ export SONAME
#
################################################################################
-TARGETLIB='CURL' # Target OS/400 program library
-STATBNDDIR='CURL_A' # Static binding directory.
-DYNBNDDIR='CURL' # Dynamic binding directory.
-SRVPGM="CURL.${SONAME}" # Service program.
-TGTCCSID='500' # Target CCSID of objects
-DEBUG='*ALL' # Debug level
-OPTIMIZE='10' # Optimisation level
-OUTPUT='*NONE' # Compilation output option.
-TGTRLS='V5R3M0' # Target OS release
+setenv TARGETLIB 'CURL' # Target OS/400 program library.
+setenv STATBNDDIR 'CURL_A' # Static binding directory.
+setenv DYNBNDDIR 'CURL' # Dynamic binding directory.
+setenv SRVPGM "CURL.${SONAME}" # Service program.
+setenv TGTCCSID '500' # Target CCSID of objects.
+setenv DEBUG '*ALL' # Debug level.
+setenv OPTIMIZE '10' # Optimisation level
+setenv OUTPUT '*NONE' # Compilation output option.
+setenv TGTRLS 'V5R3M0' # Target OS release.
+setenv IFSDIR '/curl' # Installation IFS directory.
+
+# Define ZLIB availability and locations.
-export TARGETLIB STATBNDDIR DYNBNDDIR SRVPGM TGTCCSID DEBUG OPTIMIZE OUTPUT
-export TGTRLS
+setenv WITH_ZLIB 0 # Define to 1 to enable.
+setenv ZLIB_INCLUDE '/zlib/include' # ZLIB include IFS directory.
+setenv ZLIB_LIB 'ZLIB' # ZLIB library.
+setenv ZLIB_BNDDIR 'ZLIB_A' # ZLIB binding directory.
################################################################################
@@ -133,14 +148,26 @@ make_module()
CMD="${CMD} LOCALETYPE(*LOCALE)"
CMD="${CMD} INCDIR('/qibm/proddata/qadrt/include'"
CMD="${CMD} '${TOPDIR}/include/curl' '${TOPDIR}/include'"
- CMD="${CMD} '${TOPDIR}/packages/OS400' ${INCLUDES})"
+ CMD="${CMD} '${TOPDIR}/packages/OS400'"
+
+ if [ "${WITH_ZLIB}" != "0" ]
+ then CMD="${CMD} '${ZLIB_INCLUDE}'"
+ fi
+
+ CMD="${CMD} ${INCLUDES})"
CMD="${CMD} TGTCCSID(${TGTCCSID}) TGTRLS(${TGTRLS})"
CMD="${CMD} OUTPUT(${OUTPUT})"
CMD="${CMD} OPTIMIZE(${OPTIMIZE})"
CMD="${CMD} DBGVIEW(${DEBUG})"
- if [ "${3}" ]
- then CMD="${CMD} DEFINE(${3})"
+ DEFINES="${3}"
+
+ if [ "${WITH_ZLIB}" != "0" ]
+ then DEFINES="${DEFINES} HAVE_LIBZ HAVE_ZLIB_H"
+ fi
+
+ if [ "${DEFINES}" ]
+ then CMD="${CMD} DEFINE(${DEFINES})"
fi
system "${CMD}"
@@ -154,11 +181,17 @@ make_module()
db2_name()
{
- basename "${1}" |
- tr 'a-z-' 'A-Z_' |
- sed -e 's/\..*//' \
- -e 's/^CURL_*/C/' \
- -e 's/^\(.\).*\(.........\)$/\1\2/'
+ if [ "${2}" = 'nomangle' ]
+ then basename "${1}" |
+ tr 'a-z-' 'A-Z_' |
+ sed -e 's/\..*//' \
+ -e 's/^\(.\).*\(.........\)$/\1\2/'
+ else basename "${1}" |
+ tr 'a-z-' 'A-Z_' |
+ sed -e 's/\..*//' \
+ -e 's/^CURL_*/C/' \
+ -e 's/^\(.\).*\(.........\)$/\1\2/'
+ fi
}
diff --git a/packages/OS400/make-include.sh b/packages/OS400/make-include.sh
index 834ee2fce..ad72cf4a7 100644
--- a/packages/OS400/make-include.sh
+++ b/packages/OS400/make-include.sh
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# Installation of the include files in the OS/400 library.
+# Installation of the header files in the OS/400 library.
#
SCRIPTDIR=`dirname "${0}"`
@@ -8,16 +8,16 @@ SCRIPTDIR=`dirname "${0}"`
cd "${TOPDIR}/include"
-# Produce the curlbuild.h include file if not yet in distribution (CVS).
+# Produce the curlbuild.h header file if not yet in distribution (CVS).
if action_needed curl/curlbuild.h
-then if action_needed curl/curlbuild.h curl/curlbuild.h.dist
- then cp -p curl/curlbuild.h.dist curl/curlbuild.h
- fi
+then if action_needed curl/curlbuild.h curl/curlbuild.h.dist
+ then cp -p curl/curlbuild.h.dist curl/curlbuild.h
+ fi
fi
-# Create the OS/400 source program file for the include files.
+# Create the OS/400 source program file for the header files.
SRCPF="${LIBIFSNAME}/H.FILE"
@@ -28,16 +28,25 @@ then CMD="CRTSRCPF FILE(${TARGETLIB}/H) RCDLEN(112)"
fi
+# Create the IFS directory for the header files.
+
+IFSINCLUDE="${IFSDIR}/include/curl"
+
+if action_needed "${IFSINCLUDE}"
+then mkdir -p "${IFSINCLUDE}"
+fi
+
+
# Enumeration values are used as va_arg tagfields, so they MUST be
# integers.
copy_hfile()
{
- destfile="${1}"
- srcfile="${2}"
- shift
- shift
+ destfile="${1}"
+ srcfile="${2}"
+ shift
+ shift
sed -e '1i\
#pragma enum(int)\
' "${@}" -e '$a\
@@ -48,23 +57,34 @@ copy_hfile()
# Copy the header files.
for HFILE in curl/*.h ${SCRIPTDIR}/ccsidcurl.h
-do DEST="${SRCPF}/`db2_name \"${HFILE}\"`.MBR"
+do case "`basename \"${HFILE}\" .h`" in
+ stdcheaders|typecheck-gcc)
+ continue;;
+ esac
+
+ DEST="${SRCPF}/`db2_name \"${HFILE}\" nomangle`.MBR"
+
if action_needed "${DEST}" "${HFILE}"
then copy_hfile "${DEST}" "${HFILE}"
+ IFSDEST="${IFSINCLUDE}/`basename \"${HFILE}\"`"
+ rm -f "${IFSDEST}"
+ ln -s "${DEST}" "${IFSDEST}"
fi
done
-# Copy the ILE/RPG include file, setting-up version number.
+# Copy the ILE/RPG header file, setting-up version number.
- versioned_copy "${SCRIPTDIR}/curl.inc.in" "${SRCPF}/CURL.INC.MBR"
+versioned_copy "${SCRIPTDIR}/curl.inc.in" "${SRCPF}/CURL.INC.MBR"
+rm -f "${IFSINCLUDE}/curl.inc.rpgle"
+ln -s "${SRCPF}/CURL.INC.MBR" "${IFSINCLUDE}/curl.inc.rpgle"
-# Duplicate file H as CURL to support more include path forms.
+# Duplicate file H as CURL to support more include path forms.
if action_needed "${LIBIFSNAME}/CURL.FILE"
-then :
-else system "DLTF FILE(${TARGETLIB}/CURL)"
+then :
+else system "DLTF FILE(${TARGETLIB}/CURL)"
fi
CMD="CRTDUPOBJ OBJ(H) FROMLIB(${TARGETLIB}) OBJTYPE(*FILE) TOLIB(*FROMLIB)"
diff --git a/packages/OS400/make-lib.sh b/packages/OS400/make-lib.sh
index e2a87082d..5e1f2042b 100644
--- a/packages/OS400/make-lib.sh
+++ b/packages/OS400/make-lib.sh
@@ -83,12 +83,12 @@ fi
# Gather the list of symbols to export.
-EXPORTS=`grep '^CURL_EXTERN[ ]' \
+EXPORTS=`grep '^CURL_EXTERN[[:space:]]' \
"${TOPDIR}"/include/curl/*.h \
"${SCRIPTDIR}/ccsidcurl.h" |
- sed -e 's/^.*CURL_EXTERN[ ]\(.*\)(.*$/\1/' \
- -e 's/[ ]*$//' \
- -e 's/^.*[ ][ ]*//' \
+ sed -e 's/^.*CURL_EXTERN[[:space:]]\(.*\)(.*$/\1/' \
+ -e 's/[[:space:]]*$//' \
+ -e 's/^.*[[:space:]][[:space:]]*//' \
-e 's/^\*//' \
-e 's/(\(.*\))/\1/'`
@@ -121,7 +121,11 @@ if [ "${LINK}" ]
then CMD="CRTSRVPGM SRVPGM(${TARGETLIB}/${SRVPGM})"
CMD="${CMD} SRCFILE(${TARGETLIB}/TOOLS) SRCMBR(BNDSRC)"
CMD="${CMD} MODULE(${TARGETLIB}/OS400)"
- CMD="${CMD} BNDDIR(${TARGETLIB}/${STATBNDDIR})"
+ CMD="${CMD} BNDDIR(${TARGETLIB}/${STATBNDDIR}"
+ if [ "${WITH_ZLIB}" != 0 ]
+ then CMD="${CMD} ${ZLIB_LIB}/${ZLIB_BNDDIR}"
+ fi
+ CMD="${CMD})"
CMD="${CMD} BNDSRVPGM(QADRTTS QGLDCLNT QGLDBRDR)"
CMD="${CMD} TEXT('curl API library')"
CMD="${CMD} TGTRLS(${TGTRLS})"
diff --git a/packages/OS400/make-tests.sh b/packages/OS400/make-tests.sh
index cee3ed95d..9240b7ff6 100644
--- a/packages/OS400/make-tests.sh
+++ b/packages/OS400/make-tests.sh
@@ -28,11 +28,11 @@ eval "`sed -e ': begin' \
-e 's/\\\\\\n/ /' \
-e 'b begin' \
-e '}' \
- -e '/^[A-Za-z_][A-Za-z0-9_]*[ ]*[=]/b keep' \
+ -e '/^[A-Za-z_][A-Za-z0-9_]*[[:space:]]*[=]/b keep' \
-e 'd' \
-e ': keep' \
- -e 's/[ ]*=[ ]*/=/' \
- -e 's/=\\(.*[^ ]\\)[ ]*$/=\\"\\1\\"/' \
+ -e 's/[[:space:]]*=[[:space:]]*/=/' \
+ -e 's/=\\(.*[^[:space:]]\\)[[:space:]]*$/=\\"\\1\\"/' \
-e 's/\\$(\\([^)]*\\))/${\\1}/g' \
< Makefile.inc`"
diff --git a/packages/OS400/os400sys.c b/packages/OS400/os400sys.c
index ab0c4fb29..90160878d 100644
--- a/packages/OS400/os400sys.c
+++ b/packages/OS400/os400sys.c
@@ -38,6 +38,10 @@
#include <qadrt.h>
#include <errno.h>
+#ifdef HAVE_ZLIB_H
+#include <zlib.h>
+#endif
+
#ifdef USE_QSOSSL
#include <qsossl.h>
#endif
@@ -241,6 +245,28 @@ buffer_undef(localkey_t key, long size)
}
+static char *
+set_thread_string(localkey_t key, const char * s)
+
+{
+ int i;
+ char * cp;
+
+ if(!s)
+ return (char *) NULL;
+
+ i = strlen(s) + 1;
+ cp = Curl_thread_buffer(key, MAX_CONV_EXPANSION * i + 1);
+
+ if(cp) {
+ i = QadrtConvertE2A(cp, s, MAX_CONV_EXPANSION * i, i);
+ cp[i] = '\0';
+ }
+
+ return cp;
+}
+
+
int
Curl_getnameinfo_a(const struct sockaddr * sa, curl_socklen_t salen,
char * nodename, curl_socklen_t nodenamelen,
@@ -434,23 +460,8 @@ char *
Curl_SSL_Strerror_a(int sslreturnvalue, SSLErrorMsg * serrmsgp)
{
- int i;
- char * cp;
- char * cp2;
-
- cp = SSL_Strerror(sslreturnvalue, serrmsgp);
-
- if (!cp)
- return cp;
-
- i = strlen(cp);
-
- if (!(cp2 = Curl_thread_buffer(LK_SSL_ERROR, MAX_CONV_EXPANSION * i + 1)))
- return cp2;
-
- i = QadrtConvertE2A(cp2, cp, MAX_CONV_EXPANSION * i, i);
- cp2[i] = '\0';
- return cp2;
+ return set_thread_string(LK_SSL_ERROR,
+ SSL_Strerror(sslreturnvalue, serrmsgp));
}
#endif /* USE_QSOSSL */
@@ -825,23 +836,7 @@ const char *
Curl_gsk_strerror_a(int gsk_return_value)
{
- int i;
- const char * cp;
- char * cp2;
-
- cp = gsk_strerror(gsk_return_value);
-
- if (!cp)
- return cp;
-
- i = strlen(cp);
-
- if (!(cp2 = Curl_thread_buffer(LK_GSK_ERROR, MAX_CONV_EXPANSION * i + 1)))
- return cp2;
-
- i = QadrtConvertE2A(cp2, cp, MAX_CONV_EXPANSION * i, i);
- cp2[i] = '\0';
- return cp2;
+ return set_thread_string(LK_GSK_ERROR, gsk_strerror(gsk_return_value));
}
int
@@ -1235,23 +1230,7 @@ char *
Curl_ldap_err2string_a(int error)
{
- int i;
- char * cp;
- char * cp2;
-
- cp = ldap_err2string(error);
-
- if (!cp)
- return cp;
-
- i = strlen(cp);
-
- if (!(cp2 = Curl_thread_buffer(LK_LDAP_ERROR, MAX_CONV_EXPANSION * i + 1)))
- return cp2;
-
- i = QadrtConvertE2A(cp2, cp, MAX_CONV_EXPANSION * i, i);
- cp2[i] = '\0';
- return cp2;
+ return set_thread_string(LK_LDAP_ERROR, ldap_err2string(error));
}
@@ -1492,3 +1471,79 @@ Curl_os400_recvfrom(int sd, char * buffer, int buflen, int flags,
*addrlen = laddrlen;
return rcvlen;
}
+
+
+#ifdef HAVE_LIBZ
+const char *
+Curl_os400_zlibVersion(void)
+
+{
+ return set_thread_string(LK_ZLIB_VERSION, zlibVersion());
+}
+
+
+int
+Curl_os400_inflateInit_(z_streamp strm, const char * version, int stream_size)
+
+{
+ z_const char * msgb4 = strm->msg;
+ int ret;
+
+ ret = inflateInit(strm);
+
+ if(strm->msg != msgb4)
+ strm->msg = set_thread_string(LK_ZLIB_MSG, strm->msg);
+
+ return ret;
+}
+
+
+int
+Curl_os400_inflateInit2_(z_streamp strm, int windowBits,
+ const char * version, int stream_size)
+
+{
+ z_const char * msgb4 = strm->msg;
+ int ret;
+
+ ret = inflateInit2(strm, windowBits);
+
+ if(strm->msg != msgb4)
+ strm->msg = set_thread_string(LK_ZLIB_MSG, strm->msg);
+
+ return ret;
+}
+
+
+int
+Curl_os400_inflate(z_streamp strm, int flush)
+
+{
+ z_const char * msgb4 = strm->msg;
+ int ret;
+
+ ret = inflate(strm, flush);
+
+ if(strm->msg != msgb4)
+ strm->msg = set_thread_string(LK_ZLIB_MSG, strm->msg);
+
+ return ret;
+}
+
+
+int
+Curl_os400_inflateEnd(z_streamp strm)
+
+{
+ z_const char * msgb4 = strm->msg;
+ int ret;
+
+ ret = inflateEnd(strm);
+
+ if(strm->msg != msgb4)
+ strm->msg = set_thread_string(LK_ZLIB_MSG, strm->msg);
+
+ return ret;
+}
+
+#endif
diff --git a/packages/OS400/os400sys.h b/packages/OS400/os400sys.h
index 234bf5e80..114469222 100644
--- a/packages/OS400/os400sys.h
+++ b/packages/OS400/os400sys.h
@@ -39,6 +39,8 @@ typedef enum {
LK_EASY_STRERROR,
LK_SHARE_STRERROR,
LK_MULTI_STRERROR,
+ LK_ZLIB_VERSION,
+ LK_ZLIB_MSG,
LK_LAST
} localkey_t;