diff --git a/isisd/dict.h b/isisd/dict.h
index 2977a90..1a5e9d7 100644
--- a/isisd/dict.h
+++ b/isisd/dict.h
@@ -14,7 +14,7 @@
  * into proprietary software; there is no requirement for such software to
  * contain a copyright notice related to this source.
  *
- * $Id: dict.h,v 1.1 2003/12/23 08:09:48 jardin Exp $
+ * $Id: dict.h,v 1.2 2004/09/10 20:48:21 hasso Exp $
  * $Name:  $
  */
 
@@ -31,37 +31,41 @@
  */
 
 #ifdef __cplusplus
-extern "C" {
+extern "C"
+{
 #endif
 
-typedef unsigned long dictcount_t;
+  typedef unsigned long dictcount_t;
 #define DICTCOUNT_T_MAX ULONG_MAX
 
 /*
  * The dictionary is implemented as a red-black tree
  */
 
-typedef enum { dnode_red, dnode_black } dnode_color_t;
+  typedef enum
+  { dnode_red, dnode_black } dnode_color_t;
 
-typedef struct dnode_t {
-    #if defined(DICT_IMPLEMENTATION) || !defined(KAZLIB_OPAQUE_DEBUG)
+  typedef struct dnode_t
+  {
+#if defined(DICT_IMPLEMENTATION) || !defined(KAZLIB_OPAQUE_DEBUG)
     struct dnode_t *dict_left;
     struct dnode_t *dict_right;
     struct dnode_t *dict_parent;
     dnode_color_t dict_color;
     const void *dict_key;
     void *dict_data;
-    #else
+#else
     int dict_dummy;
-    #endif
-} dnode_t;
+#endif
+  } dnode_t;
 
-typedef int (*dict_comp_t)(const void *, const void *);
-typedef dnode_t *(*dnode_alloc_t)(void *);
-typedef void (*dnode_free_t)(dnode_t *, void *);
+  typedef int (*dict_comp_t) (const void *, const void *);
+  typedef dnode_t *(*dnode_alloc_t) (void *);
+  typedef void (*dnode_free_t) (dnode_t *, void *);
 
-typedef struct dict_t {
-    #if defined(DICT_IMPLEMENTATION) || !defined(KAZLIB_OPAQUE_DEBUG)
+  typedef struct dict_t
+  {
+#if defined(DICT_IMPLEMENTATION) || !defined(KAZLIB_OPAQUE_DEBUG)
     dnode_t dict_nilnode;
     dictcount_t dict_nodecount;
     dictcount_t dict_maxcount;
@@ -70,59 +74,61 @@
     dnode_free_t dict_freenode;
     void *dict_context;
     int dict_dupes;
-    #else
+#else
     int dict_dummmy;
-    #endif
-} dict_t;
+#endif
+  } dict_t;
 
-typedef void (*dnode_process_t)(dict_t *, dnode_t *, void *);
+  typedef void (*dnode_process_t) (dict_t *, dnode_t *, void *);
 
-typedef struct dict_load_t {
-    #if defined(DICT_IMPLEMENTATION) || !defined(KAZLIB_OPAQUE_DEBUG)
+  typedef struct dict_load_t
+  {
+#if defined(DICT_IMPLEMENTATION) || !defined(KAZLIB_OPAQUE_DEBUG)
     dict_t *dict_dictptr;
     dnode_t dict_nilnode;
-    #else
+#else
     int dict_dummmy;
-    #endif
-} dict_load_t;
+#endif
+  } dict_load_t;
 
-extern dict_t *dict_create(dictcount_t, dict_comp_t);
-extern void dict_set_allocator(dict_t *, dnode_alloc_t, dnode_free_t, void *);
-extern void dict_destroy(dict_t *);
-extern void dict_free_nodes(dict_t *);
-extern void dict_free(dict_t *);
-extern dict_t *dict_init(dict_t *, dictcount_t, dict_comp_t);
-extern void dict_init_like(dict_t *, const dict_t *);
-extern int dict_verify(dict_t *);
-extern int dict_similar(const dict_t *, const dict_t *);
-extern dnode_t *dict_lookup(dict_t *, const void *);
-extern dnode_t *dict_lower_bound(dict_t *, const void *);
-extern dnode_t *dict_upper_bound(dict_t *, const void *);
-extern void dict_insert(dict_t *, dnode_t *, const void *);
-extern dnode_t *dict_delete(dict_t *, dnode_t *);
-extern int dict_alloc_insert(dict_t *, const void *, void *);
-extern void dict_delete_free(dict_t *, dnode_t *);
-extern dnode_t *dict_first(dict_t *);
-extern dnode_t *dict_last(dict_t *);
-extern dnode_t *dict_next(dict_t *, dnode_t *);
-extern dnode_t *dict_prev(dict_t *, dnode_t *);
-extern dictcount_t dict_count(dict_t *);
-extern int dict_isempty(dict_t *);
-extern int dict_isfull(dict_t *);
-extern int dict_contains(dict_t *, dnode_t *);
-extern void dict_allow_dupes(dict_t *);
-extern int dnode_is_in_a_dict(dnode_t *);
-extern dnode_t *dnode_create(void *);
-extern dnode_t *dnode_init(dnode_t *, void *);
-extern void dnode_destroy(dnode_t *);
-extern void *dnode_get(dnode_t *);
-extern const void *dnode_getkey(dnode_t *);
-extern void dnode_put(dnode_t *, void *);
-extern void dict_process(dict_t *, void *, dnode_process_t);
-extern void dict_load_begin(dict_load_t *, dict_t *);
-extern void dict_load_next(dict_load_t *, dnode_t *, const void *);
-extern void dict_load_end(dict_load_t *);
-extern void dict_merge(dict_t *, dict_t *);
+  extern dict_t *dict_create (dictcount_t, dict_comp_t);
+  extern void dict_set_allocator (dict_t *, dnode_alloc_t, dnode_free_t,
+				  void *);
+  extern void dict_destroy (dict_t *);
+  extern void dict_free_nodes (dict_t *);
+  extern void dict_free (dict_t *);
+  extern dict_t *dict_init (dict_t *, dictcount_t, dict_comp_t);
+  extern void dict_init_like (dict_t *, const dict_t *);
+  extern int dict_verify (dict_t *);
+  extern int dict_similar (const dict_t *, const dict_t *);
+  extern dnode_t *dict_lookup (dict_t *, const void *);
+  extern dnode_t *dict_lower_bound (dict_t *, const void *);
+  extern dnode_t *dict_upper_bound (dict_t *, const void *);
+  extern void dict_insert (dict_t *, dnode_t *, const void *);
+  extern dnode_t *dict_delete (dict_t *, dnode_t *);
+  extern int dict_alloc_insert (dict_t *, const void *, void *);
+  extern void dict_delete_free (dict_t *, dnode_t *);
+  extern dnode_t *dict_first (dict_t *);
+  extern dnode_t *dict_last (dict_t *);
+  extern dnode_t *dict_next (dict_t *, dnode_t *);
+  extern dnode_t *dict_prev (dict_t *, dnode_t *);
+  extern dictcount_t dict_count (dict_t *);
+  extern int dict_isempty (dict_t *);
+  extern int dict_isfull (dict_t *);
+  extern int dict_contains (dict_t *, dnode_t *);
+  extern void dict_allow_dupes (dict_t *);
+  extern int dnode_is_in_a_dict (dnode_t *);
+  extern dnode_t *dnode_create (void *);
+  extern dnode_t *dnode_init (dnode_t *, void *);
+  extern void dnode_destroy (dnode_t *);
+  extern void *dnode_get (dnode_t *);
+  extern const void *dnode_getkey (dnode_t *);
+  extern void dnode_put (dnode_t *, void *);
+  extern void dict_process (dict_t *, void *, dnode_process_t);
+  extern void dict_load_begin (dict_load_t *, dict_t *);
+  extern void dict_load_next (dict_load_t *, dnode_t *, const void *);
+  extern void dict_load_end (dict_load_t *);
+  extern void dict_merge (dict_t *, dict_t *);
 
 #if defined(DICT_IMPLEMENTATION) || !defined(KAZLIB_OPAQUE_DEBUG)
 #ifdef KAZLIB_SIDEEFFECT_DEBUG
