From a4f36558fc1bb9c9f7f0b2f977a2e407905ccd88 Mon Sep 17 00:00:00 2001 From: Gunter Knauf Date: Wed, 11 Jul 2007 21:34:22 +0000 Subject: added NetWare-own file to provide some init functions (for now only CLIB); added call to netware_init() in curl_global_init() to make sure it gets called before any library functions get used. --- lib/easy.c | 6 +++++ lib/nwos.c | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ lib/setup.h | 1 + 3 files changed, 91 insertions(+) create mode 100644 lib/nwos.c (limited to 'lib') 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, , 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 + +#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 +#include +#include +#include +#include +/* Make the CLIB Ctx stuff link */ +#include +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 #include -- cgit v1.2.3