Along the lines that Andrew suggested, I added a header called ubi_null.h.
authorChristopher R. Hertel <crh@samba.org>
Thu, 21 May 1998 17:14:20 +0000 (17:14 +0000)
committerChristopher R. Hertel <crh@samba.org>
Thu, 21 May 1998 17:14:20 +0000 (17:14 +0000)
This header tries four different locations for a definition of NULL.  If
NULL still hasn't been found, it defaults to ((void *)0).  All of the
includes can be, essentially, overridden by defining NULL on the command
line, as in -DNULL=((void *)0).  I have faith that this will avoid the
problem of NULL being in different places on different systems.  If there
is a system out there that doesn't define NULL in any of the headers I've
included, then let me know *where* it's defined and I'll add another
header.  Chris -)-----
(This used to be commit 05fcc678729999f249b97460a579bdc218028a47)

13 files changed:
source3/ubiqx/ubi_AVLtree.c
source3/ubiqx/ubi_AVLtree.h
source3/ubiqx/ubi_BinTree.c
source3/ubiqx/ubi_BinTree.h
source3/ubiqx/ubi_Cache.c
source3/ubiqx/ubi_Cache.h
source3/ubiqx/ubi_SplayTree.c
source3/ubiqx/ubi_SplayTree.h
source3/ubiqx/ubi_dLinkList.c
source3/ubiqx/ubi_dLinkList.h
source3/ubiqx/ubi_null.h [new file with mode: 0644]
source3/ubiqx/ubi_sLinkList.c
source3/ubiqx/ubi_sLinkList.h

index 8f7cb29764bbfaa716deea9d9d18b2928f5ba0ec..f2ed7f28548aad7f2c4cdfa98e0037e4de34a7bb 100644 (file)
  *
  * -------------------------------------------------------------------------- **
  *
- * Log: ubi_AVLtree.c,v
+ * Log: ubi_AVLtree.c,v 
+ * Revision 4.1  1998/05/20 04:35:50  crh
+ * The C file now includes ubi_null.h.  See ubi_null.h for more info.
+ *
  * Revision 4.0  1998/03/10 03:37:09  crh
  * Major changes.
  * By adding the AVL balance field to the base ubi_btNode structure, I no
  *  ========================================================================= **
  */
 
-#include "../includes.h"
-#include "ubi_AVLtree.h"            /* Header for THIS module.             */
+#include "ubi_null.h"     /* ubiqx NULL source.       */
+#include "ubi_AVLtree.h"  /* Header for THIS module.  */
 
 /* ========================================================================== **
  * Static data.
  */
 
 static char ModuleID[] = "ubi_AVLtree\n\
-\tRevision: 4.0\n\
-\tDate: 1998/03/10 03:37:09\n\
-\tAuthor: crh\n";
+\tRevision: 4.\n\
+\tDate: 1998/05/20 04:35:50 \n\
+\tAuthor: crh \n";
 
 /* ========================================================================== **
  * The next set of functions are the AVL balancing routines.  There are left
index f99a78aa267559d0878c44ab3194cac53dab77e2..c70190cb6276b3a63323b9a83b50d641b2fb7d05 100644 (file)
  *  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  *
  * -------------------------------------------------------------------------- **
- * Log: ubi_AVLtree.h,v
+ * Log: ubi_AVLtree.h,v 
+ * Revision 4.1  1998/05/20 04:35:50  crh
+ * The C file now includes ubi_null.h.  See ubi_null.h for more info.
+ *
  * Revision 4.0  1998/03/10 03:34:45  crh
  * Major changes.
  * By adding the AVL balance field to the base ubi_btNode structure, I no
index 16640f278eb34f29b69c2ea0fc3af7e6717a88aa..d60bcafe8dd4d2a2b0d9b2c1b963674ffed333e8 100644 (file)
  *
  * -------------------------------------------------------------------------- **
  *
- * Log: ubi_BinTree.c,v
+ * Log: ubi_BinTree.c,v 
+ * Revision 4.2  1998/05/20 04:32:36  crh
+ * The C file now includes ubi_null.h.  See ubi_null.h for more info.
+ * Also, the balance and gender fields of the node were declared as
+ * signed char.  As I understand it, at least one SunOS or Solaris
+ * compiler doesn't like "signed char".  The declarations were
+ * wrong anyway, so I changed them to simple "char".
+ *
  * Revision 4.1  1998/03/31 06:11:57  crh
  * Thomas Aglassinger sent E'mail pointing out errors in the
  * dereferencing of function pointers, and a missing typecast.
  * ========================================================================== **
  */
 
