SILC Runtime Toolkit 1.2 Beta 1
[runtime.git] / lib / silcutil / silcconfig.h
index b4f5a70482e677b2054f3973f3b131a631ed0e3a..c4824886640e97aed3585d0c37df639f12daeeb1 100644 (file)
@@ -2,14 +2,13 @@
 
   silcconfig.h
 
-  Author: Johnny Mnemonic <johnny@themnemonic.org>
+  Author: Giovanni Giacobbi <giovanni@giacobbi.net>
 
-  Copyright (C) 1997 - 2002 Pekka Riikonen
+  Copyright (C) 2002 - 2003, 2008 Giovanni Giacobbi
 
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
-  the Free Software Foundation; either version 2 of the License, or
-  (at your option) any later version.
+  the Free Software Foundation; version 2 of the License.
 
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -18,7 +17,7 @@
 
 */
 
-/****h* silcutil/SilcConfigAPI
+/****h* silcutil/Config File Interface
  *
  * DESCRIPTION
  *
  *
  * Now you can use the newly created Entity to register a group of expected
  * known options and sub-blocks, and then you can call the main parsing loop
- * with the silc_config_main() function. When silc_config_main() will 
- * return, if some error encoured the object file will point to the file 
- * that caused this error (this can be different from the originally 
- * opened file if it contained `Include' directives).  If no errors 
+ * with the silc_config_main() function. When silc_config_main() will
+ * return, if some error encoured the object file will point to the file
+ * that caused this error (this can be different from the originally
+ * opened file if it contained `Include' directives).  If no errors
  * encoured then the File objects will still point to the original file.
  *
  * While silc_config_main() will take care of destroying Entities before
@@ -76,7 +75,7 @@
 #ifndef SILCCONFIG_H
 #define SILCCONFIG_H
 
-/****d* silcutil/SilcConfigAPI/errno
+/****d* silcutil/SilcConfigErrno
  *
  * NAME
  *
@@ -94,6 +93,7 @@
 enum {
   SILC_CONFIG_OK,              /* OK */
   SILC_CONFIG_ESILENT,         /* Error defined by callback function */
+  SILC_CONFIG_EPRINTLINE,      /* Error defined by callback function */
   SILC_CONFIG_EGENERIC,                /* Invalid syntax */
   SILC_CONFIG_EINTERNAL,       /* Internal Error (caused by developer) */
   SILC_CONFIG_ECANTOPEN,       /* Can't open specified file */
@@ -111,7 +111,7 @@ enum {
 };
 /***/
 
-/****d* silcutil/SilcConfigAPI/SilcConfigType
+/****d* silcutil/SilcConfigType
  *
  * NAME
  *
@@ -138,12 +138,13 @@ typedef enum {
 } SilcConfigType;
 /***/
 
-/****f* silcutil/SilcConfigAPI/SilcConfigCallback
+/****f* silcutil/SilcConfigCallback
  *
  * SYNOPSIS
  *
  *    typedef int (*SilcConfigCallback)(SilcConfigType type, const char *name,
- *                                      uint32 line, void *val, void *context);
+ *                                      SilcUInt32 line, void *val,
+ *                                      void *context);
  * DESCRIPTION
  *
  *    This is the callback prototype for the options handler.  The pointer
@@ -154,9 +155,9 @@ typedef enum {
  *
  ***/
 typedef int (*SilcConfigCallback)(SilcConfigType type, const char *name,
-                                 uint32 line, void *val, void *context);
+                                 SilcUInt32 line, void *val, void *context);
 
-/****s* silcutil/SilcConfigAPI/SilcConfigTable
+/****s* silcutil/SilcConfigTable
  *
  * SYNOPSIS
  *
@@ -202,11 +203,11 @@ typedef struct SilcConfigTableStruct {
   const struct SilcConfigTableStruct *subtable;
 } SilcConfigTable;
 
-/****s* silcutil/SilcConfigAPI/SilcConfigFile
+/****s* silcutil/SilcConfigFile
  *
  * SYNOPSIS
  *
- *    typedef struct { ... } SilcConfigFile;
+ *    typedef struct SilcConfigFileObject SilcConfigFile;
  *
  * DESCRIPTION
  *
@@ -218,11 +219,11 @@ typedef struct SilcConfigTableStruct {
  ***/
 typedef struct SilcConfigFileObject SilcConfigFile;
 
