Added SILC Thread Queue API
[silc.git] / lib / silcutil / silcconfig.c
index 03fb2a492e6ac0fdb0b8583580a6ff78ed268bb0..55524a32077ce3919cac0be5edfbe353dc7d6b08 100644 (file)
@@ -4,12 +4,11 @@
 
   Author: Giovanni Giacobbi <giovanni@giacobbi.net>
 
-  Copyright (C) 2002 - 2003 Giovanni Giacobbi
+  Copyright (C) 2002 - 2007 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
@@ -19,7 +18,7 @@
 */
 /* $Id$ */
 
-#include "silcincludes.h"
+#include "silc.h"
 
 /* limit debug logging verbosity */
 #if 0
@@ -48,7 +47,7 @@ struct SilcConfigFileObject {
   char *p;             /* the Parser poitner */
   SilcUInt32 len;      /* fixed length of the whole file */
   SilcUInt32 line;     /* current parsing line, strictly linked to p */
-  bool included;       /* wether this file is main or included */
+  SilcBool included;   /* wether this file is main or included */
 };
 
 /* We need the entity to base our block-style parsing on */
@@ -95,10 +94,11 @@ char *silc_config_strerror(int errnum)
 static void my_trim_spaces(SilcConfigFile *file)
 {
   register char *r = file->p;
-  while ((*r != '\0' && *r != EOF) && isspace(*r))
+  while ((*r != '\0' && *r != EOF) && isspace((int)*r))
     if (*r++ == '\n') file->line++;
   file->p = r;
 }
+
 /* Skips the current line until newline (lf or cr) */
 static void my_skip_line(SilcConfigFile *file)
 {
@@ -107,6 +107,7 @@ static void my_skip_line(SilcConfigFile *file)
   file->p = ((*r != '\0' && *r != EOF) ? r + 1 : r);
   file->line++;
 }
+
 /* Obtains a text token from the current position until first separator.
  * a separator is any non alphanumeric character nor "_" or "-" */
 static char *my_next_token(SilcConfigFile *file, char *to)
@@ -114,12 +115,13 @@ static char *my_next_token(SilcConfigFile *file, char *to)
   register char *o;
   my_trim_spaces(file);
   o = file->p;
-  while (isalnum(*o) || (*o == '_') || (*o == '-'))
+  while (isalnum((int)*o) || (*o == '_') || (*o == '-'))
     *to++ = *o++;
   *to = '\0';
   file->p = o;
   return to;
 }
+
 /* Obtains a string from the current position. The only difference from
  * next_token() is that quoted-strings are also accepted */
 static char *my_get_string(SilcConfigFile *file, char *to)
@@ -147,7 +149,8 @@ static char *my_get_string(SilcConfigFile *file, char *to)
   /* we don't need quote parsing, fall-back to token extractor */
   my_next_token(file, to);
   return to;
-};
+}
+
 /* Skips all comment lines and spaces lines until first useful character */
 static void my_skip_comments(SilcConfigFile *file)
 {
@@ -172,13 +175,14 @@ static SilcConfigOption *silc_config_find_option(SilcConfigEntity ent,
   }
   return NULL;
 }
+
 /* Converts a string in the type specified. returns a dynamically
  * allocated pointer. */
 static void *silc_config_marshall(SilcConfigType type, const char *val)
 {
   void *pt;
   int val_int;
-  bool val_bool;
+  SilcBool val_boolean;
   char *val_tmp;
   SilcUInt32 val_size;
 
@@ -186,16 +190,16 @@ static void *silc_config_marshall(SilcConfigType type, const char *val)
     case SILC_CONFIG_ARG_TOGGLE:
       if (!strcasecmp(val, "yes") || !strcasecmp(val, "true") ||
                !strcasecmp(val, "on") || !strcasecmp(val, "1")) {
-       val_bool = TRUE;
+       val_boolean = TRUE;
       }
       else if (!strcasecmp(val, "no") || !strcasecmp(val, "false") ||
                !strcasecmp(val, "off") || !strcasecmp(val, "0")) {
-       val_bool = FALSE;
+       val_boolean = FALSE;
       }
       else
        return NULL;
-      pt = silc_calloc(1, sizeof(val_bool));
-      *(bool *)pt = (bool) val_bool;
+      pt = silc_calloc(1, sizeof(val_boolean));
+      *(SilcBool *)pt = (SilcBool) val_boolean;
       return pt;
     case SILC_CONFIG_ARG_INT:
       val_int = (int) strtol(val, &val_tmp, 0);
@@ -209,7 +213,7 @@ static void *silc_config_marshall(SilcConfigType type, const char *val)
       if (val == val_tmp)
        return NULL; /* really wrong, there must be at least one digit */
       /* Search for a designator */
-      switch (tolower(val_tmp[0])) {
+      switch (tolower((int)val_tmp[0])) {
        case '\0': /* None */
          break;
        case 'k': /* Kilobytes */
@@ -259,7 +263,7 @@ SilcConfigFile *silc_config_open(const char *configfile)
   SilcUInt32 filelen;
   SilcConfigFile *ret;
 
-  if (!(buffer = silc_file_readfile(configfile, &filelen)))
+  if (!(buffer = silc_file_readfile(configfile, &filelen, NULL)))
     return NULL;
 
   ret = silc_calloc(1, sizeof(*ret));
@@ -296,7 +300,7 @@ SilcConfigEntity silc_config_init(SilcConfigFile *file)
   ret = silc_calloc(1, sizeof(*ret));
   ret->file = file;
   return ret;
-};
+}
 
 /* Returns the original filename of the object file */
 
@@ -355,7 +359,7 @@ char *silc_config_read_current_line(SilcConfigFile *file)
 
 /* (Private) destroy a SilcConfigEntity */
 
-static void silc_config_destroy(SilcConfigEntity ent, bool destroy_opts)
+static void silc_config_destroy(SilcConfigEntity ent, SilcBool destroy_opts)
 {
   SilcConfigOption *oldopt, *nextopt;
   SILC_CONFIG_DEBUG(("Freeing config entity [ent=0x%x] [opts=0x%x]",
@@ -381,7 +385,7 @@ static void silc_config_destroy(SilcConfigEntity ent, bool destroy_opts)
 /* Registers a new option in the specified entity.
  * Returns TRUE on success, FALSE if already registered. */
 
-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)
 {
@@ -425,7 +429,7 @@ bool silc_config_register(SilcConfigEntity ent, const char *name,
 
 /* Register a new option table in the specified config entity */
 
-bool silc_config_register_table(SilcConfigEntity ent,
+SilcBool silc_config_register_table(SilcConfigEntity ent,
                                const SilcConfigTable table[], void *context)
 {
   int i;