-#include "../includes.h"
-#include "ubi_BinTree.h"            /* Header for this module          */
-
+#include "ubi_null.h"     /* ubiqx NULL source.       */
+#include "ubi_BinTree.h"  /* Header for this module.  */
 
 /* ========================================================================== **
  * Static data.
  */
 
 static char ModuleID[] = "ubi_BinTree\n\
-\tRevision: 4.1\n\
-\tDate: 1998/03/31 06:11:57\n\
-\tAuthor: crh\n";
+\tRevision: 4.\n\
+\tDate: 1998/05/20 04:32:36 \n\
+\tAuthor: crh \n";
 
 /* ========================================================================== **
  * Internal (private) functions.
@@ -206,14 +212,14 @@ static ubi_btNodePtr TreeFind( ubi_btItemPtr  findme,
   {
   register ubi_btNodePtr tmp_p      = p;
   ubi_btNodePtr          tmp_pp     = NULL;
-  signed char            tmp_gender = ubi_trEQUAL;
+  char                   tmp_gender = ubi_trEQUAL;
   int                    tmp_cmp;
 
   while( tmp_p
      && (ubi_trEQUAL != (tmp_cmp = ubi_trAbNormal((*CmpFunc)(findme, tmp_p)))) )
     {
     tmp_pp     = tmp_p;                 /* Keep track of previous node. */
-    tmp_gender = (signed char)tmp_cmp;  /* Keep track of sex of child.  */
+    tmp_gender = (char)tmp_cmp;         /* Keep track of sex of child.  */
     tmp_p      = tmp_p->Link[tmp_cmp];  /* Go to child. */
     }
   *parentp = tmp_pp;                /* Return results. */
@@ -477,7 +483,7 @@ ubi_btNodePtr ubi_btInitNode( ubi_btNodePtr NodePtr )
 
 ubi_btRootPtr ubi_btInitTree( ubi_btRootPtr   RootPtr,
                               ubi_btCompFunc  CompFunc,
-                              unsigned char   Flags )
+                              char            Flags )
   /* ------------------------------------------------------------------------ **
    * Initialize the fields of a Tree Root header structure.
    *
index 8a99f28045c03c8260292bc5e1f51775847a42b6..609566fe3a199368de1b76a460ed281b3af5dfc3 100644 (file)
  *
  * -------------------------------------------------------------------------- **
  *
- * Log: ubi_BinTree.h,v
+ * Log: ubi_BinTree.h,v 
+ * Revision 4.2  1998/05/20 04:32:36  crh
+ * The C file now includes ubi_null.h.  See ubi_null.h for more info.
+ * Also, the balance and gender fields of the node were declared as
+ * signed char.  As I understand it, at least one SunOS or Solaris
+ * compiler doesn't like "signed char".  The declarations were
+ * wrong anyway, so I changed them to simple "char".
+ *
  * Revision 4.1  1998/03/31 06:13:47  crh
  * Thomas Aglassinger sent E'mail pointing out errors in the
  * dereferencing of function pointers, and a missing typecast.
@@ -263,8 +270,8 @@ typedef void *ubi_btItemPtr;          /* A pointer to key data within a node. */
  */
 typedef struct ubi_btNodeStruct {
   struct ubi_btNodeStruct *Link[ 3 ];
-  signed char              gender;
-  signed char              balance;
+  char                     gender;
+  char                     balance;
   } ubi_btNode;
 
 typedef ubi_btNode *ubi_btNodePtr;     /* Pointer to an ubi_btNode structure. */