-/****s* silcutil/SilcConfigAPI/SilcConfigEntity
+/****s* silcutil/SilcConfigEntity
  *
  * SYNOPSIS
  *
- *    typedef struct { ... } SilcConfigEntity;
+ *    typedef struct SilcConfigEntityObject *SilcConfigEntity;
  *
  * DESCRIPTION
  *
@@ -234,7 +235,7 @@ typedef struct SilcConfigEntityObject *SilcConfigEntity;
 
 /* Macros */
 
-/****d* silcutil/SilcConfigAPI/SILC_CONFIG_CALLBACK
+/****d* silcutil/SILC_CONFIG_CALLBACK
  *
  * NAME
  *
@@ -249,12 +250,12 @@ typedef struct SilcConfigEntityObject *SilcConfigEntity;
  */
 #define SILC_CONFIG_CALLBACK(func)                             \
 static int func(SilcConfigType type, const char *name,         \
-               uint32 line, void *val, void *context)
+               SilcUInt32 line, void *val, void *context)
 /***/
 
 /* Prototypes */
 
-/****f* silcutil/SilcConfigAPI/silc_config_open
+/****f* silcutil/silc_config_open
  *
  * SYNOPSIS
  *
@@ -268,9 +269,9 @@ static int func(SilcConfigType type, const char *name,              \
  *    silc_config_close().
  *
  ***/
-SilcConfigFile *silc_config_open(char *configfile);
+SilcConfigFile *silc_config_open(const char *configfile);
 
-/****f* silcutil/SilcConfigAPI/silc_config_close
+/****f* silcutil/silc_config_close
  *
  * SYNOPSIS
  *
@@ -287,7 +288,7 @@ SilcConfigFile *silc_config_open(char *configfile);
  ***/
 void silc_config_close(SilcConfigFile *file);
 
-/****f* silcutil/SilcConfigAPI/silc_config_init
+/****f* silcutil/silc_config_init
  *
  * SYNOPSIS
  *
@@ -305,7 +306,7 @@ void silc_config_close(SilcConfigFile *file);
  ***/
 SilcConfigEntity silc_config_init(SilcConfigFile *file);
 
-/****f* silcutil/SilcConfigAPI/silc_config_strerror
+/****f* silcutil/silc_config_strerror
  *
  * SYNOPSIS
  *
@@ -319,7 +320,7 @@ SilcConfigEntity silc_config_init(SilcConfigFile *file);
  ***/
 char *silc_config_strerror(int errnum);
 
-/****f* silcutil/SilcConfigAPI/silc_config_get_filename
+/****f* silcutil/silc_config_get_filename
  *
  * SYNOPSIS
  *
@@ -334,24 +335,24 @@ char *silc_config_strerror(int errnum);
  ***/
 char *silc_config_get_filename(SilcConfigFile *file);
 
-/****f* silcutil/SilcConfigAPI/silc_config_get_line
+/****f* silcutil/silc_config_get_line
  *
  * SYNOPSIS
  *
- *    uint32 silc_config_get_line(SilcConfigFile *file);
+ *    SilcUInt32 silc_config_get_line(SilcConfigFile *file);
  *
  * DESCRIPTION
  *
  *    Returns the current line that file parsing arrived at.
  *
  ***/
-uint32 silc_config_get_line(SilcConfigFile *file);
+SilcUInt32 silc_config_get_line(SilcConfigFile *file);
 
-/****f* silcutil/SilcConfigAPI/silc_config_read_line
+/****f* silcutil/silc_config_read_line
  *
  * SYNOPSIS
  *
- *    char *silc_config_read_line(SilcConfigFile *file, uint32 line);
+ *    char *silc_config_read_line(SilcConfigFile *file, SilcUInt32 line);
  *
  * DESCRIPTION
  *
@@ -363,9 +364,9 @@ uint32 silc_config_get_line(SilcConfigFile *file);
  *    silc_config_read_current_line
  *
  ***/
