global reindent, now with uncrustify hook enabled
[oweals/gnunet.git] / src / util / configuration.c
index 4e7659276b4413ccfb582ea283624941b7813eb9..cb6932b1536afc800af7cffc8aacee3a724b3e14 100644 (file)
 #include "gnunet_configuration_lib.h"
 #include "gnunet_disk_lib.h"
 
-#define LOG(kind, ...) GNUNET_log_from(kind, "util", __VA_ARGS__)
+#define LOG(kind, ...) GNUNET_log_from (kind, "util", __VA_ARGS__)
 
 #define LOG_STRERROR_FILE(kind, syscall, filename) \
-  GNUNET_log_from_strerror_file(kind, "util", syscall, filename)
+  GNUNET_log_from_strerror_file (kind, "util", syscall, filename)
 
 /**
  * @brief configuration entry
  */
-struct ConfigEntry {
+struct ConfigEntry
+{
   /**
    * This is a linked list.
    */
@@ -59,7 +60,8 @@ struct ConfigEntry {
 /**
  * @brief configuration section
  */
-struct ConfigSection {
+struct ConfigSection
+{
   /**
    * This is a linked list.
    */
@@ -80,7 +82,8 @@ struct ConfigSection {
 /**
  * @brief configuration data
  */
-struct GNUNET_CONFIGURATION_Handle {
+struct GNUNET_CONFIGURATION_Handle
+{
   /**
    * Configuration sections.
    */
@@ -99,7 +102,8 @@ struct GNUNET_CONFIGURATION_Handle {
  * Used for diffing a configuration object against
  * the default one
  */
-struct DiffHandle {
+struct DiffHandle
+{
   const struct GNUNET_CONFIGURATION_Handle *cfg_default;
 
   struct GNUNET_CONFIGURATION_Handle *cfgDiff;
@@ -112,9 +116,9 @@ struct DiffHandle {
  * @return fresh configuration object
  */
 struct GNUNET_CONFIGURATION_Handle *
-GNUNET_CONFIGURATION_create()
+GNUNET_CONFIGURATION_create ()
 {
-  return GNUNET_new(struct GNUNET_CONFIGURATION_Handle);
+  return GNUNET_new (struct GNUNET_CONFIGURATION_Handle);
 }
 
 
@@ -124,13 +128,13 @@ GNUNET_CONFIGURATION_create()
  * @param cfg configuration to destroy
  */
 void
-GNUNET_CONFIGURATION_destroy(struct GNUNET_CONFIGURATION_Handle *cfg)
+GNUNET_CONFIGURATION_destroy (struct GNUNET_CONFIGURATION_Handle *cfg)
 {
   struct ConfigSection *sec;
 
   while (NULL != (sec = cfg->sections))
-    GNUNET_CONFIGURATION_remove_section(cfg, sec->name);
-  GNUNET_free(cfg);
+    GNUNET_CONFIGURATION_remove_section (cfg, sec->name);
+  GNUNET_free (cfg);
 }
 
 
@@ -146,22 +150,22 @@ GNUNET_CONFIGURATION_destroy(struct GNUNET_CONFIGURATION_Handle *cfg)
  *   otherwise return value from @a cb.
  */
 int
-GNUNET_CONFIGURATION_parse_and_run(const char *filename,
-                                   GNUNET_CONFIGURATION_Callback cb,
-                                   void *cb_cls)
+GNUNET_CONFIGURATION_parse_and_run (const char *filename,
+                                    GNUNET_CONFIGURATION_Callback cb,
+                                    void *cb_cls)
 {
   struct GNUNET_CONFIGURATION_Handle *cfg;
   int ret;
 
-  cfg = GNUNET_CONFIGURATION_create();
-  if (GNUNET_OK != GNUNET_CONFIGURATION_load(cfg, filename))
-    {
-      GNUNET_break(0);
-      GNUNET_CONFIGURATION_destroy(cfg);
-      return GNUNET_SYSERR;
-    }
-  ret = cb(cb_cls, cfg);
-  GNUNET_CONFIGURATION_destroy(cfg);
+  cfg = GNUNET_CONFIGURATION_create ();
+  if (GNUNET_OK != GNUNET_CONFIGURATION_load (cfg, filename))
+  {
+    GNUNET_break (0);
+    GNUNET_CONFIGURATION_destroy (cfg);
+    return GNUNET_SYSERR;
+  }
+  ret = cb (cb_cls, cfg);
+  GNUNET_CONFIGURATION_destroy (cfg);
   return ret;
 }
 
@@ -178,10 +182,10 @@ GNUNET_CONFIGURATION_parse_and_run(const char *filename,
  * @return #GNUNET_OK on success, #GNUNET_SYSERR on error
  */
 int
-GNUNET_CONFIGURATION_deserialize(struct GNUNET_CONFIGURATION_Handle *cfg,
-                                 const char *mem,
-                                 size_t size,
-                                 const char *basedir)
+GNUNET_CONFIGURATION_deserialize (struct GNUNET_CONFIGURATION_Handle *cfg,
+                                  const char *mem,
+                                  size_t size,
+                                  const char *basedir)
 {
   char *line;
   char *line_orig;
@@ -199,133 +203,133 @@ GNUNET_CONFIGURATION_deserialize(struct GNUNET_CONFIGURATION_Handle *cfg,
   char *value;
 
   ret = GNUNET_OK;
-  section = GNUNET_strdup("");
+  section = GNUNET_strdup ("");
   nr = 0;
   r_bytes = 0;
   line_orig = NULL;
   while (r_bytes < size)
+  {
+    GNUNET_free_non_null (line_orig);
+    /* fgets-like behaviour on buffer */
+    to_read = size - r_bytes;
+    pos = memchr (&mem[r_bytes], '\n', to_read);
+    if (NULL == pos)
     {
-      GNUNET_free_non_null(line_orig);
-      /* fgets-like behaviour on buffer */
-      to_read = size - r_bytes;
-      pos = memchr(&mem[r_bytes], '\n', to_read);
-      if (NULL == pos)
-        {
-          line_orig = GNUNET_strndup(&mem[r_bytes], line_size = to_read);
-          r_bytes += line_size;
-        }
-      else
-        {
-          line_orig =
-            GNUNET_strndup(&mem[r_bytes], line_size = (pos - &mem[r_bytes]));
-          r_bytes += line_size + 1;
-        }
-      line = line_orig;
-      /* increment line number */
-      nr++;
-      /* tabs and '\r' are whitespace */
-      emptyline = GNUNET_YES;
-      for (i = 0; i < line_size; i++)
-        {
-          if (line[i] == '\t')
-            line[i] = ' ';
-          if (line[i] == '\r')
-            line[i] = ' ';
-          if (' ' != line[i])
-            emptyline = GNUNET_NO;
-        }
-      /* ignore empty lines */
-      if (GNUNET_YES == emptyline)
-        continue;
+      line_orig = GNUNET_strndup (&mem[r_bytes], line_size = to_read);
+      r_bytes += line_size;
+    }
+    else
+    {
+      line_orig =
+        GNUNET_strndup (&mem[r_bytes], line_size = (pos - &mem[r_bytes]));
+      r_bytes += line_size + 1;
+    }
+    line = line_orig;
+    /* increment line number */
+    nr++;
+    /* tabs and '\r' are whitespace */
+    emptyline = GNUNET_YES;
+    for (i = 0; i < line_size; i++)
+    {
+      if (line[i] == '\t')
+        line[i] = ' ';
+      if (line[i] == '\r')
+        line[i] = ' ';
+      if (' ' != line[i])
+        emptyline = GNUNET_NO;
+    }
+    /* ignore empty lines */
+    if (GNUNET_YES == emptyline)
+      continue;
 
-      /* remove tailing whitespace */
-      for (i = line_size - 1; (i >= 1) && (isspace((unsigned char)line[i]));
-           i--)
-        line[i] = '\0';
+    /* remove tailing whitespace */
+    for (i = line_size - 1; (i >= 1) && (isspace ((unsigned char) line[i]));
+         i--)
+      line[i] = '\0';
 
-      /* remove leading whitespace */
-      for (; line[0] != '\0' && (isspace((unsigned char)line[0])); line++)
-        ;
+    /* remove leading whitespace */
+    for (; line[0] != '\0' && (isspace ((unsigned char) line[0])); line++)
+      ;
 
-      /* ignore comments */
-      if (('#' == line[0]) || ('%' == line[0]))
-        continue;
+    /* ignore comments */
+    if (('#' == line[0]) || ('%' == line[0]))
+      continue;
 
-      /* handle special "@INLINE@" directive */
-      if (0 == strncasecmp(line, "@INLINE@ ", strlen("@INLINE@ ")))
-        {
-          /* @INLINE@ value */
-          value = &line[strlen("@INLINE@ ")];
-          if (NULL != basedir)
-            {
-              char *fn;
-
-              GNUNET_asprintf(&fn, "%s/%s", basedir, value);
-              if (GNUNET_OK != GNUNET_CONFIGURATION_parse(cfg, fn))
-                {
-                  GNUNET_free(fn);
-                  ret = GNUNET_SYSERR; /* failed to parse included config */
-                  break;
-                }
-              GNUNET_free(fn);
-            }
-          else
-            {
-              LOG(GNUNET_ERROR_TYPE_DEBUG,
-                  "Ignoring parsing @INLINE@ configurations, not allowed!\n");
-              ret = GNUNET_SYSERR;
-              break;
-            }
-          continue;
-        }
-      if (('[' == line[0]) && (']' == line[line_size - 1]))
-        {
-          /* [value] */
-          line[line_size - 1] = '\0';
-          value = &line[1];
-          GNUNET_free(section);
-          section = GNUNET_strdup(value);
-          continue;
-        }
-      if (NULL != (eq = strchr(line, '=')))
+    /* handle special "@INLINE@" directive */
+    if (0 == strncasecmp (line, "@INLINE@ ", strlen ("@INLINE@ ")))
+    {
+      /* @INLINE@ value */
+      value = &line[strlen ("@INLINE@ ")];
+      if (NULL != basedir)
+      {
+        char *fn;
+
+        GNUNET_asprintf (&fn, "%s/%s", basedir, value);
+        if (GNUNET_OK != GNUNET_CONFIGURATION_parse (cfg, fn))
         {
-          /* tag = value */
-          tag = GNUNET_strndup(line, eq - line);
-          /* remove tailing whitespace */
-          for (i = strlen(tag) - 1; (i >= 1) && (isspace((unsigned char)tag[i]));
-               i--)
-            tag[i] = '\0';
-
-          /* Strip whitespace */
-          value = eq + 1;
-          while (isspace((unsigned char)value[0]))
-            value++;
-          for (i = strlen(value) - 1;
-               (i >= 1) && (isspace((unsigned char)value[i]));
-               i--)
-            value[i] = '\0';
-
-          /* remove quotes */
-          i = 0;
-          if (('"' == value[0]) && ('"' == value[strlen(value) - 1]))
-            {
-              value[strlen(value) - 1] = '\0';
-              value++;
-            }
-          GNUNET_CONFIGURATION_set_value_string(cfg, section, tag, &value[i]);
-          GNUNET_free(tag);
-          continue;
+          GNUNET_free (fn);
+          ret = GNUNET_SYSERR;         /* failed to parse included config */
+          break;
         }
-      /* parse error */
-      LOG(GNUNET_ERROR_TYPE_WARNING,
-          _("Syntax error while deserializing in line %u\n"),
-          nr);
-      ret = GNUNET_SYSERR;
-      break;
+        GNUNET_free (fn);
+      }
+      else
+      {
+        LOG (GNUNET_ERROR_TYPE_DEBUG,
+             "Ignoring parsing @INLINE@ configurations, not allowed!\n");
+        ret = GNUNET_SYSERR;
+        break;
+      }
+      continue;
+    }
+    if (('[' == line[0]) && (']' == line[line_size - 1]))
+    {
+      /* [value] */
+      line[line_size - 1] = '\0';
+      value = &line[1];
+      GNUNET_free (section);
+      section = GNUNET_strdup (value);
+      continue;
     }
-  GNUNET_free_non_null(line_orig);
-  GNUNET_free(section);
-  GNUNET_assert((GNUNET_OK != ret) || (r_bytes == size));
+    if (NULL != (eq = strchr (line, '=')))
+    {
+      /* tag = value */
+      tag = GNUNET_strndup (line, eq - line);
+      /* remove tailing whitespace */
+      for (i = strlen (tag) - 1; (i >= 1) && (isspace ((unsigned char) tag[i]));
+           i--)
+        tag[i] = '\0';
+
+      /* Strip whitespace */
+      value = eq + 1;
+      while (isspace ((unsigned char) value[0]))
+        value++;
+      for (i = strlen (value) - 1;
+           (i >= 1) && (isspace ((unsigned char) value[i]));
+           i--)
+        value[i] = '\0';
+
+      /* remove quotes */
+      i = 0;
+      if (('"' == value[0]) && ('"' == value[strlen (value) - 1]))
+      {
+        value[strlen (value) - 1] = '\0';
+        value++;
+      }
+      GNUNET_CONFIGURATION_set_value_string (cfg, section, tag, &value[i]);
+      GNUNET_free (tag);
+      continue;
+    }
+    /* parse error */
+    LOG (GNUNET_ERROR_TYPE_WARNING,
+         _ ("Syntax error while deserializing in line %u\n"),
+         nr);
+    ret = GNUNET_SYSERR;
+    break;
+  }
+  GNUNET_free_non_null (line_orig);
+  GNUNET_free (section);
+  GNUNET_assert ((GNUNET_OK != ret) || (r_bytes == size));
   return ret;
 }
 
@@ -339,8 +343,8 @@ GNUNET_CONFIGURATION_deserialize(struct GNUNET_CONFIGURATION_Handle *cfg,
  * @return #GNUNET_OK on success, #GNUNET_SYSERR on error
  */
 int
-GNUNET_CONFIGURATION_parse(struct GNUNET_CONFIGURATION_Handle *cfg,
-                           const char *filename)
+GNUNET_CONFIGURATION_parse (struct GNUNET_CONFIGURATION_Handle *cfg,
+                            const char *filename)
 {
   uint64_t fs64;
   size_t fs;
@@ -351,43 +355,43 @@ GNUNET_CONFIGURATION_parse(struct GNUNET_CONFIGURATION_Handle *cfg,
   int ret;
   ssize_t sret;
 
-  fn = GNUNET_STRINGS_filename_expand(filename);
-  LOG(GNUNET_ERROR_TYPE_DEBUG, "Asked to parse config file `%s'\n", fn);
+  fn = GNUNET_STRINGS_filename_expand (filename);
+  LOG (GNUNET_ERROR_TYPE_DEBUG, "Asked to parse config file `%s'\n", fn);
   if (NULL == fn)
     return GNUNET_SYSERR;
   dirty = cfg->dirty; /* back up value! */
   if (GNUNET_SYSERR ==
-      GNUNET_DISK_file_size(fn, &fs64, GNUNET_YES, GNUNET_YES))
-    {
-      LOG(GNUNET_ERROR_TYPE_WARNING,
-          "Error while determining the file size of `%s'\n",
-          fn);
-      GNUNET_free(fn);
-      return GNUNET_SYSERR;
-    }
+      GNUNET_DISK_file_size (fn, &fs64, GNUNET_YES, GNUNET_YES))
+  {
+    LOG (GNUNET_ERROR_TYPE_WARNING,
+         "Error while determining the file size of `%s'\n",
+         fn);
+    GNUNET_free (fn);
+    return GNUNET_SYSERR;
+  }
   if (fs64 > SIZE_MAX)
-    {
-      GNUNET_break(0); /* File size is more than the heap size */
-      GNUNET_free(fn);
-      return GNUNET_SYSERR;
-    }
+  {
+    GNUNET_break (0);  /* File size is more than the heap size */
+    GNUNET_free (fn);
+    return GNUNET_SYSERR;
+  }
   fs = fs64;
-  mem = GNUNET_malloc(fs);
-  sret = GNUNET_DISK_fn_read(fn, mem, fs);
-  if ((sret < 0) || (fs != (size_t)sret))
-    {
-      LOG(GNUNET_ERROR_TYPE_WARNING, _("Error while reading file `%s'\n"), fn);
-      GNUNET_free(fn);
-      GNUNET_free(mem);
-      return GNUNET_SYSERR;
-    }
-  LOG(GNUNET_ERROR_TYPE_DEBUG, "Deserializing contents of file `%s'\n", fn);
-  endsep = strrchr(fn, (int)'/');
+  mem = GNUNET_malloc (fs);
+  sret = GNUNET_DISK_fn_read (fn, mem, fs);
+  if ((sret < 0) || (fs != (size_t) sret))
+  {
+    LOG (GNUNET_ERROR_TYPE_WARNING, _ ("Error while reading file `%s'\n"), fn);
+    GNUNET_free (fn);
+    GNUNET_free (mem);
+    return GNUNET_SYSERR;
+  }
+  LOG (GNUNET_ERROR_TYPE_DEBUG, "Deserializing contents of file `%s'\n", fn);
+  endsep = strrchr (fn, (int) '/');
   if (NULL != endsep)
     *endsep = '\0';
-  ret = GNUNET_CONFIGURATION_deserialize(cfg, mem, fs, fn);
-  GNUNET_free(fn);
-  GNUNET_free(mem);
+  ret = GNUNET_CONFIGURATION_deserialize (cfg, mem, fs, fn);
+  GNUNET_free (fn);
+  GNUNET_free (mem);
   /* restore dirty flag - anything we set in the meantime
    * came from disk */
   cfg->dirty = dirty;
@@ -403,7 +407,7 @@ GNUNET_CONFIGURATION_parse(struct GNUNET_CONFIGURATION_Handle *cfg,
  * @return #GNUNET_NO if clean, #GNUNET_YES if dirty, #GNUNET_SYSERR on error (i.e. last save failed)
  */
 int
-GNUNET_CONFIGURATION_is_dirty(const struct GNUNET_CONFIGURATION_Handle *cfg)
+GNUNET_CONFIGURATION_is_dirty (const struct GNUNET_CONFIGURATION_Handle *cfg)
 {
   return cfg->dirty;
 }
@@ -418,8 +422,8 @@ GNUNET_CONFIGURATION_is_dirty(const struct GNUNET_CONFIGURATION_Handle *cfg)
  *           present. This memory should be freed by the caller
  */
 char *
-GNUNET_CONFIGURATION_serialize(const struct GNUNET_CONFIGURATION_Handle *cfg,
-                               size_t *size)
+GNUNET_CONFIGURATION_serialize (const struct GNUNET_CONFIGURATION_Handle *cfg,
+                                size_t *size)
 {
   struct ConfigSection *sec;
   struct ConfigEntry *ent;
@@ -427,72 +431,73 @@ GNUNET_CONFIGURATION_serialize(const struct GNUNET_CONFIGURATION_Handle *cfg,
   char *cbuf;
   char *val;
   char *pos;
-  int len;
   size_t m_size;
   size_t c_size;
 
   /* Pass1 : calculate the buffer size required */
   m_size = 0;
   for (sec = cfg->sections; NULL != sec; sec = sec->next)
+  {
+    /* For each section we need to add 3 charaters: {'[',']','\n'} */
+    m_size += strlen (sec->name) + 3;
+    for (ent = sec->entries; NULL != ent; ent = ent->next)
     {
-      /* For each section we need to add 3 charaters: {'[',']','\n'} */
-      m_size += strlen(sec->name) + 3;
-      for (ent = sec->entries; NULL != ent; ent = ent->next)
+      if (NULL != ent->val)
+      {
+        /* if val has any '\n' then they occupy +1 character as '\n'->'\\','n' */
+        pos = ent->val;
+        while (NULL != (pos = strstr (pos, "\n")))
         {
-          if (NULL != ent->val)
-            {
-              /* if val has any '\n' then they occupy +1 character as '\n'->'\\','n' */
-              pos = ent->val;
-              while (NULL != (pos = strstr(pos, "\n")))
-                {
-                  m_size++;
-                  pos++;
-                }
-              /* For each key = value pair we need to add 4 characters (2
-                 spaces and 1 equal-to character and 1 new line) */
-              m_size += strlen(ent->key) + strlen(ent->val) + 4;
-            }
+          m_size++;
+          pos++;
         }
-      /* A new line after section end */
-      m_size++;
+        /* For each key = value pair we need to add 4 characters (2
+           spaces and 1 equal-to character and 1 new line) */
+        m_size += strlen (ent->key) + strlen (ent->val) + 4;
+      }
     }
+    /* A new line after section end */
+    m_size++;
+  }
 
   /* Pass2: Allocate memory and write the configuration to it */
-  mem = GNUNET_malloc(m_size);
+  mem = GNUNET_malloc (m_size);
   sec = cfg->sections;
   c_size = 0;
   *size = c_size;
   while (NULL != sec)
+  {
+    int len;
+
+    len = GNUNET_asprintf (&cbuf, "[%s]\n", sec->name);
+    GNUNET_assert (0 < len);
+    GNUNET_memcpy (mem + c_size, cbuf, len);
+    c_size += len;
+    GNUNET_free (cbuf);
+    for (ent = sec->entries; NULL != ent; ent = ent->next)
     {
-      len = GNUNET_asprintf(&cbuf, "[%s]\n", sec->name);
-      GNUNET_assert(0 < len);
-      GNUNET_memcpy(mem + c_size, cbuf, len);
-      c_size += len;
-      GNUNET_free(cbuf);
-      for (ent = sec->entries; NULL != ent; ent = ent->next)
+      if (NULL != ent->val)
+      {
+        val = GNUNET_malloc (strlen (ent->val) * 2 + 1);
+        strcpy (val, ent->val);
+        while (NULL != (pos = strstr (val, "\n")))
         {
-          if (NULL != ent->val)
-            {
-              val = GNUNET_malloc(strlen(ent->val) * 2 + 1);
-              strcpy(val, ent->val);
-              while (NULL != (pos = strstr(val, "\n")))
-                {
-                  memmove(&pos[2], &pos[1], strlen(&pos[1]));
-                  pos[0] = '\\';
-                  pos[1] = 'n';
-                }
-              len = GNUNET_asprintf(&cbuf, "%s = %s\n", ent->key, val);
-              GNUNET_free(val);
-              GNUNET_memcpy(mem + c_size, cbuf, len);
-              c_size += len;
-              GNUNET_free(cbuf);
-            }
+          memmove (&pos[2], &pos[1], strlen (&pos[1]));
+          pos[0] = '\\';
+          pos[1] = 'n';
         }
-      GNUNET_memcpy(mem + c_size, "\n", 1);
-      c_size++;
-      sec = sec->next;
+        len = GNUNET_asprintf (&cbuf, "%s = %s\n", ent->key, val);
+        GNUNET_free (val);
+        GNUNET_memcpy (mem + c_size, cbuf, len);
+        c_size += len;
+        GNUNET_free (cbuf);
+      }
     }
-  GNUNET_assert(c_size == m_size);
+    GNUNET_memcpy (mem + c_size, "\n", 1);
+    c_size++;
+    sec = sec->next;
+  }
+  GNUNET_assert (c_size == m_size);
   *size = c_size;
   return mem;
 }
@@ -506,42 +511,42 @@ GNUNET_CONFIGURATION_serialize(const struct GNUNET_CONFIGURATION_Handle *cfg,
  * @return #GNUNET_OK on success, #GNUNET_SYSERR on error
  */
 int
-GNUNET_CONFIGURATION_write(struct GNUNET_CONFIGURATION_Handle *cfg,
-                           const char *filename)
+GNUNET_CONFIGURATION_write (struct GNUNET_CONFIGURATION_Handle *cfg,
+                            const char *filename)
 {
   char *fn;
   char *cfg_buf;
   size_t size;
   ssize_t sret;
 
-  fn = GNUNET_STRINGS_filename_expand(filename);
+  fn = GNUNET_STRINGS_filename_expand (filename);
   if (fn == NULL)
     return GNUNET_SYSERR;
-  if (GNUNET_OK != GNUNET_DISK_directory_create_for_file(fn))
-    {
-      GNUNET_free(fn);
-      return GNUNET_SYSERR;
-    }
-  cfg_buf = GNUNET_CONFIGURATION_serialize(cfg, &size);
-  sret = GNUNET_DISK_fn_write(fn,
-                              cfg_buf,
-                              size,
-                              GNUNET_DISK_PERM_USER_READ |
-                              GNUNET_DISK_PERM_USER_WRITE |
-                              GNUNET_DISK_PERM_GROUP_READ |
-                              GNUNET_DISK_PERM_GROUP_WRITE);
-  if ((sret < 0) || (size != (size_t)sret))
-    {
-      GNUNET_free(fn);
-      GNUNET_free(cfg_buf);
-      LOG(GNUNET_ERROR_TYPE_WARNING,
-          "Writing configuration to file `%s' failed\n",
-          filename);
-      cfg->dirty = GNUNET_SYSERR; /* last write failed */
-      return GNUNET_SYSERR;
-    }
-  GNUNET_free(fn);
-  GNUNET_free(cfg_buf);
+  if (GNUNET_OK != GNUNET_DISK_directory_create_for_file (fn))
+  {
+    GNUNET_free (fn);
+    return GNUNET_SYSERR;
+  }
+  cfg_buf = GNUNET_CONFIGURATION_serialize (cfg, &size);
+  sret = GNUNET_DISK_fn_write (fn,
+                               cfg_buf,
+                               size,
+                               GNUNET_DISK_PERM_USER_READ
+                               | GNUNET_DISK_PERM_USER_WRITE
+                               | GNUNET_DISK_PERM_GROUP_READ
+                               | GNUNET_DISK_PERM_GROUP_WRITE);
+  if ((sret < 0) || (size != (size_t) sret))
+  {
+    GNUNET_free (fn);
+    GNUNET_free (cfg_buf);
+    LOG (GNUNET_ERROR_TYPE_WARNING,
+         "Writing configuration to file `%s' failed\n",
+         filename);
+    cfg->dirty = GNUNET_SYSERR;   /* last write failed */
+    return GNUNET_SYSERR;
+  }
+  GNUNET_free (fn);
+  GNUNET_free (cfg_buf);
   cfg->dirty = GNUNET_NO; /* last write succeeded */
   return GNUNET_OK;
 }
@@ -555,9 +560,9 @@ GNUNET_CONFIGURATION_write(struct GNUNET_CONFIGURATION_Handle *cfg,
  * @param iter_cls closure for @a iter
  */
 void
-GNUNET_CONFIGURATION_iterate(const struct GNUNET_CONFIGURATION_Handle *cfg,
-                             GNUNET_CONFIGURATION_Iterator iter,
-                             void *iter_cls)
+GNUNET_CONFIGURATION_iterate (const struct GNUNET_CONFIGURATION_Handle *cfg,
+                              GNUNET_CONFIGURATION_Iterator iter,
+                              void *iter_cls)
 {
   struct ConfigSection *spos;
   struct ConfigEntry *epos;
@@ -565,7 +570,7 @@ GNUNET_CONFIGURATION_iterate(const struct GNUNET_CONFIGURATION_Handle *cfg,
   for (spos = cfg->sections; NULL != spos; spos = spos->next)
     for (epos = spos->entries; NULL != epos; epos = epos->next)
       if (NULL != epos->val)
-        iter(iter_cls, spos->name, epos->key, epos->val);
+        iter (iter_cls, spos->name, epos->key, epos->val);
 }
 
 
@@ -578,7 +583,7 @@ GNUNET_CONFIGURATION_iterate(const struct GNUNET_CONFIGURATION_Handle *cfg,
  * @param iter_cls closure for @a iter
  */
 void
-GNUNET_CONFIGURATION_iterate_section_values(
+GNUNET_CONFIGURATION_iterate_section_values (
   const struct GNUNET_CONFIGURATION_Handle *cfg,
   const char *section,
   GNUNET_CONFIGURATION_Iterator iter,
@@ -588,13 +593,13 @@ GNUNET_CONFIGURATION_iterate_section_values(
   struct ConfigEntry *epos;
 
   spos = cfg->sections;
-  while ((spos != NULL) && (0 != strcasecmp(spos->name, section)))
+  while ((spos != NULL) && (0 != strcasecmp (spos->name, section)))
     spos = spos->next;
   if (NULL == spos)
     return;
   for (epos = spos->entries; NULL != epos; epos = epos->next)
     if (NULL != epos->val)
-      iter(iter_cls, spos->name, epos->key, epos->val);
+      iter (iter_cls, spos->name, epos->key, epos->val);
 }
 
 
@@ -606,7 +611,7 @@ GNUNET_CONFIGURATION_iterate_section_values(
  * @param iter_cls closure for @a iter
  */
 void
-GNUNET_CONFIGURATION_iterate_sections(
+GNUNET_CONFIGURATION_iterate_sections (
   const struct GNUNET_CONFIGURATION_Handle *cfg,
   GNUNET_CONFIGURATION_Section_Iterator iter,
   void *iter_cls)
@@ -616,11 +621,11 @@ GNUNET_CONFIGURATION_iterate_sections(
 
   next = cfg->sections;
   while (next != NULL)
-    {
-      spos = next;
-      next = spos->next;
-      iter(iter_cls, spos->name);
-    }
+  {
+    spos = next;
+    next = spos->next;
+    iter (iter_cls, spos->name);
+  }
 }
 
 
@@ -631,8 +636,8 @@ GNUNET_CONFIGURATION_iterate_sections(
  * @param section name of the section to remove
  */
 void
-GNUNET_CONFIGURATION_remove_section(struct GNUNET_CONFIGURATION_Handle *cfg,
-                                    const char *section)
+GNUNET_CONFIGURATION_remove_section (struct GNUNET_CONFIGURATION_Handle *cfg,
+                                     const char *section)
 {
   struct ConfigSection *spos;
   struct ConfigSection *prev;
@@ -641,28 +646,28 @@ GNUNET_CONFIGURATION_remove_section(struct GNUNET_CONFIGURATION_Handle *cfg,
   prev = NULL;
   spos = cfg->sections;
   while (NULL != spos)
+  {
+    if (0 == strcasecmp (section, spos->name))
     {
-      if (0 == strcasecmp(section, spos->name))
-        {
-          if (NULL == prev)
-            cfg->sections = spos->next;
-          else
-            prev->next = spos->next;
-          while (NULL != (ent = spos->entries))
-            {
-              spos->entries = ent->next;
-              GNUNET_free(ent->key);
-              GNUNET_free_non_null(ent->val);
-              GNUNET_free(ent);
-              cfg->dirty = GNUNET_YES;
-            }
-          GNUNET_free(spos->name);
-          GNUNET_free(spos);
-          return;
-        }
-      prev = spos;
-      spos = spos->next;
+      if (NULL == prev)
+        cfg->sections = spos->next;
+      else
+        prev->next = spos->next;
+      while (NULL != (ent = spos->entries))
+      {
+        spos->entries = ent->next;
+        GNUNET_free (ent->key);
+        GNUNET_free_non_null (ent->val);
+        GNUNET_free (ent);
+        cfg->dirty = GNUNET_YES;
+      }
+      GNUNET_free (spos->name);
+      GNUNET_free (spos);
+      return;
     }
+    prev = spos;
+    spos = spos->next;
+  }
 }
 
 
@@ -676,14 +681,14 @@ GNUNET_CONFIGURATION_remove_section(struct GNUNET_CONFIGURATION_Handle *cfg,
  * @param value value to copy
  */
 static void
-copy_entry(void *cls,
-           const char *section,
-           const char *option,
-           const char *value)
+copy_entry (void *cls,
+            const char *section,
+            const char *option,
+            const char *value)
 {
   struct GNUNET_CONFIGURATION_Handle *dst = cls;
 
-  GNUNET_CONFIGURATION_set_value_string(dst, section, option, value);
+  GNUNET_CONFIGURATION_set_value_string (dst, section, option, value);
 }
 
 
@@ -694,12 +699,12 @@ copy_entry(void *cls,
  * @return duplicate configuration
  */
 struct GNUNET_CONFIGURATION_Handle *
-GNUNET_CONFIGURATION_dup(const struct GNUNET_CONFIGURATION_Handle *cfg)
+GNUNET_CONFIGURATION_dup (const struct GNUNET_CONFIGURATION_Handle *cfg)
 {
   struct GNUNET_CONFIGURATION_Handle *ret;
 
-  ret = GNUNET_CONFIGURATION_create();
-  GNUNET_CONFIGURATION_iterate(cfg, &copy_entry, ret);
+  ret = GNUNET_CONFIGURATION_create ();
+  GNUNET_CONFIGURATION_iterate (cfg, &copy_entry, ret);
   return ret;
 }
 
@@ -712,13 +717,13 @@ GNUNET_CONFIGURATION_dup(const struct GNUNET_CONFIGURATION_Handle *cfg)
  * @return matching entry, NULL if not found
  */
 static struct ConfigSection *
-find_section(const struct GNUNET_CONFIGURATION_Handle *cfg,
-             const char *section)
+find_section (const struct GNUNET_CONFIGURATION_Handle *cfg,
+              const char *section)
 {
   struct ConfigSection *pos;
 
   pos = cfg->sections;
-  while ((pos != NULL) && (0 != strcasecmp(section, pos->name)))
+  while ((pos != NULL) && (0 != strcasecmp (section, pos->name)))
     pos = pos->next;
   return pos;
 }
@@ -733,17 +738,17 @@ find_section(const struct GNUNET_CONFIGURATION_Handle *cfg,
  * @return matching entry, NULL if not found
  */
 static struct ConfigEntry *
-find_entry(const struct GNUNET_CONFIGURATION_Handle *cfg,
-           const char *section,
-           const char *key)
+find_entry (const struct GNUNET_CONFIGURATION_Handle *cfg,
+            const char *section,
+            const char *key)
 {
   struct ConfigSection *sec;
   struct ConfigEntry *pos;
 
-  if (NULL == (sec = find_section(cfg, section)))
+  if (NULL == (sec = find_section (cfg, section)))
     return NULL;
   pos = sec->entries;
-  while ((pos != NULL) && (0 != strcasecmp(key, pos->key)))
+  while ((pos != NULL) && (0 != strcasecmp (key, pos->key)))
     pos = pos->next;
   return pos;
 }
@@ -760,19 +765,19 @@ find_entry(const struct GNUNET_CONFIGURATION_Handle *cfg,
  * @param value value to copy (of the default conf.)
  */
 static void
-compare_entries(void *cls,
-                const char *section,
-                const char *option,
-                const char *value)
+compare_entries (void *cls,
+                 const char *section,
+                 const char *option,
+                 const char *value)
 {
   struct DiffHandle *dh = cls;
   struct ConfigEntry *entNew;
 
-  entNew = find_entry(dh->cfg_default, section, option);
+  entNew = find_entry (dh->cfg_default, section, option);
   if ((NULL != entNew) && (NULL != entNew->val) &&
-      (0 == strcmp(entNew->val, value)))
+      (0 == strcmp (entNew->val, value)))
     return;
-  GNUNET_CONFIGURATION_set_value_string(dh->cfgDiff, section, option, value);
+  GNUNET_CONFIGURATION_set_value_string (dh->cfgDiff, section, option, value);
 }
 
 
@@ -784,15 +789,15 @@ compare_entries(void *cls,
  * @return configuration with only the differences, never NULL
  */
 struct GNUNET_CONFIGURATION_Handle *
-GNUNET_CONFIGURATION_get_diff(
+GNUNET_CONFIGURATION_get_diff (
   const struct GNUNET_CONFIGURATION_Handle *cfg_default,
   const struct GNUNET_CONFIGURATION_Handle *cfg_new)
 {
   struct DiffHandle diffHandle;
 
-  diffHandle.cfgDiff = GNUNET_CONFIGURATION_create();
+  diffHandle.cfgDiff = GNUNET_CONFIGURATION_create ();
   diffHandle.cfg_default = cfg_default;
-  GNUNET_CONFIGURATION_iterate(cfg_new, &compare_entries, &diffHandle);
+  GNUNET_CONFIGURATION_iterate (cfg_new, &compare_entries, &diffHandle);
   return diffHandle.cfgDiff;
 }
 
@@ -806,7 +811,7 @@ GNUNET_CONFIGURATION_get_diff(
  * @return #GNUNET_OK on success, #GNUNET_SYSERR on error
  */
 int
-GNUNET_CONFIGURATION_write_diffs(
+GNUNET_CONFIGURATION_write_diffs (
   const struct GNUNET_CONFIGURATION_Handle *cfg_default,
   const struct GNUNET_CONFIGURATION_Handle *cfg_new,
   const char *filename)
@@ -814,9 +819,9 @@ GNUNET_CONFIGURATION_write_diffs(
   int ret;
   struct GNUNET_CONFIGURATION_Handle *diff;
 
-  diff = GNUNET_CONFIGURATION_get_diff(cfg_default, cfg_new);
-  ret = GNUNET_CONFIGURATION_write(diff, filename);
-  GNUNET_CONFIGURATION_destroy(diff);
+  diff = GNUNET_CONFIGURATION_get_diff (cfg_default, cfg_new);
+  ret = GNUNET_CONFIGURATION_write (diff, filename);
+  GNUNET_CONFIGURATION_destroy (diff);
   return ret;
 }
 
@@ -830,42 +835,42 @@ GNUNET_CONFIGURATION_write_diffs(
  * @param value value to set
  */
 void
-GNUNET_CONFIGURATION_set_value_string(struct GNUNET_CONFIGURATION_Handle *cfg,
-                                      const char *section,
-                                      const char *option,
-                                      const char *value)
+GNUNET_CONFIGURATION_set_value_string (struct GNUNET_CONFIGURATION_Handle *cfg,
+                                       const char *section,
+                                       const char *option,
+                                       const char *value)
 {
   struct ConfigSection *sec;
   struct ConfigEntry *e;
   char *nv;
 
-  e = find_entry(cfg, section, option);
+  e = find_entry (cfg, section, option);
   if (NULL != e)
+  {
+    if (NULL == value)
     {
-      if (NULL == value)
-        {
-          GNUNET_free_non_null(e->val);
-          e->val = NULL;
-        }
-      else
-        {
-          nv = GNUNET_strdup(value);
-          GNUNET_free_non_null(e->val);
-          e->val = nv;
-        }
-      return;
+      GNUNET_free_non_null (e->val);
+      e->val = NULL;
     }
-  sec = find_section(cfg, section);
-  if (sec == NULL)
+    else
     {
-      sec = GNUNET_new(struct ConfigSection);
-      sec->name = GNUNET_strdup(section);
-      sec->next = cfg->sections;
-      cfg->sections = sec;
+      nv = GNUNET_strdup (value);
+      GNUNET_free_non_null (e->val);
+      e->val = nv;
     }
-  e = GNUNET_new(struct ConfigEntry);
-  e->key = GNUNET_strdup(option);
-  e->val = GNUNET_strdup(value);
+    return;
+  }
+  sec = find_section (cfg, section);
+  if (sec == NULL)
+  {
+    sec = GNUNET_new (struct ConfigSection);
+    sec->name = GNUNET_strdup (section);
+    sec->next = cfg->sections;
+    cfg->sections = sec;
+  }
+  e = GNUNET_new (struct ConfigEntry);
+  e->key = GNUNET_strdup (option);
+  e->val = GNUNET_strdup (value);
   e->next = sec->entries;
   sec->entries = e;
 }
@@ -880,15 +885,15 @@ GNUNET_CONFIGURATION_set_value_string(struct GNUNET_CONFIGURATION_Handle *cfg,
  * @param number value to set
  */
 void
-GNUNET_CONFIGURATION_set_value_number(struct GNUNET_CONFIGURATION_Handle *cfg,
-                                      const char *section,
-                                      const char *option,
-                                      unsigned long long number)
+GNUNET_CONFIGURATION_set_value_number (struct GNUNET_CONFIGURATION_Handle *cfg,
+                                       const char *section,
+                                       const char *option,
+                                       unsigned long long number)
 {
   char s[64];
 
-  GNUNET_snprintf(s, 64, "%llu", number);
-  GNUNET_CONFIGURATION_set_value_string(cfg, section, option, s);
+  GNUNET_snprintf (s, 64, "%llu", number);
+  GNUNET_CONFIGURATION_set_value_string (cfg, section, option, s);
 }
 
 
@@ -902,7 +907,7 @@ GNUNET_CONFIGURATION_set_value_number(struct GNUNET_CONFIGURATION_Handle *cfg,
  * @return #GNUNET_OK on success, #GNUNET_SYSERR on error
  */
 int
-GNUNET_CONFIGURATION_get_value_number(
+GNUNET_CONFIGURATION_get_value_number (
   const struct GNUNET_CONFIGURATION_Handle *cfg,
   const char *section,
   const char *option,
@@ -911,11 +916,11 @@ GNUNET_CONFIGURATION_get_value_number(
   struct ConfigEntry *e;
   char dummy[2];
 
-  if (NULL == (e = find_entry(cfg, section, option)))
+  if (NULL == (e = find_entry (cfg, section, option)))
     return GNUNET_SYSERR;
   if (NULL == e->val)
     return GNUNET_SYSERR;
-  if (1 != sscanf(e->val, "%llu%1s", number, dummy))
+  if (1 != sscanf (e->val, "%llu%1s", number, dummy))
     return GNUNET_SYSERR;
   return GNUNET_OK;
 }
@@ -931,7 +936,7 @@ GNUNET_CONFIGURATION_get_value_number(
  * @return #GNUNET_OK on success, #GNUNET_SYSERR on error
  */
 int
-GNUNET_CONFIGURATION_get_value_float(
+GNUNET_CONFIGURATION_get_value_float (
   const struct GNUNET_CONFIGURATION_Handle *cfg,
   const char *section,
   const char *option,
@@ -940,11 +945,11 @@ GNUNET_CONFIGURATION_get_value_float(
   struct ConfigEntry *e;
   char dummy[2];
 
-  if (NULL == (e = find_entry(cfg, section, option)))
+  if (NULL == (e = find_entry (cfg, section, option)))
     return GNUNET_SYSERR;
   if (NULL == e->val)
     return GNUNET_SYSERR;
-  if (1 != sscanf(e->val, "%f%1s", number, dummy))
+  if (1 != sscanf (e->val, "%f%1s", number, dummy))
     return GNUNET_SYSERR;
   return GNUNET_OK;
 }
@@ -960,7 +965,7 @@ GNUNET_CONFIGURATION_get_value_float(
  * @return #GNUNET_OK on success, #GNUNET_SYSERR on error
  */
 int
-GNUNET_CONFIGURATION_get_value_time(
+GNUNET_CONFIGURATION_get_value_time (
   const struct GNUNET_CONFIGURATION_Handle *cfg,
   const char *section,
   const char *option,
@@ -969,16 +974,16 @@ GNUNET_CONFIGURATION_get_value_time(
   struct ConfigEntry *e;
   int ret;
 
-  if (NULL == (e = find_entry(cfg, section, option)))
+  if (NULL == (e = find_entry (cfg, section, option)))
     return GNUNET_SYSERR;
   if (NULL == e->val)
     return GNUNET_SYSERR;
-  ret = GNUNET_STRINGS_fancy_time_to_relative(e->val, time);
+  ret = GNUNET_STRINGS_fancy_time_to_relative (e->val, time);
   if (GNUNET_OK != ret)
-    GNUNET_log_config_invalid(GNUNET_ERROR_TYPE_ERROR,
-                              section,
-                              option,
-                              _("Not a valid relative time specification"));
+    GNUNET_log_config_invalid (GNUNET_ERROR_TYPE_ERROR,
+                               section,
+                               option,
+                               _ ("Not a valid relative time specification"));
   return ret;
 }
 
@@ -993,7 +998,7 @@ GNUNET_CONFIGURATION_get_value_time(
  * @return #GNUNET_OK on success, #GNUNET_SYSERR on error
  */
 int
-GNUNET_CONFIGURATION_get_value_size(
+GNUNET_CONFIGURATION_get_value_size (
   const struct GNUNET_CONFIGURATION_Handle *cfg,
   const char *section,
   const char *option,
@@ -1001,11 +1006,11 @@ GNUNET_CONFIGURATION_get_value_size(
 {
   struct ConfigEntry *e;
 
-  if (NULL == (e = find_entry(cfg, section, option)))
+  if (NULL == (e = find_entry (cfg, section, option)))
     return GNUNET_SYSERR;
   if (NULL == e->val)
     return GNUNET_SYSERR;
-  return GNUNET_STRINGS_fancy_size_to_bytes(e->val, size);
+  return GNUNET_STRINGS_fancy_size_to_bytes (e->val, size);
 }
 
 
@@ -1020,7 +1025,7 @@ GNUNET_CONFIGURATION_get_value_size(
  * @return #GNUNET_OK on success, #GNUNET_SYSERR on error
  */
 int
-GNUNET_CONFIGURATION_get_value_string(
+GNUNET_CONFIGURATION_get_value_string (
   const struct GNUNET_CONFIGURATION_Handle *cfg,
   const char *section,
   const char *option,
@@ -1028,12 +1033,12 @@ GNUNET_CONFIGURATION_get_value_string(
 {
   struct ConfigEntry *e;
 
-  if ((NULL == (e = find_entry(cfg, section, option))) || (NULL == e->val))
-    {
-      *value = NULL;
-      return GNUNET_SYSERR;
-    }
-  *value = GNUNET_strdup(e->val);
+  if ((NULL == (e = find_entry (cfg, section, option))) || (NULL == e->val))
+  {
+    *value = NULL;
+    return GNUNET_SYSERR;
+  }
+  *value = GNUNET_strdup (e->val);
   return GNUNET_OK;
 }
 
@@ -1051,7 +1056,7 @@ GNUNET_CONFIGURATION_get_value_string(
  * @return #GNUNET_OK on success, #GNUNET_SYSERR on error
  */
 int
-GNUNET_CONFIGURATION_get_value_choice(
+GNUNET_CONFIGURATION_get_value_choice (
   const struct GNUNET_CONFIGURATION_Handle *cfg,
   const char *section,
   const char *option,
@@ -1061,21 +1066,21 @@ GNUNET_CONFIGURATION_get_value_choice(
   struct ConfigEntry *e;
   unsigned int i;
 
-  if (NULL == (e = find_entry(cfg, section, option)))
+  if (NULL == (e = find_entry (cfg, section, option)))
     return GNUNET_SYSERR;
   for (i = 0; NULL != choices[i]; i++)
-    if (0 == strcasecmp(choices[i], e->val))
+    if (0 == strcasecmp (choices[i], e->val))
       break;
   if (NULL == choices[i])
-    {
-      LOG(GNUNET_ERROR_TYPE_ERROR,
-          _("Configuration value '%s' for '%s'"
+  {
+    LOG (GNUNET_ERROR_TYPE_ERROR,
+         ("Configuration value '%s' for '%s'"
             " in section '%s' is not in set of legal choices\n"),
-          e->val,
-          option,
-          section);
-      return GNUNET_SYSERR;
-    }
+         e->val,
+         option,
+         section);
+    return GNUNET_SYSERR;
+  }
   *value = choices[i];
   return GNUNET_OK;
 }
@@ -1094,11 +1099,11 @@ GNUNET_CONFIGURATION_get_value_choice(
  *         #GNUNET_SYSERR on decoding error
  */
 int
-GNUNET_CONFIGURATION_get_data(const struct GNUNET_CONFIGURATION_Handle *cfg,
-                              const char *section,
-                              const char *option,
-                              void *buf,
-                              size_t buf_size)
+GNUNET_CONFIGURATION_get_data (const struct GNUNET_CONFIGURATION_Handle *cfg,
+                               const char *section,
+                               const char *option,
+                               void *buf,
+                               size_t buf_size)
 {
   char *enc;
   int res;
@@ -1106,21 +1111,21 @@ GNUNET_CONFIGURATION_get_data(const struct GNUNET_CONFIGURATION_Handle *cfg,
 
   if (GNUNET_OK !=
       (res =
-         GNUNET_CONFIGURATION_get_value_string(cfg, section, option, &enc)))
+         GNUNET_CONFIGURATION_get_value_string (cfg, section, option, &enc)))
     return res;
-  data_size = (strlen(enc) * 5) / 8;
+  data_size = (strlen (enc) * 5) / 8;
   if (data_size != buf_size)
-    {
-      GNUNET_free(enc);
-      return GNUNET_SYSERR;
-    }
+  {
+    GNUNET_free (enc);
+    return GNUNET_SYSERR;
+  }
   if (GNUNET_OK !=
-      GNUNET_STRINGS_string_to_data(enc, strlen(enc), buf, buf_size))
-    {
-      GNUNET_free(enc);
-      return GNUNET_SYSERR;
-    }
-  GNUNET_free(enc);
+      GNUNET_STRINGS_string_to_data (enc, strlen (enc), buf, buf_size))
+  {
+    GNUNET_free (enc);
+    return GNUNET_SYSERR;
+  }
+  GNUNET_free (enc);
   return GNUNET_OK;
 }
 
@@ -1134,13 +1139,13 @@ GNUNET_CONFIGURATION_get_data(const struct GNUNET_CONFIGURATION_Handle *cfg,
  * @return #GNUNET_YES if so, #GNUNET_NO if not.
  */
 int
-GNUNET_CONFIGURATION_have_value(const struct GNUNET_CONFIGURATION_Handle *cfg,
-                                const char *section,
-                                const char *option)
+GNUNET_CONFIGURATION_have_value (const struct GNUNET_CONFIGURATION_Handle *cfg,
+                                 const char *section,
+                                 const char *option)
 {
   struct ConfigEntry *e;
 
-  if ((NULL == (e = find_entry(cfg, section, option))) || (NULL == e->val))
+  if ((NULL == (e = find_entry (cfg, section, option))) || (NULL == e->val))
     return GNUNET_NO;
   return GNUNET_YES;
 }
@@ -1162,11 +1167,10 @@ GNUNET_CONFIGURATION_have_value(const struct GNUNET_CONFIGURATION_Handle *cfg,
  * @return $-expanded string
  */
 static char *
-expand_dollar(const struct GNUNET_CONFIGURATION_Handle *cfg,
-              char *orig,
-              unsigned int depth)
+expand_dollar (const struct GNUNET_CONFIGURATION_Handle *cfg,
+               char *orig,
+               unsigned int depth)
 {
-  int i;
   char *prefix;
   char *result;
   char *start;
@@ -1182,127 +1186,129 @@ expand_dollar(const struct GNUNET_CONFIGURATION_Handle *cfg,
   if (NULL == orig)
     return NULL;
   if (depth > 128)
-    {
-      LOG(GNUNET_ERROR_TYPE_WARNING,
-          _(
-            "Recursive expansion suspected, aborting $-expansion for term `%s'\n"),
-          orig);
-      return orig;
-    }
-  LOG(GNUNET_ERROR_TYPE_DEBUG, "Asked to $-expand %s\n", orig);
+  {
+    LOG (GNUNET_ERROR_TYPE_WARNING,
+         (
+           "Recursive expansion suspected, aborting $-expansion for term `%s'\n"),
+         orig);
+    return orig;
+  }
+  LOG (GNUNET_ERROR_TYPE_DEBUG, "Asked to $-expand %s\n", orig);
   if ('$' != orig[0])
-    {
-      LOG(GNUNET_ERROR_TYPE_DEBUG, "Doesn't start with $ - not expanding\n");
-      return orig;
-    }
+  {
+    LOG (GNUNET_ERROR_TYPE_DEBUG, "Doesn't start with $ - not expanding\n");
+    return orig;
+  }
   erased_char = 0;
   erased_pos = NULL;
   if ('{' == orig[1])
+  {
+    start = &orig[2];
+    lopen = 1;
+    end = &orig[1];
+    while (lopen > 0)
     {
-      start = &orig[2];
-      lopen = 1;
-      end = &orig[1];
-      while (lopen > 0)
-        {
-          end++;
-          switch (*end)
-            {
-            case '}':
-              lopen--;
-              break;
-
-            case '{':
-              lopen++;
-              break;
-
-            case '\0':
-              LOG(GNUNET_ERROR_TYPE_WARNING,
-                  _("Missing closing `%s' in option `%s'\n"),
-                  "}",
-                  orig);
-              return orig;
-
-            default:
-              break;
-            }
-        }
-      erased_char = *end;
-      erased_pos = end;
-      *end = '\0';
-      post = end + 1;
-      def = strchr(orig, ':');
-      if (NULL != def)
-        {
-          *def = '\0';
-          def++;
-          if (('-' == *def) || ('=' == *def))
-            def++;
-          def = GNUNET_strdup(def);
-        }
+      end++;
+      switch (*end)
+      {
+      case '}':
+        lopen--;
+        break;
+
+      case '{':
+        lopen++;
+        break;
+
+      case '\0':
+        LOG (GNUNET_ERROR_TYPE_WARNING,
+             _ ("Missing closing `%s' in option `%s'\n"),
+             "}",
+             orig);
+        return orig;
+
+      default:
+        break;
+      }
     }
+    erased_char = *end;
+    erased_pos = end;
+    *end = '\0';
+    post = end + 1;
+    def = strchr (orig, ':');
+    if (NULL != def)
+    {
+      *def = '\0';
+      def++;
+      if (('-' == *def) || ('=' == *def))
+        def++;
+      def = GNUNET_strdup (def);
+    }
+  }
   else
+  {
+    int i;
+
+    start = &orig[1];
+    def = NULL;
+    i = 0;
+    while ((orig[i] != '/') && (orig[i] != '\\') && (orig[i] != '\0') &&
+           (orig[i] != ' '))
+      i++;
+    if (orig[i] == '\0')
     {
-      start = &orig[1];
-      def = NULL;
-      i = 0;
-      while ((orig[i] != '/') && (orig[i] != '\\') && (orig[i] != '\0') &&
-             (orig[i] != ' '))
-        i++;
-      if (orig[i] == '\0')
-        {
-          post = "";
-        }
-      else
-        {
-          erased_char = orig[i];
-          erased_pos = &orig[i];
-          orig[i] = '\0';
-          post = &orig[i + 1];
-        }
+      post = "";
+    }
+    else
+    {
+      erased_char = orig[i];
+      erased_pos = &orig[i];
+      orig[i] = '\0';
+      post = &orig[i + 1];
     }
-  LOG(GNUNET_ERROR_TYPE_DEBUG,
-      "Split into `%s' and `%s' with default %s\n",
-      start,
-      post,
-      def);
+  }
+  LOG (GNUNET_ERROR_TYPE_DEBUG,
+       "Split into `%s' and `%s' with default %s\n",
+       start,
+       post,
+       def);
   if (GNUNET_OK !=
-      GNUNET_CONFIGURATION_get_value_string(cfg, "PATHS", start, &prefix))
+      GNUNET_CONFIGURATION_get_value_string (cfg, "PATHS", start, &prefix))
+  {
+    if (NULL == (env = getenv (start)))
     {
-      if (NULL == (env = getenv(start)))
-        {
-          /* try default */
-          def = expand_dollar(cfg, def, depth + 1);
-          env = def;
-        }
-      if (NULL == env)
-        {
-          start = GNUNET_strdup(start);
-          if (erased_pos)
-            *erased_pos = erased_char;
-          LOG(GNUNET_ERROR_TYPE_WARNING,
-              _(
-                "Failed to expand `%s' in `%s' as it is neither found in [PATHS] nor defined as an environmental variable\n"),
-              start,
-              orig);
-          GNUNET_free(start);
-          return orig;
-        }
-      prefix = GNUNET_strdup(env);
+      /* try default */
+      def = expand_dollar (cfg, def, depth + 1);
+      env = def;
     }
-  prefix = GNUNET_CONFIGURATION_expand_dollar(cfg, prefix);
-  if ((erased_pos) && ('}' != erased_char))
+    if (NULL == env)
     {
-      len = strlen(prefix) + 1;
-      prefix = GNUNET_realloc(prefix, len + 1);
-      prefix[len - 1] = erased_char;
-      prefix[len] = '\0';
+      start = GNUNET_strdup (start);
+      if (erased_pos)
+        *erased_pos = erased_char;
+      LOG (GNUNET_ERROR_TYPE_WARNING,
+           _ (
+             "Failed to expand `%s' in `%s' as it is neither found in [PATHS] nor defined as an environmental variable\n"),
+           start,
+           orig);
+      GNUNET_free (start);
+      return orig;
     }
-  result = GNUNET_malloc(strlen(prefix) + strlen(post) + 1);
-  strcpy(result, prefix);
-  strcat(result, post);
-  GNUNET_free_non_null(def);
-  GNUNET_free(prefix);
-  GNUNET_free(orig);
+    prefix = GNUNET_strdup (env);
+  }
+  prefix = GNUNET_CONFIGURATION_expand_dollar (cfg, prefix);
+  if ((erased_pos) && ('}' != erased_char))
+  {
+    len = strlen (prefix) + 1;
+    prefix = GNUNET_realloc (prefix, len + 1);
+    prefix[len - 1] = erased_char;
+    prefix[len] = '\0';
+  }
+  result = GNUNET_malloc (strlen (prefix) + strlen (post) + 1);
+  strcpy (result, prefix);
+  strcat (result, post);
+  GNUNET_free_non_null (def);
+  GNUNET_free (prefix);
+  GNUNET_free (orig);
   return result;
 }
 
@@ -1324,7 +1330,7 @@ expand_dollar(const struct GNUNET_CONFIGURATION_Handle *cfg,
  * @return $-expanded string
  */
 char *
-GNUNET_CONFIGURATION_expand_dollar(
+GNUNET_CONFIGURATION_expand_dollar (
   const struct GNUNET_CONFIGURATION_Handle *cfg,
   char *orig)
 {
@@ -1333,16 +1339,16 @@ GNUNET_CONFIGURATION_expand_dollar(
   size_t len;
 
   for (i = 0; '\0' != orig[i]; i++)
-    {
-      if ('$' != orig[i])
-        continue;
-      dup = GNUNET_strdup(orig + i);
-      dup = expand_dollar(cfg, dup, 0);
-      len = strlen(dup) + 1;
-      orig = GNUNET_realloc(orig, i + len);
-      GNUNET_memcpy(orig + i, dup, len);
-      GNUNET_free(dup);
-    }
+  {
+    if ('$' != orig[i])
+      continue;
+    dup = GNUNET_strdup (orig + i);
+    dup = expand_dollar (cfg, dup, 0);
+    len = strlen (dup) + 1;
+    orig = GNUNET_realloc (orig, i + len);
+    GNUNET_memcpy (orig + i, dup, len);
+    GNUNET_free (dup);
+  }
   return orig;
 }
 
@@ -1358,7 +1364,7 @@ GNUNET_CONFIGURATION_expand_dollar(
  * @return #GNUNET_OK on success, #GNUNET_SYSERR on error
  */
 int
-GNUNET_CONFIGURATION_get_value_filename(
+GNUNET_CONFIGURATION_get_value_filename (
   const struct GNUNET_CONFIGURATION_Handle *cfg,
   const char *section,
   const char *option,
@@ -1367,15 +1373,15 @@ GNUNET_CONFIGURATION_get_value_filename(
   char *tmp;
 
   if (GNUNET_OK !=
-      GNUNET_CONFIGURATION_get_value_string(cfg, section, option, &tmp))
-    {
-      LOG(GNUNET_ERROR_TYPE_DEBUG, "Failed to retrieve filename\n");
-      *value = NULL;
-      return GNUNET_SYSERR;
-    }
-  tmp = GNUNET_CONFIGURATION_expand_dollar(cfg, tmp);
-  *value = GNUNET_STRINGS_filename_expand(tmp);
-  GNUNET_free(tmp);
+      GNUNET_CONFIGURATION_get_value_string (cfg, section, option, &tmp))
+  {
+    LOG (GNUNET_ERROR_TYPE_DEBUG, "Failed to retrieve filename\n");
+    *value = NULL;
+    return GNUNET_SYSERR;
+  }
+  tmp = GNUNET_CONFIGURATION_expand_dollar (cfg, tmp);
+  *value = GNUNET_STRINGS_filename_expand (tmp);
+  GNUNET_free (tmp);
   if (*value == NULL)
     return GNUNET_SYSERR;
   return GNUNET_OK;
@@ -1392,7 +1398,7 @@ GNUNET_CONFIGURATION_get_value_filename(
  * @return #GNUNET_YES, #GNUNET_NO or #GNUNET_SYSERR
  */
 int
-GNUNET_CONFIGURATION_get_value_yesno(
+GNUNET_CONFIGURATION_get_value_yesno (
   const struct GNUNET_CONFIGURATION_Handle *cfg,
   const char *section,
   const char *option)
@@ -1402,7 +1408,7 @@ GNUNET_CONFIGURATION_get_value_yesno(
   int ret;
 
   ret =
-    GNUNET_CONFIGURATION_get_value_choice(cfg, section, option, yesno, &val);
+    GNUNET_CONFIGURATION_get_value_choice (cfg, section, option, yesno, &val);
   if (ret == GNUNET_SYSERR)
     return ret;
   if (val == yesno[0])
@@ -1422,7 +1428,7 @@ GNUNET_CONFIGURATION_get_value_yesno(
  * @return number of filenames iterated over, -1 on error
  */
 int
-GNUNET_CONFIGURATION_iterate_value_filenames(
+GNUNET_CONFIGURATION_iterate_value_filenames (
   const struct GNUNET_CONFIGURATION_Handle *cfg,
   const char *section,
   const char *option,
@@ -1436,55 +1442,55 @@ GNUNET_CONFIGURATION_iterate_value_filenames(
   int ret;
 
   if (GNUNET_OK !=
-      GNUNET_CONFIGURATION_get_value_string(cfg, section, option, &list))
+      GNUNET_CONFIGURATION_get_value_string (cfg, section, option, &list))
     return 0;
-  GNUNET_assert(list != NULL);
+  GNUNET_assert (list != NULL);
   ret = 0;
   pos = list;
   while (1)
+  {
+    while (pos[0] == ' ')
+      pos++;
+    if (strlen (pos) == 0)
+      break;
+    end = pos + 1;
+    while ((end[0] != ' ') && (end[0] != '\0'))
     {
-      while (pos[0] == ' ')
-        pos++;
-      if (strlen(pos) == 0)
-        break;
-      end = pos + 1;
-      while ((end[0] != ' ') && (end[0] != '\0'))
-        {
-          if (end[0] == '\\')
-            {
-              switch (end[1])
-                {
-                case '\\':
-                case ' ':
-                  memmove(end, &end[1], strlen(&end[1]) + 1);
-
-                case '\0':
-                  /* illegal, but just keep it */
-                  break;
-
-                default:
-                  /* illegal, but just ignore that there was a '/' */
-                  break;
-                }
-            }
-          end++;
-        }
-      old = end[0];
-      end[0] = '\0';
-      if (strlen(pos) > 0)
+      if (end[0] == '\\')
+      {
+        switch (end[1])
         {
-          ret++;
-          if ((cb != NULL) && (GNUNET_OK != cb(cb_cls, pos)))
-            {
-              ret = GNUNET_SYSERR;
-              break;
-            }
+        case '\\':
+        case ' ':
+          memmove (end, &end[1], strlen (&end[1]) + 1);
+
+        case '\0':
+          /* illegal, but just keep it */
+          break;
+
+        default:
+          /* illegal, but just ignore that there was a '/' */
+          break;
         }
-      if (old == '\0')
+      }
+      end++;
+    }
+    old = end[0];
+    end[0] = '\0';
+    if (strlen (pos) > 0)
+    {
+      ret++;
+      if ((cb != NULL) && (GNUNET_OK != cb (cb_cls, pos)))
+      {
+        ret = GNUNET_SYSERR;
         break;
-      pos = end + 1;
+      }
     }
-  GNUNET_free(list);
+    if (old == '\0')
+      break;
+    pos = end + 1;
+  }
+  GNUNET_free (list);
   return ret;
 }
 
@@ -1496,33 +1502,33 @@ GNUNET_CONFIGURATION_iterate_value_filenames(
  * @return FIXME
  */
 static char *
-escape_name(const char *value)
+escape_name (const char *value)
 {
   char *escaped;
   const char *rpos;
   char *wpos;
 
-  escaped = GNUNET_malloc(strlen(value) * 2 + 1);
-  memset(escaped, 0, strlen(value) * 2 + 1);
+  escaped = GNUNET_malloc (strlen (value) * 2 + 1);
+  memset (escaped, 0, strlen (value) * 2 + 1);
   rpos = value;
   wpos = escaped;
   while (rpos[0] != '\0')
+  {
+    switch (rpos[0])
     {
-      switch (rpos[0])
-        {
-        case '\\':
-        case ' ':
-          wpos[0] = '\\';
-          wpos[1] = rpos[0];
-          wpos += 2;
-          break;
+    case '\\':
+    case ' ':
+      wpos[0] = '\\';
+      wpos[1] = rpos[0];
+      wpos += 2;
+      break;
 
-        default:
-          wpos[0] = rpos[0];
-          wpos++;
-        }
-      rpos++;
+    default:
+      wpos[0] = rpos[0];
+      wpos++;
     }
+    rpos++;
+  }
   return escaped;
 }
 
@@ -1535,11 +1541,11 @@ escape_name(const char *value)
  * @return #GNUNET_OK if the names do not match, #GNUNET_SYSERR if they do
  */
 static int
-test_match(void *cls, const char *fn)
+test_match (void *cls, const char *fn)
 {
   const char *of = cls;
 
-  return (0 == strcmp(of, fn)) ? GNUNET_SYSERR : GNUNET_OK;
+  return (0 == strcmp (of, fn)) ? GNUNET_SYSERR : GNUNET_OK;
 }
 
 
@@ -1556,7 +1562,7 @@ test_match(void *cls, const char *fn)
  *         #GNUNET_SYSERR on error
  */
 int
-GNUNET_CONFIGURATION_append_value_filename(
+GNUNET_CONFIGURATION_append_value_filename (
   struct GNUNET_CONFIGURATION_Handle *cfg,
   const char *section,
   const char *option,
@@ -1567,25 +1573,25 @@ GNUNET_CONFIGURATION_append_value_filename(
   char *nw;
 
   if (GNUNET_SYSERR ==
-      GNUNET_CONFIGURATION_iterate_value_filenames(cfg,
-                                                   section,
-                                                   option,
-                                                   &test_match,
-                                                   (void *)value))
+      GNUNET_CONFIGURATION_iterate_value_filenames (cfg,
+                                                    section,
+                                                    option,
+                                                    &test_match,
+                                                    (void *) value))
     return GNUNET_NO; /* already exists */
   if (GNUNET_OK !=
-      GNUNET_CONFIGURATION_get_value_string(cfg, section, option, &old))
-    old = GNUNET_strdup("");
-  escaped = escape_name(value);
-  nw = GNUNET_malloc(strlen(old) + strlen(escaped) + 2);
-  strcpy(nw, old);
-  if (strlen(old) > 0)
-    strcat(nw, " ");
-  strcat(nw, escaped);
-  GNUNET_CONFIGURATION_set_value_string(cfg, section, option, nw);
-  GNUNET_free(old);
-  GNUNET_free(nw);
-  GNUNET_free(escaped);
+      GNUNET_CONFIGURATION_get_value_string (cfg, section, option, &old))
+    old = GNUNET_strdup ("");
+  escaped = escape_name (value);
+  nw = GNUNET_malloc (strlen (old) + strlen (escaped) + 2);
+  strcpy (nw, old);
+  if (strlen (old) > 0)
+    strcat (nw, " ");
+  strcat (nw, escaped);
+  GNUNET_CONFIGURATION_set_value_string (cfg, section, option, nw);
+  GNUNET_free (old);
+  GNUNET_free (nw);
+  GNUNET_free (escaped);
   return GNUNET_OK;
 }
 
@@ -1603,7 +1609,7 @@ GNUNET_CONFIGURATION_append_value_filename(
  *         #GNUNET_SYSERR on error
  */
 int
-GNUNET_CONFIGURATION_remove_value_filename(
+GNUNET_CONFIGURATION_remove_value_filename (
   struct GNUNET_CONFIGURATION_Handle *cfg,
   const char *section,
   const char *option,
@@ -1616,64 +1622,64 @@ GNUNET_CONFIGURATION_remove_value_filename(
   char old;
 
   if (GNUNET_OK !=
-      GNUNET_CONFIGURATION_get_value_string(cfg, section, option, &list))
+      GNUNET_CONFIGURATION_get_value_string (cfg, section, option, &list))
     return GNUNET_NO;
-  match = escape_name(value);
+  match = escape_name (value);
   pos = list;
   while (1)
+  {
+    while (pos[0] == ' ')
+      pos++;
+    if (strlen (pos) == 0)
+      break;
+    end = pos + 1;
+    while ((end[0] != ' ') && (end[0] != '\0'))
     {
-      while (pos[0] == ' ')
-        pos++;
-      if (strlen(pos) == 0)
-        break;
-      end = pos + 1;
-      while ((end[0] != ' ') && (end[0] != '\0'))
+      if (end[0] == '\\')
+      {
+        switch (end[1])
         {
-          if (end[0] == '\\')
-            {
-              switch (end[1])
-                {
-                case '\\':
-                case ' ':
-                  end++;
-                  break;
-
-                case '\0':
-                  /* illegal, but just keep it */
-                  break;
-
-                default:
-                  /* illegal, but just ignore that there was a '/' */
-                  break;
-                }
-            }
+        case '\\':
+        case ' ':
           end++;
+          break;
+
+        case '\0':
+          /* illegal, but just keep it */
+          break;
+
+        default:
+          /* illegal, but just ignore that there was a '/' */
+          break;
         }
-      old = end[0];
-      end[0] = '\0';
-      if (0 == strcmp(pos, match))
-        {
-          if (old != '\0')
-            memmove(pos, &end[1], strlen(&end[1]) + 1);
-          else
-            {
-              if (pos != list)
-                pos[-1] = '\0';
-              else
-                pos[0] = '\0';
-            }
-          GNUNET_CONFIGURATION_set_value_string(cfg, section, option, list);
-          GNUNET_free(list);
-          GNUNET_free(match);
-          return GNUNET_OK;
-        }
-      if (old == '\0')
-        break;
-      end[0] = old;
-      pos = end + 1;
+      }
+      end++;
+    }
+    old = end[0];
+    end[0] = '\0';
+    if (0 == strcmp (pos, match))
+    {
+      if (old != '\0')
+        memmove (pos, &end[1], strlen (&end[1]) + 1);
+      else
+      {
+        if (pos != list)
+          pos[-1] = '\0';
+        else
+          pos[0] = '\0';
+      }
+      GNUNET_CONFIGURATION_set_value_string (cfg, section, option, list);
+      GNUNET_free (list);
+      GNUNET_free (match);
+      return GNUNET_OK;
     }
-  GNUNET_free(list);
-  GNUNET_free(match);
+    if (old == '\0')
+      break;
+    end[0] = old;
+    pos = end + 1;
+  }
+  GNUNET_free (list);
+  GNUNET_free (match);
   return GNUNET_NO;
 }
 
@@ -1688,21 +1694,21 @@ GNUNET_CONFIGURATION_remove_value_filename(
  * @return #GNUNET_OK on success
  */
 static int
-parse_configuration_file(void *cls, const char *filename)
+parse_configuration_file (void *cls, const char *filename)
 {
   struct GNUNET_CONFIGURATION_Handle *cfg = cls;
   char *ext;
   int ret;
 
   /* Examine file extension */
-  ext = strrchr(filename, '.');
-  if ((NULL == ext) || (0 != strcmp(ext, ".conf")))
-    {
-      GNUNET_log(GNUNET_ERROR_TYPE_WARNING, "Skipping file `%s'\n", filename);
-      return GNUNET_OK;
-    }
-
-  ret = GNUNET_CONFIGURATION_parse(cfg, filename);
+  ext = strrchr (filename, '.');
+  if ((NULL == ext) || (0 != strcmp (ext, ".conf")))
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Skipping file `%s'\n", filename);
+    return GNUNET_OK;
+  }
+
+  ret = GNUNET_CONFIGURATION_parse (cfg, filename);
   return ret;
 }
 
@@ -1716,11 +1722,11 @@ parse_configuration_file(void *cls, const char *filename)
  * @return #GNUNET_OK on success, #GNUNET_SYSERR on error
  */
 int
-GNUNET_CONFIGURATION_load_from(struct GNUNET_CONFIGURATION_Handle *cfg,
-                               const char *defaults_d)
+GNUNET_CONFIGURATION_load_from (struct GNUNET_CONFIGURATION_Handle *cfg,
+                                const char *defaults_d)
 {
   if (GNUNET_SYSERR ==
-      GNUNET_DISK_directory_scan(defaults_d, &parse_configuration_file, cfg))
+      GNUNET_DISK_directory_scan (defaults_d, &parse_configuration_file, cfg))
     return GNUNET_SYSERR; /* no configuration at all found */
   return GNUNET_OK;
 }