Transform avl key into const void *
authorHenning Rogge <hrogge@googlemail.com>
Sat, 12 Mar 2011 21:31:20 +0000 (22:31 +0100)
committerHenning Rogge <hrogge@googlemail.com>
Sat, 12 Mar 2011 21:31:20 +0000 (22:31 +0100)
src/common/avl.h
src/olsr_callbacks.c
src/olsr_comport_http.c
src/olsr_comport_http.h
src/olsr_comport_txt.c
src/olsr_comport_txt.h
src/plugin_loader.c

index d6367d8..bf14046 100644 (file)
@@ -82,7 +82,7 @@ struct avl_node {
   /**
    * pointer to key of node
    */
-  void *key;
+  const void *key;
 
   /**
    * balance state of AVL tree (0,-1,+1)
index f8e341d..dfcbd23 100644 (file)
@@ -57,8 +57,8 @@ olsr_callback_prv_create(struct olsr_callback_provider *prv, const char *name) {
 
   OLSR_DEBUG(LOG_CALLBACK, "Create callback provider '%s'\n", name);
 
-  prv->node.key = strdup(name);
-  prv->name = prv->node.key;
+  prv->name = strdup(name);
+  prv->node.key = prv->name;
   avl_insert(&callback_provider_tree, &prv->node);
 
   prv->getKey = unknown_key;
index e6ceb09..11b9e80 100644 (file)
@@ -168,7 +168,8 @@ olsr_com_add_htmlsite(const char *path, const char *content, size_t length) {
   struct olsr_html_site *site;
 
   site = olsr_memcookie_malloc(htmlsite_cookie);
-  site->node.key = strdup(path);
+  site->path = strdup(path);
+  site->node.key = site->path;
 
   site->static_site = true;
   site->site_data = content;
@@ -196,7 +197,7 @@ olsr_com_add_htmlhandler(void(*sitehandler)(struct comport_connection *con, stru
 void
 olsr_com_remove_htmlsite(struct olsr_html_site *site) {
   avl_delete(&http_handler_tree, &site->node);
-  free(site->node.key);
+  free(site->path);
   olsr_memcookie_free(htmlsite_cookie, site);
 }
 
index f707c18..e4c242e 100644 (file)
@@ -78,6 +78,7 @@ struct http_request {
 /* it is stored in an AVL tree */
 struct olsr_html_site {
   struct avl_node node;
+  char *path;
 
   bool static_site;   /* is this a static site y/n? */
 
index 649cd29..9dc35e3 100644 (file)
@@ -157,7 +157,8 @@ olsr_com_add_normal_txtcommand (const char *command, olsr_txthandler handler) {
   struct olsr_txtcommand *txt;
 
   txt = olsr_memcookie_malloc(txtcommand_cookie);
-  txt->node.key = strdup(command);
+  txt->command = strdup(command);
+  txt->node.key = txt->command;
   txt->handler = handler;
 
   avl_insert(&txt_normal_tree, &txt->node);
@@ -169,7 +170,8 @@ olsr_com_add_help_txtcommand (const char *command, olsr_txthandler handler) {
   struct olsr_txtcommand *txt;
 
   txt = olsr_memcookie_malloc(txtcommand_cookie);
-  txt->node.key = strdup(command);
+  txt->command = strdup(command);
+  txt->node.key = txt->command;
   txt->handler = handler;
 
   avl_insert(&txt_help_tree, &txt->node);
@@ -178,13 +180,13 @@ olsr_com_add_help_txtcommand (const char *command, olsr_txthandler handler) {
 
 void olsr_com_remove_normal_txtcommand (struct olsr_txtcommand *cmd) {
   avl_delete(&txt_normal_tree, &cmd->node);
-  free(cmd->node.key);
+  free(cmd->command);
   olsr_memcookie_free(txtcommand_cookie, cmd);
 }
 
 void olsr_com_remove_help_txtcommand (struct olsr_txtcommand *cmd) {
   avl_delete(&txt_help_tree, &cmd->node);
-  free(cmd->node.key);
+  free(cmd->command);
   olsr_memcookie_free(txtcommand_cookie, cmd);
 }
 
@@ -365,7 +367,7 @@ olsr_txtcmd_help(struct comport_connection *con,
   }
 
   OLSR_FOR_EACH_TXTCMD_ENTRY(ptr, iterator) {
-    if (abuf_appendf(&con->out, "  %s\n", (char *)ptr->node.key) < 0) {
+    if (abuf_appendf(&con->out, "  %s\n", ptr->command) < 0) {
       return ABUF_ERROR;
     }
   }
index c52b4cb..bac57c9 100644 (file)
@@ -60,6 +60,8 @@ typedef enum olsr_txtcommand_result (*olsr_txthandler)
 
 struct olsr_txtcommand {
   struct avl_node node;
+  char *command;
+
   struct ip_acl *acl;
 
   olsr_txthandler handler;
index 394a986..46558c2 100644 (file)
@@ -79,7 +79,7 @@ olsr_hookup_plugin(struct olsr_plugin *pl_def) {
     avl_init(&plugin_tree, avl_comp_strcasecmp, false, NULL);
     plugin_tree_initialized = true;
   }
-  pl_def->p_node.key = strdup(pl_def->name);
+  pl_def->p_node.key = pl_def->name;
   avl_insert(&plugin_tree, &pl_def->p_node);
 }
 
@@ -324,7 +324,6 @@ olsr_internal_unload_plugin(struct olsr_plugin *plugin, bool cleanup) {
 
   /* remove first from tree */
   avl_delete(&plugin_tree, &plugin->p_node);
-  free(plugin->p_node.key);
 
   legacy = plugin->internal_version == 5;