@@ -326,7 +333,7 @@ typedef struct {
   ubi_btNodePtr  root;     /* A pointer to the root node of the tree       */
   ubi_btCompFunc cmp;      /* A pointer to the tree's comparison function  */
   unsigned long  count;    /* A count of the number of nodes in the tree   */
-  unsigned char  flags;    /* Overwrite Y|N, Duplicate keys Y|N...         */
+  char           flags;    /* Overwrite Y|N, Duplicate keys Y|N...         */
   } ubi_btRoot;
 
 typedef ubi_btRoot *ubi_btRootPtr;  /* Pointer to an ubi_btRoot structure. */
@@ -367,7 +374,7 @@ ubi_btNodePtr ubi_btInitNode( ubi_btNodePtr NodePtr );
 
 ubi_btRootPtr  ubi_btInitTree( ubi_btRootPtr   RootPtr,
                                ubi_btCompFunc  CompFunc,
-                               unsigned char   Flags );
+                               char            Flags );
   /* ------------------------------------------------------------------------ **
    * Initialize the fields of a Tree Root header structure.
    *  
index 290f7593e7552edfc1c55752855ad57cb56f7862..af2fe7b78d8aff5321cf122079be8d9a6a713625 100644 (file)
  *
  * -------------------------------------------------------------------------- **
  *
- *  Log: ubi_Cache.c,v
+ *  Log: ubi_Cache.c,v 
+ *  Revision 0.1  1998/05/20 04:36:02  crh
+ *  The C file now includes ubi_null.h.  See ubi_null.h for more info.
+ *
  *  Revision 0.0  1997/12/18 06:24:33  crh
  *  Initial Revision.
  *
  * ========================================================================== **
  */
 
-#include "../includes.h"
-#include "ubi_Cache.h"  /* Header for *this* module. */
+#include "ubi_null.h"     /* ubiqx NULL source.       */
+#include "ubi_Cache.h"    /* Header for *this* module. */
 
 /* -------------------------------------------------------------------------- **
  * Static data...
  */
 
+/*  commented out until I make use of it...
+static char ModuleID[] = 
+"ubi_Cache\n\
+\tRevision: 0.1 \n\
+\tDate: 1998/05/20 04:36:02 \n\
+\tAuthor: crh \n";
+*/
+
 /* -------------------------------------------------------------------------- **
  * Internal functions...
  */
index eddd6a4bf821c35984f597857e3492e3211ac38a..e4e2bf05420e1593bbd816765d1f12f3baa37c70 100644 (file)
  *
  * -------------------------------------------------------------------------- **
  *
- *  Log: ubi_Cache.h,v
+ *  Log: ubi_Cache.h,v 
+ *  Revision 0.1  1998/05/20 04:36:02  crh
+ *  The C file now includes ubi_null.h.  See ubi_null.h for more info.
+ *
  *  Revision 0.0  1997/12/18 06:25:23  crh
  *  Initial Revision.
  *
index 7bc1070bc79714bd8ec3782060a6b4e563797569..a0d638ecc771da160ccf4971871f09ecf53be30f 100644 (file)
  *
  * -------------------------------------------------------------------------- **
  *
- * Log: ubi_SplayTree.c,v
+ * Log: ubi_SplayTree.c,v 
+ * Revision 4.1  1998/05/20 04:37:54  crh
+ * The C file now includes ubi_null.h.  See ubi_null.h for more info.
+ *
  * Revision 4.0  1998/03/10 03:41:33  crh
  * Minor comment changes.  The revision number is now 4.0 to match the
  * BinTree and AVLtree modules.
  * ========================================================================== **
  */
 
