]> granicus.if.org Git - curl/commitdiff
added NetWare-own file to provide some init functions (for now only CLIB);
authorGunter Knauf <gk@gknw.de>
Wed, 11 Jul 2007 21:34:22 +0000 (21:34 +0000)
committerGunter Knauf <gk@gknw.de>
Wed, 11 Jul 2007 21:34:22 +0000 (21:34 +0000)
added call to netware_init() in curl_global_init() to make sure it gets called before any library functions get used.

lib/easy.c
lib/nwos.c [new file with mode: 0644]
lib/setup.h

index 5c8d6bb3e25deeace6311bb9b6e4b96526915923..2122f9b282d939cba9d7b511d2b8c11c56616b4f 100644 (file)
@@ -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 (file)
index 0000000..f1cf194
--- /dev/null
@@ -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 */
+
+
index 867a00851630c4fe97837adda2dee4f50fab97af..2fcd83ecb8dd2f53c5d65ded6cf2b4f1797c4425 100644 (file)
@@ -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>