aboutsummaryrefslogtreecommitdiff
path: root/packages/OS400/os400sys.c
diff options
context:
space:
mode:
authorPatrick Monnerat <pm@datasphere.ch>2013-10-25 18:37:37 +0200
committerPatrick Monnerat <pm@datasphere.ch>2013-10-25 18:37:37 +0200
commit2cc9246477285d16d21086dfed5cc4adeee0dbc9 (patch)
tree2f360cdb14b749bc6bd28cb7982c7ae07b9b571e /packages/OS400/os400sys.c
parent650036633ffdc95c8c2181ce85582bbf3939582e (diff)
OS400: sync RPG wrapper, zlib support, fix header file names, ...
IFS compilation support, SSL GSKit backend by default, TLSv1.[12] support in GSKit for OS400 >= V7R1, no more tabs in make scripts.
Diffstat (limited to 'packages/OS400/os400sys.c')
-rw-r--r--packages/OS400/os400sys.c157
1 files changed, 106 insertions, 51 deletions
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