diff options
-rw-r--r-- | lib/easy.c | 6 | ||||
-rw-r--r-- | lib/nwos.c | 84 | ||||
-rw-r--r-- | lib/setup.h | 1 |
3 files changed, 91 insertions, 0 deletions
diff --git a/lib/easy.c b/lib/easy.c index 5c8d6bb3e..2122f9b28 100644 --- a/lib/easy.c +++ b/lib/easy.c @@ -241,6 +241,12 @@ CURLcode curl_global_init(long flags) } #endif +#ifdef NETWARE + if(netware_init()) { + DEBUGF(fprintf(stderr, "Warning: LONG namespace not available\n")); + } +#endif + #ifdef USE_LIBIDN idna_init(); #endif diff --git a/lib/nwos.c b/lib/nwos.c new file mode 100644 index 000000000..f1cf194df --- /dev/null +++ b/lib/nwos.c @@ -0,0 +1,84 @@ +/*************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * Copyright (C) 1998 - 2007, Daniel Stenberg, <daniel@haxx.se>, et al. + * + * This software is licensed as described in the file COPYING, which + * you should have received as part of this distribution. The terms + * are also available at http://curl.haxx.se/docs/copyright.html. + * + * You may opt to use, copy, modify, merge, publish, distribute and/or sell + * copies of the Software, and permit persons to whom the Software is + * furnished to do so, under the terms of the COPYING file. + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY + * KIND, either express or implied. + * + * $Id$ + ***************************************************************************/ + +#ifdef NETWARE /* Novell NetWare */ + +#include <stdlib.h> + +#ifdef __NOVELL_LIBC__ +/* For native LibC-based NLM we need to do nothing. */ +int netware_init ( void ) +{ + return 0; +} + +#else /* __NOVELL_LIBC__ */ + +/* For native CLib-based NLM we need to initialize the LONG namespace. */ +#include <stdio.h> +#include <nwnspace.h> +#include <nwfileio.h> +#include <nwthread.h> +#include <nwadv.h> +/* Make the CLIB Ctx stuff link */ +#include <netdb.h> +NETDB_DEFINE_CONTEXT + +int netware_init ( void ) +{ + int rc = 0; + /* import UnAugmentAsterisk dynamically for NW4.x compatibility */ + unsigned int myHandle = GetNLMHandle(); + void (*pUnAugmentAsterisk)(int) = (void(*)(int)) + ImportSymbol(myHandle, "UnAugmentAsterisk"); + if (pUnAugmentAsterisk) + pUnAugmentAsterisk(1); + UnimportSymbol(myHandle, "UnAugmentAsterisk"); + /* set long name space */ + if ((SetCurrentNameSpace(4) == 255)) { + rc = 1; + } + if ((SetTargetNameSpace(4) == 255)) { + rc = rc + 2; + } + UseAccurateCaseForPaths(1); + return rc; +} + +/* dummy function to satisfy newer prelude */ +int __init_environment ( void ) +{ + return 0; +} + +/* dummy function to satisfy newer prelude */ +int __deinit_environment ( void ) +{ + return 0; +} + +#endif /* __NOVELL_LIBC__ */ + +#endif /* NETWARE */ + + diff --git a/lib/setup.h b/lib/setup.h index 867a00851..2fcd83ecb 100644 --- a/lib/setup.h +++ b/lib/setup.h @@ -315,6 +315,7 @@ int fileno( FILE *stream); #endif #ifdef NETWARE +int netware_init(void); #ifndef __NOVELL_LIBC__ #include <sys/bsdskt.h> #include <sys/timeval.h> |