Günter Knauf's NetWare changes.
authorDaniel Stenberg <daniel@haxx.se>
Wed, 17 Mar 2004 12:46:42 +0000 (12:46 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Wed, 17 Mar 2004 12:46:42 +0000 (12:46 +0000)
20 files changed:
CHANGES
Makefile.dist
RELEASE-NOTES
docs/INSTALL
include/curl/multi.h
lib/Makefile.netware [new file with mode: 0644]
lib/config-netware.h [new file with mode: 0644]
lib/connect.c
lib/ftp.c
lib/hostip.c
lib/if2ip.c
lib/libcurl.imp [new file with mode: 0644]
lib/nwlib.c [new file with mode: 0644]
lib/setup.h
packages/Makefile.am
packages/NetWare/get_ver.awk [new file with mode: 0644]
src/Makefile.netware [new file with mode: 0644]
src/config-netware.h [new file with mode: 0644]
src/main.c
src/setup.h

diff --git a/CHANGES b/CHANGES
index d800722..e23407c 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,10 @@
 
                                   Changelog
 
+Daniel (17 March 2004)
+- Günter Knauf brought patches, code and makefiles to build curl on Novell
+  NetWare.
+
 Daniel (15 March 2004)
 - Lots of libcurl man pages were updated to contain references to other man
   pages the recognized way so that they appear as nice hyperlinks in the HTML
index 45593f4..4532948 100644 (file)
@@ -81,7 +81,9 @@ amiga:
        cd ./lib && make -f makefile.amiga
        cd ./src && make -f makefile.amiga
 
-
+netware:
+        cd lib && make -f Makefile.netware
+        cd src && make -f Makefile.netware
 
 unix: all
 
index 652f599..e5a933c 100644 (file)
@@ -26,6 +26,7 @@ This release includes the following changes:
 
 This release includes the following bugfixes:
 
+ o builds and runs on Novell NetWare
  o Windows builds now report OS as "i386-pc-win32"
  o received signals during SSL connect is handled better
  o improved PUT/POST with NTLM/Digest authentication
@@ -83,6 +84,6 @@ advice from friends like these:
  Ken Hirsch, Stadler Stephan, Domenico Andreoli, Patrick Smith, Tor Arntsen,
  Andrés García, Tim Baker, Len Krause, Gilad, Ken Rastatter, P R Schaffner,
  Greg Hewgill, Ben Greear, Jeff Lawson, Grigory Entin, Doug Porter, David
- Byron, Andy Serpa, Joe Halpin, Christopher R. Palmer
+ Byron, Andy Serpa, Joe Halpin, Christopher R. Palmer, Günter Knauf
 
         Thanks! (and sorry if I forgot to mention someone)
index 13194a2..d16b039 100644 (file)
@@ -511,6 +511,7 @@ PORTS
         - i386 HURD
         - i386 Linux 1.3, 2.0, 2.2, 2.3, 2.4
         - i386 NetBSD
+        - i386 Novell NetWare
         - i386 OS/2
         - i386 OpenBSD
         - i386 SCO unix
index 0ed48bf..b2d8218 100644 (file)
 #include <winsock2.h>
 #else
 
-#ifdef _AIX
 /* HP-UX systems version 9, 10 and 11 lack sys/select.h and so does oldish
    libc5-based Linux systems. Only include it on system that are known to
    require it! */
+#if defined(_AIX) || defined(NETWARE)
 #include <sys/select.h>
 #endif
 
diff --git a/lib/Makefile.netware b/lib/Makefile.netware
new file mode 100644 (file)
index 0000000..8275e14
--- /dev/null
@@ -0,0 +1,277 @@
+#################################################################
+#
+## Makefile for building libcurl.nlm (NetWare version - gnu make)
+## Use: make -f Makefile.netware
+##
+## Comments to: Guenter Knauf <eflash@gmx.net>
+#
+#################################################################
+
+# Edit the path below to point to the base of your Novell NDK.
+BASE   = c:/novell
+INSTDIR        = s:/libcurl
+
+# Edit the path below to point to the base of your Zlib sources.
+ZLIB_PATH = ../../../cw/zlib-src-1.1.4
+
+# Edit the vars below to change NLM target settings.
+TARGET  = libcurl
+VERSION        = $(LIBCURL_VERSION)
+COPYR  = Copyright (c) 1996 - 2004, Daniel Stenberg, <daniel@haxx.se>
+DESCR  = cURL libcurl $(LIBCURL_VERSION_STR) - http://curl.haxx.se
+MTSAFE = YES
+STACK  = 64000
+SCREEN = none
+#MODULES       = libz.nlm
+EXPORTS        = @libcurl.imp
+
+# Edit the var below to point to your lib architecture.
+ifndef LIBARCH
+LIBARCH = LIBC
+endif
+
+# must be equal to DEBUG or NDEBUG
+DB     = NDEBUG
+# DB   = DEBUG
+# Optimization: -O<n> or debugging: -g
+ifeq ($(DB),NDEBUG)
+       OPT     = -O2
+       OBJDIR  = release
+else
+       OPT     = -g
+       OBJDIR  = debug
+endif
+
+# Include the version info retrieved from jk_version.h
+-include $(OBJDIR)/version.inc
+
+# The following line defines your compiler.
+ifdef METROWERKS
+       CC = mwccnlm
+else
+       CC = gcc
+endif
+# RM   = rm -f
+# CP   = cp -fv
+# if you want to mark the target as MTSAFE you will need a tool for
+# generating the xdc data for the linker; here's a minimal tool:
+# http://www.gknw.de/development/prgtools/mkxdc.zip
+MPKXDC = mkxdc
+
+# Global flags for all compilers
+CFLAGS = $(OPT) -D$(DB) -DNETWARE -nostdinc
+#CFLAGS        += -DHAVE_LIBZ
+
+ifeq ($(CC),mwccnlm)
+LD     = mwldnlm
+LDFLAGS        = -nostdlib $(PRELUDE) $(OBJDIR)/*.o -o $(OBJDIR)/$(TARGET).nlm -commandfile
+CFLAGS += -gccinc -inline off -opt nointrinsics
+CFLAGS += -relax_pointers
+#CFLAGS        += -w on
+ifeq ($(LIBARCH),LIBC)
+       PRELUDE = $(SDK_LIBC)/imports/libcpre.o
+       CFLAGS += -align 4 -inst mmx -proc 686
+       CFLAGS += -D_POSIX_SOURCE
+#      CFLAGS += -D__ANSIC__
+else
+       PRELUDE = "$(METROWERKS)/Novell Support/libraries/runtime/prelude.obj"
+#      CFLAGS += -include "$(METROWERKS)/Novell Support/headers/nlm_prefix.h"
+       CFLAGS += -align 1 -proc 586
+endif
+else
+LD     = nlmconv
+LDFLAGS        = -T
+CFLAGS += -fno-builtin -fpack-struct -fpcc-struct-return
+CFLAGS += -Wall # -pedantic
+ifeq ($(LIBARCH),LIBC)
+       PRELUDE = $(SDK_LIBC)/imports/libcpre.gcc.o
+       CFLAGS += -D_POSIX_SOURCE
+#      CFLAGS += -D__ANSIC__
+else
+       PRELUDE = $(SDK_CLIB)/imports/clibpre.gcc.o
+       CFLAGS += -include $(BASE)/nlmconv/genlm.h
+endif
+endif
+
+LDLIBS =
+
+NDK_ROOT = $(BASE)/ndk
+SDK_CLIB = $(NDK_ROOT)/nwsdk
+SDK_LIBC = $(NDK_ROOT)/libc
+SDK_LDAP = $(NDK_ROOT)/cldapsdk/netware
+CURL_INC = ../include
+
+INCLUDES = -I$(CURL_INC)
+INCLUDES += -I$(ZLIB_PATH)
+
+ifeq ($(LIBARCH),LIBC)
+       INCLUDES += -I$(SDK_LIBC)/include -I$(SDK_LIBC)/include/nks
+       INCLUDES += -I$(SDK_LIBC)/include/winsock
+       INCLUDES += -I$(SDK_LDAP)/libc/inc
+else
+       INCLUDES += -I$(SDK_CLIB)/include/nlm -I$(SDK_CLIB)/include
+       # INCLUDES += -I$(SDK_CLIB)/include/nlm/obsolete
+       INCLUDES += -I$(SDK_LDAP)/clib/inc
+       CFLAGS += -DNETDB_USE_INTERNET
+endif
+CFLAGS += $(INCLUDES)
+
+ifeq ($(MTSAFE),YES)
+       XDCDATA = $(OBJDIR)/$(TARGET).xdc
+endif
+
+ifeq ($(OSTYPE),linux)
+DL     = '
+-include $(BASE)/nlmconv/ncpfs.inc
+endif
+
+OBJS   = \
+       $(OBJDIR)/file.o \
+       $(OBJDIR)/timeval.o \
+       $(OBJDIR)/base64.o \
+       $(OBJDIR)/hostip.o \
+       $(OBJDIR)/progress.o \
+       $(OBJDIR)/formdata.o \
+       $(OBJDIR)/cookie.o \
+       $(OBJDIR)/http.o \
+       $(OBJDIR)/sendf.o \
+       $(OBJDIR)/ftp.o \
+       $(OBJDIR)/url.o \
+       $(OBJDIR)/dict.o \
+       $(OBJDIR)/if2ip.o \
+       $(OBJDIR)/speedcheck.o \
+       $(OBJDIR)/getdate.o \
+       $(OBJDIR)/transfer.o \
+       $(OBJDIR)/ldap.o \
+       $(OBJDIR)/ssluse.o \
+       $(OBJDIR)/version.o \
+       $(OBJDIR)/getenv.o \
+       $(OBJDIR)/escape.o \
+       $(OBJDIR)/mprintf.o \
+       $(OBJDIR)/telnet.o \
+       $(OBJDIR)/netrc.o \
+       $(OBJDIR)/getinfo.o \
+       $(OBJDIR)/strequal.o \
+       $(OBJDIR)/easy.o \
+       $(OBJDIR)/security.o \
+       $(OBJDIR)/krb4.o \
+       $(OBJDIR)/memdebug.o \
+       $(OBJDIR)/http_chunks.o \
+       $(OBJDIR)/strtok.o \
+       $(OBJDIR)/connect.o \
+       $(OBJDIR)/hash.o \
+       $(OBJDIR)/llist.o \
+       $(OBJDIR)/multi.o \
+       $(OBJDIR)/share.o \
+       $(OBJDIR)/content_encoding.o \
+       $(OBJDIR)/http_digest.o \
+       $(OBJDIR)/http_negotiate.o \
+       $(OBJDIR)/http_ntlm.o \
+       $(OBJDIR)/md5.o \
+       $(OBJDIR)/strtoofft.o \
+       $(OBJDIR)/nwlib.o
+
+
+all: $(OBJDIR) $(OBJDIR)/version.inc $(OBJDIR)/$(TARGET).nlm 
+
+$(OBJDIR)/%.o: %.c
+       @echo Compiling $<
+       @$(CC) $(CFLAGS) -c $< -o $@
+
+$(OBJDIR)/version.inc: $(CURL_INC)/curl/curl.h $(OBJDIR)
+       @echo Creating $@
+       @awk -f ../packages/netware/get_ver.awk $< > $@
+
+dist: all
+       -$(RM) $(OBJDIR)/*.o $(OBJDIR)/$(TARGET).map $(OBJDIR)/$(TARGET).ncv
+       -$(RM) $(OBJDIR)/$(TARGET).def $(OBJDIR)/version.inc $(XDCDATA)
+#      -$(CP) ../changes.txt $(OBJDIR)/
+
+install: all
+       @[ -d $(INSTDIR) ] || mkdir $(INSTDIR)
+       @$(CP) $(TARGET).nlm $(INSTDIR)
+
+clean:
+       -$(RM) -r $(OBJDIR)
+
+$(OBJDIR):
+       @mkdir $(OBJDIR)
+
+$(OBJDIR)/$(TARGET).nlm: $(OBJS) $(OBJDIR)/$(TARGET).def $(XDCDATA)
+       @echo Linking $@
+       @-$(RM) $@
+       @$(LD) $(LDFLAGS) $(OBJDIR)/$(TARGET).def
+
+$(OBJDIR)/%.xdc: Makefile.netware
+       @echo Creating $@
+       @$(MPKXDC) $(XDCOPT) $@
+
+$(OBJDIR)/%.def: Makefile.netware
+       @echo $(DL)# DEF file for linking with $(LD)$(DL) > $@
+       @echo $(DL)# Do not edit this file - it is created by make!$(DL) >> $@
+       @echo $(DL)# All your changes will be lost!!$(DL) >> $@
+       @echo $(DL)#$(DL) >> $@
+       @echo $(DL)copyright "$(COPYR)"$(DL) >> $@
+       @echo $(DL)description "$(DESCR)"$(DL) >> $@
+       @echo $(DL)version $(VERSION)$(DL) >> $@
+ifdef NLMTYPE
+       @echo $(DL)type $(NLMTYPE)$(DL) >> $@
+endif
+ifdef STACK
+       @echo $(DL)stack $(STACK)$(DL) >> $@
+endif
+ifdef SCREEN
+       @echo $(DL)screenname "$(SCREEN)"$(DL) >> $@
+else
+       @echo $(DL)screenname "DEFAULT"$(DL) >> $@
+endif
+ifeq ($(DB),DEBUG)
+       @echo $(DL)debug$(DL) >> $@
+endif
+       @echo $(DL)threadname "$(TARGET)"$(DL) >> $@
+ifdef XDCDATA
+       @echo $(DL)xdcdata $(XDCDATA)$(DL) >> $@
+endif
+ifeq ($(LIBARCH),CLIB)
+       @echo $(DL)start _Prelude$(DL) >> $@
+       @echo $(DL)exit _Stop$(DL) >> $@
+       @echo $(DL)import @$(SDK_CLIB)/imports/clib.imp$(DL) >> $@
+       @echo $(DL)import @$(SDK_CLIB)/imports/threads.imp$(DL) >> $@
+       @echo $(DL)import @$(SDK_CLIB)/imports/nlmlib.imp$(DL) >> $@
+       @echo $(DL)import @$(SDK_CLIB)/imports/socklib.imp$(DL) >> $@
+       @echo $(DL)import @$(SDK_LDAP)/clib/imports/ldapsdk.imp$(DL) >> $@
+       @echo $(DL)import @$(SDK_LDAP)/clib/imports/ldapssl.imp$(DL) >> $@
+       @echo $(DL)import @$(SDK_LDAP)/clib/imports/ldapx.imp$(DL) >> $@
+       @echo $(DL)module clib$(DL) >> $@
+else
+ifeq ($(LD),nlmconv)
+       @echo $(DL)flag_on 64$(DL) >> $@
+else
+       @echo $(DL)autounload$(DL) >> $@
+endif
+       @echo $(DL)pseudopreemption$(DL) >> $@
+       @echo $(DL)start _LibCPrelude$(DL) >> $@
+       @echo $(DL)exit _LibCPostlude$(DL) >> $@
+       @echo $(DL)check _LibCCheckUnload$(DL) >> $@
+       @echo $(DL)import @$(SDK_LIBC)/imports/libc.imp$(DL) >> $@
+       @echo $(DL)import @$(SDK_LIBC)/imports/netware.imp$(DL) >> $@
+       @echo $(DL)import @$(SDK_LDAP)/libc/imports/lldapsdk.imp$(DL) >> $@
+       @echo $(DL)import @$(SDK_LDAP)/libc/imports/lldapssl.imp$(DL) >> $@
+       @echo $(DL)import @$(SDK_LDAP)/libc/imports/lldapx.imp$(DL) >> $@
+       @echo $(DL)module libc$(DL) >> $@
+endif
+ifdef MODULES
+       @echo $(DL)module $(MODULES)$(DL) >> $@
+endif
+ifdef EXPORTS
+       @echo $(DL)export $(EXPORTS)$(DL) >> $@
+endif
+ifdef IMPORTS
+       @echo $(DL)import $(IMPORTS)$(DL) >> $@
+endif
+ifeq ($(LD),nlmconv)
+       @echo $(DL)input $(OBJS)$(DL) >> $@
+       @echo $(DL)input $(PRELUDE)$(DL) >> $@
+       @echo $(DL)output $(TARGET).nlm$(DL) >> $@
+endif
+
diff --git a/lib/config-netware.h b/lib/config-netware.h
new file mode 100644 (file)
index 0000000..4a1d373
--- /dev/null
@@ -0,0 +1,485 @@
+/* lib/config.h.in.  Generated from configure.ac by autoheader.  */\r
+\r
+/* to disable DICT */\r
+#undef CURL_DISABLE_DICT\r
+\r
+/* to disable FILE */\r
+#undef CURL_DISABLE_FILE\r
+\r
+/* to disable FTP */\r
+#undef CURL_DISABLE_FTP\r
+\r
+/* to disable GOPHER */\r
+#undef CURL_DISABLE_GOPHER\r
+\r
+/* to disable HTTP */\r
+#undef CURL_DISABLE_HTTP\r
+\r
+/* to disable LDAP */\r
+#undef CURL_DISABLE_LDAP\r
+\r
+/* to disable TELNET */\r
+#undef CURL_DISABLE_TELNET\r
+\r
+/* Set to explicitly specify we don't want to use thread-safe functions */\r
+#undef DISABLED_THREADSAFE\r
+\r
+/* your Entropy Gathering Daemon socket pathname */\r
+#undef EGD_SOCKET\r
+\r
+/* Define if you want to enable IPv6 support */\r
+#undef ENABLE_IPV6\r
+\r
+/* Define to 1 if you have the <alloca.h> header file. */\r
+#undef HAVE_ALLOCA_H\r
+\r
+/* Define to 1 if you have the <arpa/inet.h> header file. */\r
+#define HAVE_ARPA_INET_H 1\r
+\r
+/* Define to 1 if you have the <assert.h> header file. */\r
+#define HAVE_ASSERT_H 1\r
+\r
+/* Define to 1 if you have the `closesocket' function. */\r
+#undef HAVE_CLOSESOCKET\r
+\r
+/* Define to 1 if you have the `CRYPTO_cleanup_all_ex_data' function. */\r
+#undef HAVE_CRYPTO_CLEANUP_ALL_EX_DATA\r
+\r
+/* Define to 1 if you have the <crypto.h> header file. */\r
+#undef HAVE_CRYPTO_H\r
+\r
+/* Define to 1 if you have the <des.h> header file. */\r
+#undef HAVE_DES_H\r
+\r
+/* disabled non-blocking sockets */\r
+#undef HAVE_DISABLED_NONBLOCKING\r
+\r
+/* Define to 1 if you have the <dlfcn.h> header file. */\r
+/* XXX: #undef HAVE_DLFCN_H */\r
+#define HAVE_DLFCN_H 1\r
+\r
+/* Define to 1 if you have the `dlopen' function. */\r
+#define HAVE_DLOPEN 1\r
+\r
+/* Define to 1 if you have the <err.h> header file. */\r
+#define HAVE_ERR_H 1\r
+\r
+/* Define to 1 if you have the <fcntl.h> header file. */\r
+#define HAVE_FCNTL_H 1\r
+\r
+/* use FIONBIO for non-blocking sockets */\r
+/* XXX: #undef HAVE_FIONBIO */\r
+#define HAVE_FIONBIO 1\r
+\r
+/* Define if getaddrinfo exists and works */\r
+#undef HAVE_GETADDRINFO\r
+\r
+/* Define to 1 if you have the `geteuid' function. */\r
+#undef HAVE_GETEUID\r
+\r
+/* Define to 1 if you have the `gethostbyaddr' function. */\r
+#define HAVE_GETHOSTBYADDR 1\r
+\r
+/* Define to 1 if you have the `gethostbyaddr_r' function. */\r
+#undef HAVE_GETHOSTBYADDR_R\r
+\r
+/* gethostbyaddr_r() takes 5 args */\r
+#undef HAVE_GETHOSTBYADDR_R_5\r
+\r
+/* gethostbyaddr_r() takes 7 args */\r
+#undef HAVE_GETHOSTBYADDR_R_7\r
+\r
+/* gethostbyaddr_r() takes 8 args */\r
+#undef HAVE_GETHOSTBYADDR_R_8\r
+\r
+/* Define to 1 if you have the `gethostbyname_r' function. */\r
+#undef HAVE_GETHOSTBYNAME_R\r
+\r
+/* gethostbyname_r() takes 3 args */\r
+#undef HAVE_GETHOSTBYNAME_R_3\r
+\r
+/* gethostbyname_r() takes 5 args */\r
+#undef HAVE_GETHOSTBYNAME_R_5\r
+\r
+/* gethostbyname_r() takes 6 args */\r
+#undef HAVE_GETHOSTBYNAME_R_6\r
+\r
+/* Define to 1 if you have the `getpass_r' function. */\r
+#undef HAVE_GETPASS_R\r
+\r
+/* Define to 1 if you have the `getpwuid' function. */\r
+#undef HAVE_GETPWUID\r
+\r
+/* Define to 1 if you have the `gettimeofday' function. */\r
+#define HAVE_GETTIMEOFDAY 1\r
+\r
+/* Define to 1 if you have the `gmtime_r' function. */\r
+#undef HAVE_GMTIME_R\r
+\r
+/* if you have the gssapi libraries */\r
+#undef HAVE_GSSAPI\r
+\r
+/* if you have the Heimdal gssapi libraries */\r
+#undef HAVE_GSSHEIMDAL\r
+\r
+/* if you have the MIT gssapi libraries */\r
+#undef HAVE_GSSMIT\r
+\r
+/* Define to 1 if you have the `inet_addr' function. */\r
+#define HAVE_INET_ADDR 1\r
+\r
+/* Define to 1 if you have the `inet_ntoa' function. */\r
+#define HAVE_INET_NTOA 1\r
+\r
+/* Define to 1 if you have the `inet_ntoa_r' function. */\r
+#undef HAVE_INET_NTOA_R\r
+\r
+/* inet_ntoa_r() is declared */\r
+#undef HAVE_INET_NTOA_R_DECL\r
+\r
+/* Define to 1 if you have the `inet_pton' function. */\r
+#define HAVE_INET_PTON 1\r
+\r
+/* Define to 1 if you have the <inttypes.h> header file. */\r
+#define HAVE_INTTYPES_H 1\r
+\r
+/* use ioctlsocket() for non-blocking sockets */\r
+#undef HAVE_IOCTLSOCKET\r
+\r
+/* use Ioctlsocket() for non-blocking sockets */\r
+#undef HAVE_IOCTLSOCKET_CASE\r
+\r
+/* Define to 1 if you have the <io.h> header file. */\r
+#undef HAVE_IO_H\r
+\r
+/* if you have the Kerberos4 libraries (including -ldes) */\r
+#undef HAVE_KRB4\r
+\r
+/* Define to 1 if you have the `krb_get_our_ip_for_realm' function. */\r
+#undef HAVE_KRB_GET_OUR_IP_FOR_REALM\r
+\r
+/* Define to 1 if you have the <krb.h> header file. */\r
+#undef HAVE_KRB_H\r
+\r
+/* Define to 1 if you have the `crypto' library (-lcrypto). */\r
+#undef HAVE_LIBCRYPTO\r
+\r
+/* Define to 1 if you have the `dl' library (-ldl). */\r
+#undef HAVE_LIBDL\r
+\r
+/* Define to 1 if you have the `nsl' library (-lnsl). */\r
+#undef HAVE_LIBNSL\r
+\r
+/* Define to 1 if you have the `resolv' library (-lresolv). */\r
+#undef HAVE_LIBRESOLV\r
+\r
+/* Define to 1 if you have the `resolve' library (-lresolve). */\r
+#undef HAVE_LIBRESOLVE\r
+\r
+/* Define to 1 if you have the `socket' library (-lsocket). */\r
+#undef HAVE_LIBSOCKET\r
+\r
+/* Define to 1 if you have the `ssl' library (-lssl). */\r
+#undef HAVE_LIBSSL\r
+\r
+/* If zlib is available */\r
+#undef HAVE_LIBZ\r
+//#define HAVE_LIBZ 1\r
+\r
+/* Define to 1 if you have the <limits.h> header file. */\r
+#define HAVE_LIMITS_H 1\r
+\r
+/* Define to 1 if you have the `localtime_r' function. */\r
+#undef HAVE_LOCALTIME_R\r
+\r
+/* if your compiler supports 'long long' */\r
+#define HAVE_LONGLONG 1\r
+\r
+/* Define to 1 if you have the <malloc.h> header file. */\r
+#define HAVE_MALLOC_H 1\r
+\r
+/* Define to 1 if you have the <memory.h> header file. */\r
+#undef HAVE_MEMORY_H\r
+\r
+/* Define to 1 if you have the <netdb.h> header file. */\r
+#define HAVE_NETDB_H 1\r
+\r
+/* Define to 1 if you have the <netinet/in.h> header file. */\r
+#define HAVE_NETINET_IN_H 1\r
+\r
+/* Define to 1 if you have the <net/if.h> header file. */\r
+#undef HAVE_NET_IF_H\r
+\r
+/* Define to 1 if you have the <openssl/crypto.h> header file. */\r
+#undef HAVE_OPENSSL_CRYPTO_H\r
+\r
+/* Define to 1 if you have the <openssl/engine.h> header file. */\r
+#undef HAVE_OPENSSL_ENGINE_H\r
+\r
+/* Define to 1 if you have the <openssl/err.h> header file. */\r
+#undef HAVE_OPENSSL_ERR_H\r
+\r
+/* Define to 1 if you have the <openssl/pem.h> header file. */\r
+#undef HAVE_OPENSSL_PEM_H\r
+\r
+/* Define to 1 if you have the <openssl/rsa.h> header file. */\r
+#undef HAVE_OPENSSL_RSA_H\r
+\r
+/* Define to 1 if you have the <openssl/ssl.h> header file. */\r
+#undef HAVE_OPENSSL_SSL_H\r
+\r
+/* Define to 1 if you have the <openssl/x509.h> header file. */\r
+#undef HAVE_OPENSSL_X509_H\r
+\r
+/* use O_NONBLOCK for non-blocking sockets */\r
+#undef HAVE_O_NONBLOCK\r
+\r
+/* Define to 1 if you have the <pem.h> header file. */\r
+#undef HAVE_PEM_H\r
+\r
+/* Define to 1 if you have the `perror' function. */\r
+#undef HAVE_PERROR\r
+\r
+/* Define to 1 if you have the `poll' function. */\r
+#undef HAVE_POLL\r
+\r
+/* Define to 1 if you have the <pwd.h> header file. */\r
+#undef HAVE_PWD_H\r
+\r
+/* Define to 1 if you have the `RAND_egd' function. */\r
+#undef HAVE_RAND_EGD\r
+\r
+/* Define to 1 if you have the `RAND_screen' function. */\r
+#undef HAVE_RAND_SCREEN\r
+\r
+/* Define to 1 if you have the `RAND_status' function. */\r
+#undef HAVE_RAND_STATUS\r
+\r
+/* Define to 1 if you have the <rsa.h> header file. */\r
+#undef HAVE_RSA_H\r
+\r
+/* Define to 1 if you have the `select' function. */\r
+#define HAVE_SELECT 1\r
+\r
+/* Define to 1 if you have the <setjmp.h> header file. */\r
+#define HAVE_SETJMP_H 1\r
+\r
+/* Define to 1 if you have the <sgtty.h> header file. */\r
+#undef HAVE_SGTTY_H\r
+\r
+/* Define to 1 if you have the `sigaction' function. */\r
+#undef HAVE_SIGACTION\r
+\r
+/* Define to 1 if you have the `siginterrupt' function. */\r
+#undef HAVE_SIGINTERRUPT\r
+\r
+/* Define to 1 if you have the `signal' function. */\r
+#define HAVE_SIGNAL 1\r
+\r
+/* If you have sigsetjmp */\r
+#undef HAVE_SIGSETJMP\r
+\r
+/* Define to 1 if you have the `socket' function. */\r
+#define HAVE_SOCKET 1\r
+\r
+/* use SO_NONBLOCK for non-blocking sockets */\r
+#undef HAVE_SO_NONBLOCK\r
+\r
+/* Define this if you have the SPNEGO library fbopenssl */\r
+#undef HAVE_SPNEGO\r
+\r
+/* Define to 1 if you have the <ssl.h> header file. */\r
+#undef HAVE_SSL_H\r
+\r
+/* Define to 1 if you have the <stdint.h> header file. */\r
+#define HAVE_STDINT_H 1\r
+\r
+/* Define to 1 if you have the <stdlib.h> header file. */\r
+#define HAVE_STDLIB_H 1\r
+\r
+/* Define to 1 if you have the `strcasecmp' function. */\r
+#define HAVE_STRCASECMP 1\r
+\r
+/* Define to 1 if you have the `strcmpi' function. */\r
+#undef HAVE_STRCMPI\r
+\r
+/* Define to 1 if you have the `strdup' function. */\r
+#define HAVE_STRDUP 1\r
+\r
+/* Define to 1 if you have the `strftime' function. */\r
+#define HAVE_STRFTIME 1\r
+\r
+/* Define to 1 if you have the `stricmp' function. */\r
+#undef HAVE_STRICMP\r
+\r
+/* Define to 1 if you have the <strings.h> header file. */\r
+#undef HAVE_STRINGS_H\r
+\r
+/* Define to 1 if you have the <string.h> header file. */\r
+#define HAVE_STRING_H 1\r
+\r
+/* Define to 1 if you have the `strlcat' function. */\r
+#define HAVE_STRLCAT 1\r
+\r
+/* Define to 1 if you have the `strlcpy' function. */\r
+#define HAVE_STRLCPY 1\r
+\r
+/* Define to 1 if you have the `strstr' function. */\r
+#define HAVE_STRSTR 1\r
+\r
+/* Define to 1 if you have the `strtok_r' function. */\r
+#undef HAVE_STRTOK_R\r
+\r
+/* Define to 1 if you have the `strtoll' function. */\r
+#undef HAVE_STRTOLL\r
+\r
+/* Define to 1 if you have the <sys/param.h> header file. */\r
+#define HAVE_SYS_PARAM_H 1\r
+\r
+/* Define to 1 if you have the <sys/poll.h> header file. */\r
+#undef HAVE_SYS_POLL_H\r
+\r
+/* Define to 1 if you have the <sys/select.h> header file. */\r
+#define HAVE_SYS_SELECT_H 1\r
+\r
+/* Define to 1 if you have the <sys/socket.h> header file. */\r
+#define HAVE_SYS_SOCKET_H 1\r
+\r
+/* Define to 1 if you have the <sys/sockio.h> header file. */\r
+#define HAVE_SYS_SOCKIO_H 1\r
+\r
+/* Define to 1 if you have the <sys/stat.h> header file. */\r
+#define HAVE_SYS_STAT_H 1\r
+\r
+/* Define to 1 if you have the <sys/time.h> header file. */\r
+#define HAVE_SYS_TIME_H 1\r
+\r
+/* Define to 1 if you have the <sys/types.h> header file. */\r
+#define HAVE_SYS_TYPES_H 1\r
+\r
+/* Define to 1 if you have the <sys/utime.h> header file. */\r
+#undef HAVE_SYS_UTIME_H\r
+\r
+/* Define to 1 if you have the `tcgetattr' function. */\r
+#undef HAVE_TCGETATTR\r
+\r
+/* Define to 1 if you have the `tcsetattr' function. */\r
+#undef HAVE_TCSETATTR\r
+\r
+/* Define to 1 if you have the <termios.h> header file. */\r
+#define HAVE_TERMIOS_H 1\r
+\r
+/* Define to 1 if you have the <termio.h> header file. */\r
+#undef HAVE_TERMIO_H\r
+\r
+/* Define to 1 if you have the <time.h> header file. */\r
+#define HAVE_TIME_H 1\r
+\r
+/* Define to 1 if you have the `uname' function. */\r
+#define HAVE_UNAME 1\r
+\r
+/* Define to 1 if you have the <unistd.h> header file. */\r
+#define HAVE_UNISTD_H 1\r
+\r
+/* Define to 1 if you have the `utime' function. */\r
+#undef HAVE_UTIME\r
+\r
+/* Define to 1 if you have the <utime.h> header file. */\r
+#undef HAVE_UTIME_H\r
+\r
+/* Define to 1 if you have the <winsock.h> header file. */\r
+#undef HAVE_WINSOCK_H\r
+\r
+/* Define this symbol if your OS supports changing the contents of argv */\r
+#undef HAVE_WRITABLE_ARGV\r
+\r
+/* Define to 1 if you have the <x509.h> header file. */\r
+#undef HAVE_X509_H\r
+\r
+/* if you have the zlib.h header file */\r
+#define HAVE_ZLIB_H 1\r
+\r
+/* need REENTRANT defined */\r
+#undef NEED_REENTRANT\r
+\r
+/* cpu-machine-OS */\r
+#define OS "i386-pc-NetWare"\r
+\r
+/* Name of package */\r
+#undef PACKAGE\r
+\r
+/* Define to the address where bug reports for this package should be sent. */\r
+#undef PACKAGE_BUGREPORT\r
+\r
+/* Define to the full name of this package. */\r
+#undef PACKAGE_NAME\r
+\r
+/* Define to the full name and version of this package. */\r
+#undef PACKAGE_STRING\r
+\r
+/* Define to the one symbol short name of this package. */\r
+#undef PACKAGE_TARNAME\r
+\r
+/* Define to the version of this package. */\r
+#undef PACKAGE_VERSION\r
+\r
+/* a suitable file to read random data from */\r
+#undef RANDOM_FILE\r
+\r
+/* Define as the return type of signal handlers (`int' or `void'). */\r
+#define RETSIGTYPE void\r
+\r
+/* Define to the type of arg 1 for `select'. */\r
+#undef SELECT_TYPE_ARG1\r
+\r
+/* Define to the type of args 2, 3 and 4 for `select'. */\r
+#undef SELECT_TYPE_ARG234\r
+\r
+/* Define to the type of arg 5 for `select'. */\r
+#undef SELECT_TYPE_ARG5\r
+\r
+/* The size of a `curl_off_t', as computed by sizeof. */\r
+#define SIZEOF_CURL_OFF_T 4\r
+\r
+/* Define to 1 if you have the ANSI C header files. */\r
+/* XXX: #undef STDC_HEADERS */\r
+#define STDC_HEADERS 1\r
+\r
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */\r
+#define TIME_WITH_SYS_TIME 1\r
+\r
+/* Define if you want to enable ares support */\r
+#undef USE_ARES\r
+\r
+/* Version number of package */\r
+#undef VERSION\r
+\r
+/* Define to 1 if on AIX 3.\r
+   System headers sometimes define this.\r
+   We just want to avoid a redefinition error message.  */\r
+#ifndef _ALL_SOURCE\r
+# undef _ALL_SOURCE\r
+#endif\r
+\r
+/* Number of bits in a file offset, on hosts where this is settable. */\r
+#undef _FILE_OFFSET_BITS\r
+\r
+/* Define for large files, on AIX-style hosts. */\r
+#undef _LARGE_FILES\r
+\r
+/* Define to empty if `const' does not conform to ANSI C. */\r
+#undef const\r
+\r
+/* type to use in place of in_addr_t if not defined */\r
+#undef in_addr_t\r
+\r
+/* Define to `unsigned' if <sys/types.h> does not define. */\r
+#undef size_t\r
+\r
+/* type to use in place of socklen_t if not defined */\r
+#define socklen_t int\r
+\r
+/* the signed version of size_t */\r
+#undef ssize_t\r
+\r
+\r
index faa5c41..1b57e3f 100644 (file)
 #include <stdlib.h> /* required for free() prototype, without it, this crashes
                        on macos 68K */
 #endif
+#if (defined(HAVE_FIONBIO) && defined(__NOVELL_LIBC__))
+#include <sys/filio.h>
+#endif
+#if (defined(NETWARE) && defined(__NOVELL_LIBC__))
+#undef in_addr_t
+#define in_addr_t unsigned long
+#endif
 #ifdef VMS
 #include <in.h>
 #include <inet.h>
index 758c918..369b618 100644 (file)
--- a/lib/ftp.c
+++ b/lib/ftp.c
 #include <errno.h>
 #endif
 
+#if (defined(NETWARE) && defined(__NOVELL_LIBC__))
+#undef in_addr_t
+#define in_addr_t unsigned long
+#endif
+
 #include <curl/curl.h>
 #include "urldata.h"
 #include "sendf.h"
index 5f61579..1bf8fd4 100644 (file)
 #include <setjmp.h>
 #endif
 
+#if (defined(NETWARE) && defined(__NOVELL_LIBC__))
+#undef in_addr_t
+#define in_addr_t unsigned long
+#endif
+
 #include "urldata.h"
 #include "sendf.h"
 #include "hostip.h"
index 299be75..63a6340 100644 (file)
@@ -32,7 +32,7 @@
 #endif
 
 #if !defined(WIN32) && !defined(__BEOS__) && !defined(__CYGWIN32__) && \
-    !defined(__riscos__) && !defined(__INTERIX)
+    !defined(__riscos__) && !defined(__INTERIX) && !defined(NETWARE)
 
 #ifdef HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
@@ -125,5 +125,8 @@ char *Curl_if2ip(char *interface, char *buf, int buf_size)
 
 /* -- end of if2ip() -- */
 #else
-#define if2ip(x) NULL
+char *Curl_if2ip(char *interface, char *buf, int buf_size)
+{
+    return NULL;
+}
 #endif
diff --git a/lib/libcurl.imp b/lib/libcurl.imp
new file mode 100644 (file)
index 0000000..50ce90a
--- /dev/null
@@ -0,0 +1,44 @@
+#\r
+# Definition file for the NLM version of the LIBCURL library from curl\r
+#\r
+#      (LIBCURL)\r
+       curl_easy_cleanup,\r
+       curl_easy_getinfo,\r
+       curl_easy_init,\r
+       curl_easy_perform,\r
+       curl_easy_setopt,\r
+       curl_escape,\r
+       curl_unescape,\r
+       curl_formparse,\r
+       curl_formfree,\r
+       curl_getdate,\r
+       curl_getenv,\r
+       curl_global_cleanup,\r
+       curl_global_init,\r
+       curl_slist_append,\r
+       curl_slist_free_all,\r
+       curl_version,\r
+       curl_maprintf,\r
+       curl_mfprintf,\r
+       curl_mprintf,\r
+       curl_msprintf,\r
+       curl_msnprintf,\r
+       curl_mvfprintf,\r
+       curl_strequal,\r
+       curl_strnequal,\r
+       curl_easy_duphandle,\r
+       curl_formadd,\r
+       curl_multi_init,\r
+       curl_multi_add_handle,\r
+       curl_multi_remove_handle,\r
+       curl_multi_fdset,\r
+       curl_multi_perform,\r
+       curl_multi_cleanup,\r
+       curl_multi_info_read,\r
+       curl_free,\r
+       curl_version_info,\r
+       curl_share_init,\r
+       curl_share_setopt,\r
+       curl_share_cleanup\r
+\r
+\r
diff --git a/lib/nwlib.c b/lib/nwlib.c
new file mode 100644 (file)
index 0000000..410a631
--- /dev/null
@@ -0,0 +1,329 @@
+/***************************************************************************\r
+ *                                  _   _ ____  _\r
+ *  Project                     ___| | | |  _ \| |\r
+ *                             / __| | | | |_) | |\r
+ *                            | (__| |_| |  _ <| |___\r
+ *                             \___|\___/|_| \_\_____|\r
+ *\r
+ * Copyright (C) 1998 - 2004, Daniel Stenberg, <daniel@haxx.se>, et al.\r
+ *\r
+ * This software is licensed as described in the file COPYING, which\r
+ * you should have received as part of this distribution. The terms\r
+ * are also available at http://curl.haxx.se/docs/copyright.html.\r
+ *\r
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell\r
+ * copies of the Software, and permit persons to whom the Software is\r
+ * furnished to do so, under the terms of the COPYING file.\r
+ *\r
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY\r
+ * KIND, either express or implied.\r
+ *\r
+ * $Id$\r
+ ***************************************************************************/\r
+\r
+/* This file is only used in the NetWare build */\r
+\r
+#include <errno.h>\r
+#include <string.h>\r
+#include <stdlib.h>\r
+#include <library.h>\r
+#include <netware.h>\r
+#include <screen.h>\r
+#include <nks/thread.h>\r
+#include <nks/synch.h>\r
+\r
+\r
+typedef struct\r
+{\r
+    int     _errno;\r
+    void    *twentybytes;\r
+} libthreaddata_t;\r
+\r
+typedef struct\r
+{\r
+    int         x;\r
+    int         y;\r
+    int         z;\r
+    void        *tenbytes;\r
+    NXKey_t     perthreadkey;           // if -1, no key obtained...\r
+    NXMutex_t   *lock;\r
+} libdata_t;\r
+\r
+int         gLibId      = -1;\r
+void        *gLibHandle = (void *) NULL;\r
+rtag_t      gAllocTag   = (rtag_t) NULL;\r
+NXMutex_t   *gLibLock   = (NXMutex_t *) NULL;\r
+\r
+\r
+\r
+// internal library function prototypes...\r
+int     DisposeLibraryData ( void * );\r
+void    DisposeThreadData ( void * );\r
+int     GetOrSetUpData ( int id, libdata_t **data, libthreaddata_t **threaddata );\r
+\r
+\r
+int _NonAppStart\r
+(\r
+    void        *NLMHandle,\r
+    void        *errorScreen,\r
+    const char  *cmdLine,\r
+    const char  *loadDirPath,\r
+    size_t      uninitializedDataLength,\r
+    void        *NLMFileHandle,\r
+    int         (*readRoutineP)( int conn, void *fileHandle, size_t offset,\r
+                                size_t nbytes, size_t *bytesRead, void *buffer ),\r
+    size_t      customDataOffset,\r
+    size_t      customDataSize,\r
+    int         messageCount,\r
+    const char  **messages\r
+)\r
+{\r
+    NX_LOCK_INFO_ALLOC(liblock, "Per-Application Data Lock", 0);\r
+\r
+#ifndef __GNUC__\r
+#pragma unused(cmdLine)\r
+#pragma unused(loadDirPath)\r
+#pragma unused(uninitializedDataLength)\r
+#pragma unused(NLMFileHandle)\r
+#pragma unused(readRoutineP)\r
+#pragma unused(customDataOffset)\r
+#pragma unused(customDataSize)\r
+#pragma unused(messageCount)\r
+#pragma unused(messages)\r
+#endif\r
+\r
+/*\r
+** Here we process our command line, post errors (to the error screen),\r
+** perform initializations and anything else we need to do before being able\r
+** to accept calls into us. If we succeed, we return non-zero and the NetWare\r
+** Loader will leave us up, otherwise we fail to load and get dumped.\r
+*/\r
+    gAllocTag = AllocateResourceTag(NLMHandle,\r
+                                "<library-name> memory allocations", AllocSignature);\r
+\r
+    if (!gAllocTag)\r
+    {\r
+        OutputToScreen(errorScreen, "Unable to allocate resource tag for "\r
+                                            "library memory allocations.\n");\r
+        return -1;\r
+    }\r
+\r
+    gLibId = register_library(DisposeLibraryData);\r
+\r
+    if (gLibId < -1)\r
+    {\r
+        OutputToScreen(errorScreen, "Unable to register library with kernel.\n");\r
+        return -1;\r
+    }\r
+\r
+    gLibHandle = NLMHandle;\r
+\r
+    gLibLock = NXMutexAlloc(0, 0, &liblock);\r
+\r
+    if (!gLibLock)\r
+    {\r
+        OutputToScreen(errorScreen, "Unable to allocate library data lock.\n");\r
+        return -1;\r
+    }\r
+\r
+    return 0;\r
+}\r
+\r
+void _NonAppStop( void )\r
+{\r
+/*\r
+** Here we clean up any resources we allocated. Resource tags is a big part\r
+** of what we created, but NetWare doesn't ask us to free those.\r
+*/\r
+    (void) unregister_library(gLibId);\r
+    NXMutexFree(gLibLock);\r
+}\r
+\r
+int  _NonAppCheckUnload( void )\r
+{\r
+/*\r
+** This function cannot be the first in the file for if the file is linked\r
+** first, then the check-unload function's offset will be nlmname.nlm+0\r
+** which is how to tell that there isn't one. When the check function is\r
+** first in the linked objects, it is ambiguous. For this reason, we will\r
+** put it inside this file after the stop function.\r
+**\r
+** Here we check to see if it's alright to ourselves to be unloaded. If not,\r
+** we return a non-zero value. Right now, there isn't any reason not to allow\r
+** it.\r
+*/\r
+    return 0;\r
+}\r
+\r
+int GetOrSetUpData\r
+(\r
+    int                 id,\r
+    libdata_t           **appData,\r
+    libthreaddata_t **threadData\r
+)\r
+{\r
+    int                 err;\r
+    libdata_t           *app_data;\r
+    libthreaddata_t *thread_data;\r
+    NXKey_t             key;\r
+//  NXMutex_t           *lock;\r
+    NX_LOCK_INFO_ALLOC(liblock, "Application Data Lock", 0);\r
+\r
+    err         = 0;\r
+    thread_data = (libthreaddata_t *) NULL;\r
+\r
+/*\r
+** Attempt to get our data for the application calling us. This is where we\r
+** store whatever application-specific information we need to carry in support\r
+** of calling applications.\r
+*/\r
+    app_data = (libdata_t *) get_app_data(id);\r
+\r
+    if (!app_data)\r
+    {\r
+/*\r
+** This application hasn't called us before; set up application AND per-thread\r
+** data. Of course, just in case a thread from this same application is calling\r
+** us simultaneously, we better lock our application data-creation mutex. We\r
+** also need to recheck for data after we acquire the lock because WE might be\r
+** that other thread that was too late to create the data and the first thread\r
+** in will have created it.\r
+*/\r
+        NXLock(gLibLock);\r
+\r
+        if (!(app_data = (libdata_t *) get_app_data(id)))\r
+        {\r
+            app_data = (libdata_t *) malloc(sizeof(libdata_t));\r
+\r
+            if (app_data)\r
+            {\r
+                memset(app_data, 0, sizeof(libdata_t));\r
+\r
+                app_data->tenbytes = malloc(10);\r
+                app_data->lock     = NXMutexAlloc(0, 0, &liblock);\r
+\r
+                if (!app_data->tenbytes || !app_data->lock)\r
+                {\r
+                    if (app_data->lock)\r
+                        NXMutexFree(app_data->lock);\r
+\r
+                    free(app_data);\r
+                    app_data = (libdata_t *) NULL;\r
+                    err      = ENOMEM;\r
+                }\r
+\r
+                if (app_data)\r
+                {\r
+/*\r
+** Here we burn in the application data that we were trying to get by calling\r
+** get_app_data(). Next time we call the first function, we'll get this data\r
+** we're just now setting. We also go on here to establish the per-thread data\r
+** for the calling thread, something we'll have to do on each application\r
+** thread the first time it calls us.\r
+*/\r
+                    err = set_app_data(gLibId, app_data);\r
+\r
+                    if (err)\r
+                    {\r
+                        free(app_data);\r
+                        app_data = (libdata_t *) NULL;\r
+                        err      = ENOMEM;\r
+                    }\r
+                    else\r
+                    {\r
+                        // create key for thread-specific data...\r
+                        err = NXKeyCreate(DisposeThreadData, (void *) NULL, &key);\r
+\r
+                        if (err)                // (no more keys left?)\r
+                            key = -1;\r
+\r
+                        app_data->perthreadkey = key;\r
+                    }\r
+                }\r
+            }\r
+        }\r
+\r
+        NXUnlock(gLibLock);\r
+    }\r
+\r
+    if (app_data)\r
+    {\r
+        key = app_data->perthreadkey;\r
+\r
+        if (     key != -1                  // couldn't create a key? no thread data\r
+            && !(err = NXKeyGetValue(key, (void **) &thread_data))\r
+            && !thread_data)\r
+        {\r
+/*\r
+** Allocate the per-thread data for the calling thread. Regardless of whether\r
+** there was already application data or not, this may be the first call by a\r
+** a new thread. The fact that we allocation 20 bytes on a pointer is not very\r
+** important, this just helps to demonstrate that we can have arbitrarily\r
+** complex per-thread data.\r
+*/\r
+            thread_data = (libthreaddata_t *) malloc(sizeof(libthreaddata_t));\r
+\r
+            if (thread_data)\r
+            {\r
+                thread_data->_errno      = 0;\r
+                thread_data->twentybytes = malloc(20);\r
+\r
+                if (!thread_data->twentybytes)\r
+                {\r
+                    free(thread_data);\r
+                    thread_data = (libthreaddata_t *) NULL;\r
+                    err         = ENOMEM;\r
+                }\r
+\r
+                if ((err = NXKeySetValue(key, thread_data)))\r
+                {\r
+                    free(thread_data->twentybytes);\r
+                    free(thread_data);\r
+                    thread_data = (libthreaddata_t *) NULL;\r
+                }\r
+            }\r
+        }\r
+    }\r
+\r
+    if (appData)\r
+        *appData = app_data;\r
+\r
+    if (threadData)\r
+        *threadData = thread_data;\r
+\r
+    return err;\r
+}\r
+\r
+int DisposeLibraryData\r
+(\r
+    void    *data\r
+)\r
+{\r
+    if (data)\r
+    {\r
+        void    *tenbytes = ((libdata_t *) data)->tenbytes;\r
+\r
+        if (tenbytes)\r
+            free(tenbytes);\r
+\r
+        free(data);\r
+    }\r
+\r
+    return 0;\r
+}\r
+\r
+void DisposeThreadData\r
+(\r
+    void    *data\r
+)\r
+{\r
+    if (data)\r
+    {\r
+        void    *twentybytes = ((libthreaddata_t *) data)->twentybytes;\r
+\r
+        if (twentybytes)\r
+            free(twentybytes);\r
+\r
+        free(data);\r
+    }\r
+}\r
index a8b4413..2aeb16f 100644 (file)
 /* hand-modified VMS config.h! */
 #include "config-vms.h"
 #endif
+#ifdef NETWARE
+/* hand-modified NetWare config.h! */
+#include "config-netware.h"
+#endif
 #ifdef macintosh
 /* hand-modified MacOS config.h! */
 #include "config-mac.h"
@@ -290,4 +294,8 @@ typedef struct in_addr Curl_ipconnect;
 #endif
 #endif
 
+#ifdef NETWARE
+#undef HAVE_ALARM
+#endif
+
 #endif /* __CONFIG_H */
index b1cb293..81584cb 100644 (file)
@@ -1,3 +1,3 @@
 SUBDIRS = Win32 Linux Solaris EPM DOS vms
 
-EXTRA_DIST = README
+EXTRA_DIST = README NetWare/get_ver.awk
diff --git a/packages/NetWare/get_ver.awk b/packages/NetWare/get_ver.awk
new file mode 100644 (file)
index 0000000..60cf964
--- /dev/null
@@ -0,0 +1,20 @@
+# fetch libcurl version number from input file and write them to STDOUT\r
+BEGIN {\r
+  while ((getline < ARGV[1]) > 0) {\r
+    if (match ($0, /^#define LIBCURL_VERSION_MAJOR [^"]+/)) {\r
+      libcurl_ver_major = substr($3, 1, length($3));\r
+    }\r
+    else if (match ($0, /^#define LIBCURL_VERSION_MINOR [^"]+/)) {\r
+      libcurl_ver_minor = substr($3, 1, length($3));\r
+    }\r
+    else if (match ($0, /^#define LIBCURL_VERSION_PATCH [^"]+/)) {\r
+      libcurl_ver_patch = substr($3, 1, length($3));\r
+    }\r
+  }\r
+  libcurl_ver = libcurl_ver_major "," libcurl_ver_minor "," libcurl_ver_patch;\r
+  libcurl_ver_str = libcurl_ver_major "." libcurl_ver_minor "." libcurl_ver_patch;\r
+\r
+  print "LIBCURL_VERSION = " libcurl_ver "";\r
+  print "LIBCURL_VERSION_STR = " libcurl_ver_str "";\r
+\r
+}\r
diff --git a/src/Makefile.netware b/src/Makefile.netware
new file mode 100644 (file)
index 0000000..1a07202
--- /dev/null
@@ -0,0 +1,240 @@
+#################################################################
+#
+## Makefile for building curl.nlm (NetWare version - gnu make)
+## Use: make -f Makefile.netware
+##
+## Comments to: Guenter Knauf <eflash@gmx.net>
+#
+#################################################################
+
+# Edit the path below to point to the base of your Novell NDK.
+BASE   = c:/novell
+INSTDIR        = s:/libcurl
+
+# Edit the path below to point to the base of your Zlib sources.
+ZLIB_PATH = ../../../cw/zlib-src-1.1.4
+
+# Edit the vars below to change NLM target settings.
+TARGET  = curl
+VERSION        = $(LIBCURL_VERSION)
+COPYR  = Copyright (c) 1996 - 2004, Daniel Stenberg, <daniel@haxx.se>
+DESCR  = cURL $(LIBCURL_VERSION_STR) - http://curl.haxx.se
+MTSAFE = YES
+STACK  = 64000
+SCREEN = $(TARGET) commandline utility
+MODULES        = libcurl.nlm
+IMPORTS        = @../lib/libcurl.imp
+
+# Edit the var below to point to your lib architecture.
+ifndef LIBARCH
+LIBARCH = LIBC
+endif
+
+# must be equal to DEBUG or NDEBUG
+DB     = NDEBUG
+# DB   = DEBUG
+# Optimization: -O<n> or debugging: -g
+ifeq ($(DB),NDEBUG)
+       OPT     = -O2
+       OBJDIR  = release
+else
+       OPT     = -g
+       OBJDIR  = debug
+endif
+
+# Include the version info retrieved from jk_version.h
+-include $(OBJDIR)/version.inc
+
+# The following line defines your compiler.
+ifdef METROWERKS
+       CC = mwccnlm
+else
+       CC = gcc
+endif
+# RM   = rm -f
+# CP   = cp -fv
+# if you want to mark the target as MTSAFE you will need a tool for
+# generating the xdc data for the linker; here's a minimal tool:
+# http://www.gknw.de/development/prgtools/mkxdc.zip
+MPKXDC = mkxdc
+
+# Global flags for all compilers
+CFLAGS = $(OPT) -D$(DB) -DNETWARE -nostdinc
+CFLAGS += -DUSE_MANUAL
+#CFLAGS        += -DHAVE_LIBZ
+
+ifeq ($(CC),mwccnlm)
+LD     = mwldnlm
+LDFLAGS        = -nostdlib $(PRELUDE) $(OBJDIR)/*.o -o $(OBJDIR)/$(TARGET).nlm -commandfile
+CFLAGS += -gccinc -inline off -opt nointrinsics
+CFLAGS += -relax_pointers
+#CFLAGS        += -w on
+ifeq ($(LIBARCH),LIBC)
+       PRELUDE = $(SDK_LIBC)/imports/libcpre.o
+       CFLAGS += -align 4 -inst mmx -proc 686
+       CFLAGS += -D_POSIX_SOURCE
+#      CFLAGS += -D__ANSIC__
+else
+       PRELUDE = "$(METROWERKS)/Novell Support/libraries/runtime/prelude.obj"
+#      CFLAGS += -include "$(METROWERKS)/Novell Support/headers/nlm_prefix.h"
+       CFLAGS += -align 1 -proc 586
+endif
+else
+LD     = nlmconv
+LDFLAGS        = -T
+CFLAGS += -fno-builtin -fpack-struct -fpcc-struct-return
+CFLAGS += -Wall #-Wno-main # -pedantic
+ifeq ($(LIBARCH),LIBC)
+       PRELUDE = $(SDK_LIBC)/imports/libcpre.gcc.o
+       CFLAGS += -D_POSIX_SOURCE
+#      CFLAGS += -D__ANSIC__
+else
+       PRELUDE = $(SDK_CLIB)/imports/clibpre.gcc.o
+       CFLAGS += -include $(BASE)/nlmconv/genlm.h
+endif
+endif
+
+LDLIBS =
+
+NDK_ROOT = $(BASE)/ndk
+SDK_CLIB = $(NDK_ROOT)/nwsdk
+SDK_LIBC = $(NDK_ROOT)/libc
+SDK_LDAP = $(NDK_ROOT)/cldapsdk/netware
+CURL_INC = ../include
+CURL_LIB = ../lib
+
+INCLUDES = -I$(CURL_INC) -I$(CURL_LIB)
+INCLUDES += -I$(ZLIB_PATH)
+
+ifeq ($(LIBARCH),LIBC)
+       INCLUDES += -I$(SDK_LIBC)/include -I$(SDK_LIBC)/include/nks
+       INCLUDES += -I$(SDK_LIBC)/include/winsock
+       INCLUDES += -I$(SDK_LDAP)/libc/inc
+else
+       INCLUDES += -I$(SDK_CLIB)/include/nlm -I$(SDK_CLIB)/include
+       INCLUDES += -I$(SDK_LDAP)/clib/inc
+       CFLAGS += -DNETDB_USE_INTERNET
+endif
+CFLAGS += $(INCLUDES)
+
+ifeq ($(MTSAFE),YES)
+       XDCDATA = $(OBJDIR)/$(TARGET).xdc
+endif
+
+ifeq ($(OSTYPE),linux)
+DL     = '
+-include $(BASE)/nlmconv/ncpfs.inc
+endif
+
+OBJS   = \
+       $(OBJDIR)/main.o \
+       $(OBJDIR)/hugehelp.o \
+       $(OBJDIR)/urlglob.o \
+       $(OBJDIR)/writeout.o \
+       $(OBJDIR)/getpass.o \
+       $(OBJDIR)/homedir.o
+
+
+all: $(OBJDIR) $(OBJDIR)/version.inc $(OBJDIR)/$(TARGET).nlm 
+
+$(OBJDIR)/%.o: %.c
+       @echo Compiling $<
+       @$(CC) $(CFLAGS) -c $< -o $@
+
+$(OBJDIR)/version.inc: $(CURL_INC)/curl/curl.h $(OBJDIR)
+       @echo Creating $@
+       @awk -f ../packages/netware/get_ver.awk $< > $@
+
+dist: all
+       -$(RM) $(OBJDIR)/*.o $(OBJDIR)/$(TARGET).map $(OBJDIR)/$(TARGET).ncv
+       -$(RM) $(OBJDIR)/$(TARGET).def $(OBJDIR)/version.inc $(XDCDATA)
+#      -$(CP) ../changes.txt $(OBJDIR)/
+
+install: all
+       @[ -d $(INSTDIR) ] || mkdir $(INSTDIR)
+       @$(CP) $(TARGET).nlm $(INSTDIR)
+
+clean:
+       -$(RM) -r $(OBJDIR)
+
+$(OBJDIR):
+       @mkdir $(OBJDIR)
+
+$(OBJDIR)/$(TARGET).nlm: $(OBJS) $(OBJDIR)/$(TARGET).def $(XDCDATA)
+       @echo Linking $@
+       @-$(RM) $@
+       @$(LD) $(LDFLAGS) $(OBJDIR)/$(TARGET).def
+
+$(OBJDIR)/%.xdc: Makefile.netware
+       @echo Creating $@
+       @$(MPKXDC) $(XDCOPT) $@
+
+$(OBJDIR)/%.def: Makefile.netware
+       @echo $(DL)# DEF file for linking with $(LD)$(DL) > $@
+       @echo $(DL)# Do not edit this file - it is created by make!$(DL) >> $@
+       @echo $(DL)# All your changes will be lost!!$(DL) >> $@
+       @echo $(DL)#$(DL) >> $@
+       @echo $(DL)copyright "$(COPYR)"$(DL) >> $@
+       @echo $(DL)description "$(DESCR)"$(DL) >> $@
+       @echo $(DL)version $(VERSION)$(DL) >> $@
+ifdef NLMTYPE
+       @echo $(DL)type $(NLMTYPE)$(DL) >> $@
+endif
+ifdef STACK
+       @echo $(DL)stack $(STACK)$(DL) >> $@
+endif
+ifdef SCREEN
+       @echo $(DL)screenname "$(SCREEN)"$(DL) >> $@
+else
+       @echo $(DL)screenname "DEFAULT"$(DL) >> $@
+endif
+ifeq ($(DB),DEBUG)
+       @echo $(DL)debug$(DL) >> $@
+endif
+       @echo $(DL)threadname "$(TARGET)"$(DL) >> $@
+ifdef XDCDATA
+       @echo $(DL)xdcdata $(XDCDATA)$(DL) >> $@
+endif
+ifeq ($(LIBARCH),CLIB)
+       @echo $(DL)start _Prelude$(DL) >> $@
+       @echo $(DL)exit _Stop$(DL) >> $@
+       @echo $(DL)import @$(SDK_CLIB)/imports/clib.imp$(DL) >> $@
+       @echo $(DL)import @$(SDK_CLIB)/imports/threads.imp$(DL) >> $@
+       @echo $(DL)import @$(SDK_CLIB)/imports/nlmlib.imp$(DL) >> $@
+       @echo $(DL)import @$(SDK_CLIB)/imports/socklib.imp$(DL) >> $@
+       @echo $(DL)import @$(SDK_LDAP)/clib/imports/ldapsdk.imp$(DL) >> $@
+       @echo $(DL)import @$(SDK_LDAP)/clib/imports/ldapssl.imp$(DL) >> $@
+       @echo $(DL)import @$(SDK_LDAP)/clib/imports/ldapx.imp$(DL) >> $@
+       @echo $(DL)module clib$(DL) >> $@
+else
+ifeq ($(LD),nlmconv)
+       @echo $(DL)flag_on 64$(DL) >> $@
+else
+       @echo $(DL)autounload$(DL) >> $@
+endif
+       @echo $(DL)pseudopreemption$(DL) >> $@
+       @echo $(DL)start _LibCPrelude$(DL) >> $@
+       @echo $(DL)exit _LibCPostlude$(DL) >> $@
+       @echo $(DL)check _LibCCheckUnload$(DL) >> $@
+       @echo $(DL)import @$(SDK_LIBC)/imports/libc.imp$(DL) >> $@
+       @echo $(DL)import @$(SDK_LIBC)/imports/netware.imp$(DL) >> $@
+       @echo $(DL)import @$(SDK_LDAP)/libc/imports/lldapsdk.imp$(DL) >> $@
+       @echo $(DL)import @$(SDK_LDAP)/libc/imports/lldapssl.imp$(DL) >> $@
+       @echo $(DL)import @$(SDK_LDAP)/libc/imports/lldapx.imp$(DL) >> $@
+       @echo $(DL)module libc$(DL) >> $@
+endif
+ifdef MODULES
+       @echo $(DL)module $(MODULES)$(DL) >> $@
+endif
+ifdef EXPORTS
+       @echo $(DL)export $(EXPORTS)$(DL) >> $@
+endif
+ifdef IMPORTS
+       @echo $(DL)import $(IMPORTS)$(DL) >> $@
+endif
+ifeq ($(LD),nlmconv)
+       @echo $(DL)input $(OBJS)$(DL) >> $@
+       @echo $(DL)input $(PRELUDE)$(DL) >> $@
+       @echo $(DL)output $(TARGET).nlm$(DL) >> $@
+endif
+
diff --git a/src/config-netware.h b/src/config-netware.h
new file mode 100644 (file)
index 0000000..31180ac
--- /dev/null
@@ -0,0 +1,485 @@
+/* lib/config.h.in.  Generated from configure.ac by autoheader.  */\r
+\r
+/* to disable DICT */\r
+#undef CURL_DISABLE_DICT\r
+\r
+/* to disable FILE */\r
+#undef CURL_DISABLE_FILE\r
+\r
+/* to disable FTP */\r
+#undef CURL_DISABLE_FTP\r
+\r
+/* to disable GOPHER */\r
+#undef CURL_DISABLE_GOPHER\r
+\r
+/* to disable HTTP */\r
+#undef CURL_DISABLE_HTTP\r
+\r
+/* to disable LDAP */\r
+#undef CURL_DISABLE_LDAP\r
+\r
+/* to disable TELNET */\r
+#undef CURL_DISABLE_TELNET\r
+\r
+/* Set to explicitly specify we don't want to use thread-safe functions */\r
+#undef DISABLED_THREADSAFE\r
+\r
+/* your Entropy Gathering Daemon socket pathname */\r
+#undef EGD_SOCKET\r
+\r
+/* Define if you want to enable IPv6 support */\r
+#undef ENABLE_IPV6\r
+\r
+/* Define to 1 if you have the <alloca.h> header file. */\r
+#undef HAVE_ALLOCA_H\r
+\r
+/* Define to 1 if you have the <arpa/inet.h> header file. */\r
+#define HAVE_ARPA_INET_H 1\r
+\r
+/* Define to 1 if you have the <assert.h> header file. */\r
+#define HAVE_ASSERT_H 1\r
+\r
+/* Define to 1 if you have the `closesocket' function. */\r
+#undef HAVE_CLOSESOCKET\r
+\r
+/* Define to 1 if you have the `CRYPTO_cleanup_all_ex_data' function. */\r
+#undef HAVE_CRYPTO_CLEANUP_ALL_EX_DATA\r
+\r
+/* Define to 1 if you have the <crypto.h> header file. */\r
+#undef HAVE_CRYPTO_H\r
+\r
+/* Define to 1 if you have the <des.h> header file. */\r
+#undef HAVE_DES_H\r
+\r
+/* disabled non-blocking sockets */\r
+#undef HAVE_DISABLED_NONBLOCKING\r
+\r
+/* Define to 1 if you have the <dlfcn.h> header file. */\r
+/* XXX: #undef HAVE_DLFCN_H */\r
+#define HAVE_DLFCN_H 1\r
+\r
+/* Define to 1 if you have the `dlopen' function. */\r
+#define HAVE_DLOPEN 1\r
+\r
+/* Define to 1 if you have the <err.h> header file. */\r
+#define HAVE_ERR_H 1\r
+\r
+/* Define to 1 if you have the <fcntl.h> header file. */\r
+#define HAVE_FCNTL_H 1\r
+\r
+/* use FIONBIO for non-blocking sockets */\r
+/* XXX: #undef HAVE_FIONBIO */\r
+#define HAVE_FIONBIO 1\r
+\r
+/* Define if getaddrinfo exists and works */\r
+#undef HAVE_GETADDRINFO\r
+\r
+/* Define to 1 if you have the `geteuid' function. */\r
+#undef HAVE_GETEUID\r
+\r
+/* Define to 1 if you have the `gethostbyaddr' function. */\r
+#define HAVE_GETHOSTBYADDR 1\r
+\r
+/* Define to 1 if you have the `gethostbyaddr_r' function. */\r
+#undef HAVE_GETHOSTBYADDR_R\r
+\r
+/* gethostbyaddr_r() takes 5 args */\r
+#undef HAVE_GETHOSTBYADDR_R_5\r
+\r
+/* gethostbyaddr_r() takes 7 args */\r
+#undef HAVE_GETHOSTBYADDR_R_7\r
+\r
+/* gethostbyaddr_r() takes 8 args */\r
+#undef HAVE_GETHOSTBYADDR_R_8\r
+\r
+/* Define to 1 if you have the `gethostbyname_r' function. */\r
+#undef HAVE_GETHOSTBYNAME_R\r
+\r
+/* gethostbyname_r() takes 3 args */\r
+#undef HAVE_GETHOSTBYNAME_R_3\r
+\r
+/* gethostbyname_r() takes 5 args */\r
+#undef HAVE_GETHOSTBYNAME_R_5\r
+\r
+/* gethostbyname_r() takes 6 args */\r
+#undef HAVE_GETHOSTBYNAME_R_6\r
+\r
+/* Define to 1 if you have the `getpass_r' function. */\r
+#undef HAVE_GETPASS_R\r
+\r
+/* Define to 1 if you have the `getpwuid' function. */\r
+#undef HAVE_GETPWUID\r
+\r
+/* Define to 1 if you have the `gettimeofday' function. */\r
+#define HAVE_GETTIMEOFDAY 1\r
+\r
+/* Define to 1 if you have the `gmtime_r' function. */\r
+#undef HAVE_GMTIME_R\r
+\r
+/* if you have the gssapi libraries */\r
+#undef HAVE_GSSAPI\r
+\r
+/* if you have the Heimdal gssapi libraries */\r
+#undef HAVE_GSSHEIMDAL\r
+\r
+/* if you have the MIT gssapi libraries */\r
+#undef HAVE_GSSMIT\r
+\r
+/* Define to 1 if you have the `inet_addr' function. */\r
+#define HAVE_INET_ADDR 1\r
+\r
+/* Define to 1 if you have the `inet_ntoa' function. */\r
+#define HAVE_INET_NTOA 1\r
+\r
+/* Define to 1 if you have the `inet_ntoa_r' function. */\r
+#undef HAVE_INET_NTOA_R\r
+\r
+/* inet_ntoa_r() is declared */\r
+#undef HAVE_INET_NTOA_R_DECL\r
+\r
+/* Define to 1 if you have the `inet_pton' function. */\r
+#define HAVE_INET_PTON 1\r
+\r
+/* Define to 1 if you have the <inttypes.h> header file. */\r
+#define HAVE_INTTYPES_H 1\r
+\r
+/* use ioctlsocket() for non-blocking sockets */\r
+#undef HAVE_IOCTLSOCKET\r
+\r
+/* use Ioctlsocket() for non-blocking sockets */\r
+#undef HAVE_IOCTLSOCKET_CASE\r
+\r
+/* Define to 1 if you have the <io.h> header file. */\r
+#undef HAVE_IO_H\r
+\r
+/* if you have the Kerberos4 libraries (including -ldes) */\r
+#undef HAVE_KRB4\r
+\r
+/* Define to 1 if you have the `krb_get_our_ip_for_realm' function. */\r
+#undef HAVE_KRB_GET_OUR_IP_FOR_REALM\r
+\r
+/* Define to 1 if you have the <krb.h> header file. */\r
+#undef HAVE_KRB_H\r
+\r
+/* Define to 1 if you have the `crypto' library (-lcrypto). */\r
+#undef HAVE_LIBCRYPTO\r
+\r
+/* Define to 1 if you have the `dl' library (-ldl). */\r
+#undef HAVE_LIBDL\r
+\r
+/* Define to 1 if you have the `nsl' library (-lnsl). */\r
+#undef HAVE_LIBNSL\r
+\r
+/* Define to 1 if you have the `resolv' library (-lresolv). */\r
+#undef HAVE_LIBRESOLV\r
+\r
+/* Define to 1 if you have the `resolve' library (-lresolve). */\r
+#undef HAVE_LIBRESOLVE\r
+\r
+/* Define to 1 if you have the `socket' library (-lsocket). */\r
+#undef HAVE_LIBSOCKET\r
+\r
+/* Define to 1 if you have the `ssl' library (-lssl). */\r
+#undef HAVE_LIBSSL\r
+\r
+/* If zlib is available */\r
+#undef HAVE_LIBZ\r
+//#define HAVE_LIBZ 1\r
+\r
+/* Define to 1 if you have the <limits.h> header file. */\r
+#define HAVE_LIMITS_H 1\r
+\r
+/* Define to 1 if you have the `localtime_r' function. */\r
+#undef HAVE_LOCALTIME_R\r
+\r
+/* if your compiler supports 'long long' */\r
+#define HAVE_LONGLONG 1\r
+\r
+/* Define to 1 if you have the <malloc.h> header file. */\r
+#define HAVE_MALLOC_H 1\r
+\r
+/* Define to 1 if you have the <memory.h> header file. */\r
+#undef HAVE_MEMORY_H\r
+\r
+/* Define to 1 if you have the <netdb.h> header file. */\r
+#define HAVE_NETDB_H 1\r
+\r
+/* Define to 1 if you have the <netinet/in.h> header file. */\r
+#define HAVE_NETINET_IN_H 1\r
+\r
+/* Define to 1 if you have the <net/if.h> header file. */\r
+#undef HAVE_NET_IF_H\r
+\r
+/* Define to 1 if you have the <openssl/crypto.h> header file. */\r
+#undef HAVE_OPENSSL_CRYPTO_H\r
+\r
+/* Define to 1 if you have the <openssl/engine.h> header file. */\r
+#undef HAVE_OPENSSL_ENGINE_H\r
+\r
+/* Define to 1 if you have the <openssl/err.h> header file. */\r
+#undef HAVE_OPENSSL_ERR_H\r
+\r
+/* Define to 1 if you have the <openssl/pem.h> header file. */\r
+#undef HAVE_OPENSSL_PEM_H\r
+\r
+/* Define to 1 if you have the <openssl/rsa.h> header file. */\r
+#undef HAVE_OPENSSL_RSA_H\r
+\r
+/* Define to 1 if you have the <openssl/ssl.h> header file. */\r
+#undef HAVE_OPENSSL_SSL_H\r
+\r
+/* Define to 1 if you have the <openssl/x509.h> header file. */\r
+#undef HAVE_OPENSSL_X509_H\r
+\r
+/* use O_NONBLOCK for non-blocking sockets */\r
+#undef HAVE_O_NONBLOCK\r
+\r
+/* Define to 1 if you have the <pem.h> header file. */\r
+#undef HAVE_PEM_H\r
+\r
+/* Define to 1 if you have the `perror' function. */\r
+#undef HAVE_PERROR\r
+\r
+/* Define to 1 if you have the `poll' function. */\r
+#undef HAVE_POLL\r
+\r
+/* Define to 1 if you have the <pwd.h> header file. */\r
+#undef HAVE_PWD_H\r
+\r
+/* Define to 1 if you have the `RAND_egd' function. */\r
+#undef HAVE_RAND_EGD\r
+\r
+/* Define to 1 if you have the `RAND_screen' function. */\r
+#undef HAVE_RAND_SCREEN\r
+\r
+/* Define to 1 if you have the `RAND_status' function. */\r
+#undef HAVE_RAND_STATUS\r
+\r
+/* Define to 1 if you have the <rsa.h> header file. */\r
+#undef HAVE_RSA_H\r
+\r
+/* Define to 1 if you have the `select' function. */\r
+#define HAVE_SELECT 1\r
+\r
+/* Define to 1 if you have the <setjmp.h> header file. */\r
+#define HAVE_SETJMP_H 1\r
+\r
+/* Define to 1 if you have the <sgtty.h> header file. */\r
+#undef HAVE_SGTTY_H\r
+\r
+/* Define to 1 if you have the `sigaction' function. */\r
+#undef HAVE_SIGACTION\r
+\r
+/* Define to 1 if you have the `siginterrupt' function. */\r
+#undef HAVE_SIGINTERRUPT\r
+\r
+/* Define to 1 if you have the `signal' function. */\r
+#define HAVE_SIGNAL 1\r
+\r
+/* If you have sigsetjmp */\r
+#undef HAVE_SIGSETJMP\r
+\r
+/* Define to 1 if you have the `socket' function. */\r
+#define HAVE_SOCKET 1\r
+\r
+/* use SO_NONBLOCK for non-blocking sockets */\r
+#undef HAVE_SO_NONBLOCK\r
+\r
+/* Define this if you have the SPNEGO library fbopenssl */\r
+#undef HAVE_SPNEGO\r
+\r
+/* Define to 1 if you have the <ssl.h> header file. */\r
+#undef HAVE_SSL_H\r
+\r
+/* Define to 1 if you have the <stdint.h> header file. */\r
+#define HAVE_STDINT_H 1\r
+\r
+/* Define to 1 if you have the <stdlib.h> header file. */\r
+#define HAVE_STDLIB_H 1\r
+\r
+/* Define to 1 if you have the `strcasecmp' function. */\r
+#define HAVE_STRCASECMP 1\r
+\r
+/* Define to 1 if you have the `strcmpi' function. */\r
+#undef HAVE_STRCMPI\r
+\r
+/* Define to 1 if you have the `strdup' function. */\r
+#define HAVE_STRDUP 1\r
+\r
+/* Define to 1 if you have the `strftime' function. */\r
+#define HAVE_STRFTIME 1\r
+\r
+/* Define to 1 if you have the `stricmp' function. */\r
+#undef HAVE_STRICMP\r
+\r
+/* Define to 1 if you have the <strings.h> header file. */\r
+#undef HAVE_STRINGS_H\r
+\r
+/* Define to 1 if you have the <string.h> header file. */\r
+#define HAVE_STRING_H 1\r
+\r
+/* Define to 1 if you have the `strlcat' function. */\r
+#define HAVE_STRLCAT 1\r
+\r
+/* Define to 1 if you have the `strlcpy' function. */\r
+#define HAVE_STRLCPY 1\r
+\r
+/* Define to 1 if you have the `strstr' function. */\r
+#define HAVE_STRSTR 1\r
+\r
+/* Define to 1 if you have the `strtok_r' function. */\r
+#undef HAVE_STRTOK_R\r
+\r
+/* Define to 1 if you have the `strtoll' function. */\r
+#undef HAVE_STRTOLL\r
+\r
+/* Define to 1 if you have the <sys/param.h> header file. */\r
+#define HAVE_SYS_PARAM_H 1\r
+\r
+/* Define to 1 if you have the <sys/poll.h> header file. */\r
+#undef HAVE_SYS_POLL_H\r
+\r
+/* Define to 1 if you have the <sys/select.h> header file. */\r
+#define HAVE_SYS_SELECT_H 1\r
+\r
+/* Define to 1 if you have the <sys/socket.h> header file. */\r
+#define HAVE_SYS_SOCKET_H 1\r
+\r
+/* Define to 1 if you have the <sys/sockio.h> header file. */\r
+#define HAVE_SYS_SOCKIO_H 1\r
+\r
+/* Define to 1 if you have the <sys/stat.h> header file. */\r
+#define HAVE_SYS_STAT_H 1\r
+\r
+/* Define to 1 if you have the <sys/time.h> header file. */\r
+#define HAVE_SYS_TIME_H 1\r
+\r
+/* Define to 1 if you have the <sys/types.h> header file. */\r
+#define HAVE_SYS_TYPES_H 1\r
+\r
+/* Define to 1 if you have the <sys/utime.h> header file. */\r
+#undef HAVE_SYS_UTIME_H\r
+\r
+/* Define to 1 if you have the `tcgetattr' function. */\r
+#undef HAVE_TCGETATTR\r
+\r
+/* Define to 1 if you have the `tcsetattr' function. */\r
+#undef HAVE_TCSETATTR\r
+\r
+/* Define to 1 if you have the <termios.h> header file. */\r
+#define HAVE_TERMIOS_H 1\r
+\r
+/* Define to 1 if you have the <termio.h> header file. */\r
+#undef HAVE_TERMIO_H\r
+\r
+/* Define to 1 if you have the <time.h> header file. */\r
+#define HAVE_TIME_H 1\r
+\r
+/* Define to 1 if you have the `uname' function. */\r
+#define HAVE_UNAME 1\r
+\r
+/* Define to 1 if you have the <unistd.h> header file. */\r
+#define HAVE_UNISTD_H 1\r
+\r
+/* Define to 1 if you have the `utime' function. */\r
+#define HAVE_UTIME 1\r
+\r
+/* Define to 1 if you have the <utime.h> header file. */\r
+#define HAVE_UTIME_H 1\r
+\r
+/* Define to 1 if you have the <winsock.h> header file. */\r
+#undef HAVE_WINSOCK_H\r
+\r
+/* Define this symbol if your OS supports changing the contents of argv */\r
+#undef HAVE_WRITABLE_ARGV\r
+\r
+/* Define to 1 if you have the <x509.h> header file. */\r
+#undef HAVE_X509_H\r
+\r
+/* if you have the zlib.h header file */\r
+#define HAVE_ZLIB_H 1\r
+\r
+/* need REENTRANT defined */\r
+#undef NEED_REENTRANT\r
+\r
+/* cpu-machine-OS */\r
+#define OS "i386-pc-NetWare"\r
+\r
+/* Name of package */\r
+#undef PACKAGE\r
+\r
+/* Define to the address where bug reports for this package should be sent. */\r
+#undef PACKAGE_BUGREPORT\r
+\r
+/* Define to the full name of this package. */\r
+#undef PACKAGE_NAME\r
+\r
+/* Define to the full name and version of this package. */\r
+#undef PACKAGE_STRING\r
+\r
+/* Define to the one symbol short name of this package. */\r
+#undef PACKAGE_TARNAME\r
+\r
+/* Define to the version of this package. */\r
+#undef PACKAGE_VERSION\r
+\r
+/* a suitable file to read random data from */\r
+#undef RANDOM_FILE\r
+\r
+/* Define as the return type of signal handlers (`int' or `void'). */\r
+#define RETSIGTYPE void\r
+\r
+/* Define to the type of arg 1 for `select'. */\r
+#undef SELECT_TYPE_ARG1\r
+\r
+/* Define to the type of args 2, 3 and 4 for `select'. */\r
+#undef SELECT_TYPE_ARG234\r
+\r
+/* Define to the type of arg 5 for `select'. */\r
+#undef SELECT_TYPE_ARG5\r
+\r
+/* The size of a `curl_off_t', as computed by sizeof. */\r
+#define SIZEOF_CURL_OFF_T 4\r
+\r
+/* Define to 1 if you have the ANSI C header files. */\r
+/* XXX: #undef STDC_HEADERS */\r
+#define STDC_HEADERS 1\r
+\r
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */\r
+#define TIME_WITH_SYS_TIME 1\r
+\r
+/* Define if you want to enable ares support */\r
+#undef USE_ARES\r
+\r
+/* Version number of package */\r
+#undef VERSION\r
+\r
+/* Define to 1 if on AIX 3.\r
+   System headers sometimes define this.\r
+   We just want to avoid a redefinition error message.  */\r
+#ifndef _ALL_SOURCE\r
+# undef _ALL_SOURCE\r
+#endif\r
+\r
+/* Number of bits in a file offset, on hosts where this is settable. */\r
+#undef _FILE_OFFSET_BITS\r
+\r
+/* Define for large files, on AIX-style hosts. */\r
+#undef _LARGE_FILES\r
+\r
+/* Define to empty if `const' does not conform to ANSI C. */\r
+#undef const\r
+\r
+/* type to use in place of in_addr_t if not defined */\r
+#undef in_addr_t\r
+\r
+/* Define to `unsigned' if <sys/types.h> does not define. */\r
+#undef size_t\r
+\r
+/* type to use in place of socklen_t if not defined */\r
+#define socklen_t int\r
+\r
+/* the signed version of size_t */\r
+#undef ssize_t\r
+\r
+\r
index 884dc17..485901f 100644 (file)
 #include <winsock2.h>
 #endif
 
+#ifdef __NOVELL_LIBC__
+#include <screen.h>
+#endif
+
 #ifdef TIME_WITH_SYS_TIME
 /* We can include both fine */
 #include <sys/time.h>
@@ -379,8 +383,13 @@ static void help(void)
     " -#/--progress-bar  Display transfer progress as a progress bar",
     NULL
   };
-  for(i=0; helptext[i]; i++)
+  for(i=0; helptext[i]; i++) {
     puts(helptext[i]);
+#ifdef __NOVELL_LIBC__
+    if (i && ((i % 23) == 0))
+      pressanykey();
+#endif
+  }
 }
 
 struct LongShort {
@@ -3450,6 +3459,9 @@ int main(int argc, char *argv[])
   res = operate(&config, argc, argv);
   free_config_fields(&config);
 
+#ifdef __NOVELL_LIBC__
+  pressanykey();
+#endif
 #ifdef VMS
   if (res > CURL_LAST) res = CURL_LAST;        /* If CURL_LAST exceeded then */
   return (vms_cond[res]|vms_show);      /* curlmsg.h is out of sync.  */
index d11e730..135cd98 100644 (file)
 /* include the hand-modified win32 adjusted config.h! */
 #include "config-win32.h"
 #endif
+#ifdef NETWARE
+/* hand-modified NetWare config.h! */
+#include "config-netware.h"
+#endif
 #ifdef macintosh
 /* this is not the same as Mac OS X */
 #include "config-mac.h"