-#include "../includes.h"
-#include "ubi_SplayTree.h" /* Header for THIS module.             */
+#include "ubi_null.h"       /* ubiqx NULL source.       */
+#include "ubi_SplayTree.h"  /* Header for THIS module.  */
 
 /* ========================================================================== **
  * Static data.
  */
 
 static char ModuleID[] = "ubi_SplayTree\n\
-\tRevision: 4.0\n\
-\tDate: 1998/03/10 03:41:33\n\
-\tAuthor: crh\n";
+\tRevision: 4.\n\
+\tDate: 1998/05/20 04:37:54 \n\
+\tAuthor: crh \n";
 
 
 /* ========================================================================== **
index 9e557347020fec8f08f8c9e6691fab9d76425de7..800f53d884c445c625660515ab59565fcf2cd78d 100644 (file)
  *
  * -------------------------------------------------------------------------- **
  *
- * Log: ubi_SplayTree.h,v
+ * Log: ubi_SplayTree.h,v 
+ * Revision 4.1  1998/05/20 04:37:54  crh
+ * The C file now includes ubi_null.h.  See ubi_null.h for more info.
+ *
  * Revision 4.0  1998/03/10 03:40:57  crh
  * Minor comment changes.  The revision number is now 4.0 to match the
  * BinTree and AVLtree modules.
index 65c11d225d83d18bd5e69a79f720fb4f8a7ca744..405cfcb6af008113335de4f145a7b5a31b6cf6d4 100644 (file)
  *
  * -------------------------------------------------------------------------- **
  *
- * Log: ubi_dLinkList.c,v
+ * Log: ubi_dLinkList.c,v 
+ * Revision 0.6  1998/05/20 04:38:05  crh
+ * The C file now includes ubi_null.h.  See ubi_null.h for more info.
+ *
  * Revision 0.5  1998/03/10 02:55:00  crh
  * Simplified the code and added macros for stack & queue manipulations.
  *
@@ -52,8 +55,8 @@
  * ========================================================================== **
  */
 
-#include "../includes.h"
-#include "ubi_dLinkList.h"
+#include "ubi_null.h"       /* ubiqx NULL source.        */
+#include "ubi_dLinkList.h"  /* Header for *this* module. */
 
 /* ========================================================================== **
  * Functions...
index 9c6a3be2e2adb5c5bdac588a6bf6378ab88a9ce9..0bc6a62dd4de962a8a5f3a24be245b462f743bcd 100644 (file)
  *
  * -------------------------------------------------------------------------- **
  *
- * Log: ubi_dLinkList.h,v
+ * Log: ubi_dLinkList.h,v 
+ * Revision 0.6  1998/05/20 04:38:05  crh
+ * The C file now includes ubi_null.h.  See ubi_null.h for more info.
+ *
  * Revision 0.5  1998/03/10 02:54:04  crh
  * Simplified the code and added macros for stack & queue manipulations.
  *
@@ -54,8 +57,6 @@
  * ========================================================================== **
  */
 