-char *silc_config_read_line(SilcConfigFile *file, uint32 line);
+char *silc_config_read_line(SilcConfigFile *file, SilcUInt32 line);
 
-/****f* silcutil/SilcConfigAPI/silc_config_read_current_line
+/****f* silcutil/silc_config_read_current_line
  *
  * SYNOPSIS
  *
@@ -381,11 +382,11 @@ char *silc_config_read_line(SilcConfigFile *file, uint32 line);
  ***/
 char *silc_config_read_current_line(SilcConfigFile *file);
 
-/****f* silcutil/SilcConfigAPI/silc_config_register
+/****f* silcutil/silc_config_register
  *
  * SYNOPSIS
  *
- *    bool silc_config_register(SilcConfigEntity ent, const char *name,
+ *    SilcBool silc_config_register(SilcConfigEntity ent, const char *name,
  *                              SilcConfigType type, SilcConfigCallback cb,
  *                              const SilcConfigTable *subtable,
  *                              void *context);
@@ -395,9 +396,11 @@ char *silc_config_read_current_line(SilcConfigFile *file);
  *    Register option `name' in the entity `ent'. If `cb' is not NULL, it
  *    will be called with the *val pointer pointing to an internally
  *    allocated storage of type described by `type'.
+ *
  *    If `type' is SILC_CONFIG_ARG_BLOCK, then `subtable' must be a valid
  *    pointer to a SilcConfigTable array specifying the options in the
  *    sub-block.
+ *
  *    If the option `name' was already registered in this sub-block or it
  *    matches the reserved word "Include", then this function returns FALSE,
  *    otherwise it returns TRUE.
@@ -406,15 +409,15 @@ char *silc_config_read_current_line(SilcConfigFile *file);
  *    silc_config_register_table
  *
  ***/
-bool silc_config_register(SilcConfigEntity ent, const char *name,
+SilcBool silc_config_register(SilcConfigEntity ent, const char *name,
                          SilcConfigType type, SilcConfigCallback cb,
                          const SilcConfigTable *subtable, void *context);
 
-/****f* silcutil/SilcConfigAPI/silc_config_register_table
+/****f* silcutil/silc_config_register_table
  *
  * SYNOPSIS
  *
- *    bool silc_config_register_table(SilcConfigEntity ent,
+ *    SilcBool silc_config_register_table(SilcConfigEntity ent,
  *                                    const SilcConfigTable table[],
  *                                    void *context);
  *
@@ -423,8 +426,10 @@ bool silc_config_register(SilcConfigEntity ent, const char *name,
  *    Register the tableset of options `table' automatically in the entity
  *    `ent'.  If defined in the table, the callback functions will be called
  *    all with the same context `context'.
+ *
  *    The `table' array must be terminated with an entry with the name field
  *    set to NULL.
+ *
  *    If the table contains invalid data this function returns FALSE, otherwise
  *    it returns TRUE.  If a calling to this function failed, you must destroy
  *    and recreate the entity before retrying, as it's impossible to detect
@@ -434,10 +439,10 @@ bool silc_config_register(SilcConfigEntity ent, const char *name,
  *    SilcConfigTable
  *
  ***/
-bool silc_config_register_table(SilcConfigEntity ent,
+SilcBool silc_config_register_table(SilcConfigEntity ent,
                                const SilcConfigTable table[], void *context);
 
-/****f* silcutil/SilcConfigAPI/silc_config_main
+/****f* silcutil/silc_config_main
  *
  * SYNOPSIS
  *
@@ -447,6 +452,7 @@ bool silc_config_register_table(SilcConfigEntity ent,
  *
  *    Enter the main parsing loop. When this function returns the parsing
  *    is finished in the current block (and sub-blocks).
+ *
  *    When this function exits, the entity is already destroyed, because
  *    of this you should set it to NULL right after the function call.
  *