-#include <stdlib.h>
-
 
 /* ========================================================================== **
  * Typedefs...
diff --git a/source3/ubiqx/ubi_null.h b/source3/ubiqx/ubi_null.h
new file mode 100644 (file)
index 0000000..c5cab41
--- /dev/null
@@ -0,0 +1,92 @@
+#ifndef UBI_NULL_H
+#define UBI_NULL_H
+/* ========================================================================== **
+ *                                 ubi_null.h
+ *
+ *  Copyright (C) 1998 by Christopher R. Hertel
+ *
+ *  Email: crh@ubiqx.mn.org
+ * -------------------------------------------------------------------------- **
+ *  This header provides declarations and data types used internally by the
+ *  ubiqx modules.  It is not intended to be included elsewhere.
+ * -------------------------------------------------------------------------- **
+ *
+ *  This library is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Library General Public
+ *  License as published by the Free Software Foundation; either
+ *  version 2 of the License, or (at your option) any later version.
+ *
+ *  This library is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Library General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Library General Public
+ *  License along with this library; if not, write to the Free
+ *  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * -------------------------------------------------------------------------- **
+ *
+ *  You don't need this in your code.  It is used by the ubi_*.c files.
+ *  At present, its only purpose is to provide a definition of NULL.
+ *  Read on...
+ *
+ * -------------------------------------------------------------------------- **
+ *
+ * Log: ubi_null.h,v 
+ * Revision 0.0  1998/05/20 04:38:38  crh
+ * Initial Revision.
+ *
+ * ========================================================================== **
+ */
+
+/* -------------------------------------------------------------------------- **
+ *  Looking for NULL.
+ *
+ *  The core ubiqx modules (all those beginning with 'ubi_') rely on very
+ *  little from the outside world.  One exception is that we need a
+ *  defintion for NULL.  This has turned out to be something of a problem,
+ *  as NULL is NOT always defined in the same place on different systems.
+ *
+ *  Ahh... standards...
+ *
+ *  K&R 2nd Ed. (pg 102) says NULL should be in <stdio.h>.  I've heard
+ *  that it is in <locale.h> on some systems.  I've also seen it in
+ *  <stddef.h> and <stdlib.h>.  In most cases it's defined in multiple
+ *  places.  We'll try several of them.  If none of these work on your
+ *  system, please send E'mail and let me know where you get your NULL!
+ *
+ *  The purpose of the mess below, then, is simply to supply a definition
+ *  of NULL to the ubi_*.c files.  Keep in mind that C compilers (all
+ *  those of which I'm aware) will allow you to define a constant on the
+ *  command line, eg.: -DNULL=((void *)0).
+ *
+ *  Also, 99.9% of the time, NULL is zero.  I have been informed of at
+ *  least one exception.
+ *
+ *  crh; may 1998
+ */
+
+#ifndef NULL
+#include <stddef.h>
+#endif
+
+#ifndef NULL
+#include <stdlib.h>
+#endif
+
+#ifndef NULL
+#include <stdio.h>
+#endif
+
+#ifndef NULL
+#include <locale.h>
+#endif
+
+#ifndef NULL
+#define NULL ((void *)0)
+#endif
+
+/* ================================ The End ================================= */
+#endif /* UBI_NULL_H */
+
index 3dc4f0640cb14cf555cf4404f6dbce47626f0239..d1cdb104160288f7214394a2b81fe9b96722fbfe 100644 (file)
  *
  * -------------------------------------------------------------------------- **
  *
- * Log: ubi_sLinkList.c,v
+ * Log: ubi_sLinkList.c,v 
+ * Revision 0.5  1998/05/20 04:38:05  crh
+ * The C file now includes ubi_null.h.  See ubi_null.h for more info.
+ *
  * Revision 0.4  1998/03/10 02:23:20  crh
  * Combined ubi_StackQueue and ubi_sLinkList into one module.  Redesigned
  * the functions and macros.  Not a complete rewrite but close to it.
@@ -72,7 +75,8 @@
  * ========================================================================== **
  */
 
-#include "ubi_sLinkList.h"
+#include "ubi_null.h"       /* ubiqx NULL source.        */
+#include "ubi_sLinkList.h"  /* Header for *this* module. */
 
 /* ========================================================================== **
  * Functions...
index 2275d852da1c26715a4040443257d4528139ea78..03ab4f983675a105569e1eab10a6252560a4053e 100644 (file)
  *
  * -------------------------------------------------------------------------- **
  *
- * Log: ubi_sLinkList.h,v
+ * Log: ubi_sLinkList.h,v 
+ * Revision 0.5  1998/05/20 04:38:05  crh
+ * The C file now includes ubi_null.h.  See ubi_null.h for more info.
+ *
  * Revision 0.4  1998/03/10 02:22:39  crh
  * Combined ubi_StackQueue and ubi_sLinkList into one module.  Redesigned
  * the functions and macros.  Not a complete rewrite but close to it.
@@ -74,8 +77,6 @@
  * ========================================================================== **
  */
 
-#include <stdlib.h>
-
 
 /* ========================================================================== **
  * Typedefs...