- opaque mq structs
[oweals/gnunet.git] / src / fs / fs_sharetree.c
index a876dac99b54bd68b9ac3c7c68ac1742edd710b9..5e96390ce2c933ef1529f2d14ea5ad43faa70832 100644 (file)
@@ -162,7 +162,7 @@ add_to_keyword_counter (void *cls, const char *keyword, int is_mandatory)
 {
   struct GNUNET_CONTAINER_MultiHashMap *mcm = cls;
   struct KeywordCounter *cnt;
-  GNUNET_HashCode hc;
+  struct GNUNET_HashCode hc;
   size_t klen;
 
   klen = strlen (keyword) + 1;
@@ -206,7 +206,7 @@ add_to_meta_counter (void *cls, const char *plugin_name,
                     const char *data_mime_type, const char *data, size_t data_len)
 {
   struct GNUNET_CONTAINER_MultiHashMap *map = cls;
-  GNUNET_HashCode key;
+  struct GNUNET_HashCode key;
   struct MetaCounter *cnt;
 
   GNUNET_CRYPTO_hash (data, data_len, &key);
@@ -243,7 +243,7 @@ remove_high_frequency_keywords (void *cls, const char *keyword, int is_mandatory
 {
   struct TrimContext *tc = cls;
   struct KeywordCounter *counter;
-  GNUNET_HashCode hc;
+  struct GNUNET_HashCode hc;
   size_t klen;
 
   klen = strlen (keyword) + 1;
@@ -268,7 +268,7 @@ remove_high_frequency_keywords (void *cls, const char *keyword, int is_mandatory
  * @return GNUNET_YES (always)
  */
 static int
-migrate_and_drop_keywords (void *cls, const GNUNET_HashCode * key, void *value)
+migrate_and_drop_keywords (void *cls, const struct GNUNET_HashCode * key, void *value)
 {
   struct TrimContext *tc = cls;
   struct KeywordCounter *counter = value;
@@ -299,7 +299,7 @@ migrate_and_drop_keywords (void *cls, const GNUNET_HashCode * key, void *value)
  * @return GNUNET_YES (always)
  */
 static int
-migrate_and_drop_metadata (void *cls, const GNUNET_HashCode * key, void *value)
+migrate_and_drop_metadata (void *cls, const struct GNUNET_HashCode * key, void *value)
 {
   struct TrimContext *tc = cls;
   struct MetaCounter *counter = value;
@@ -347,7 +347,7 @@ share_tree_trim (struct TrimContext *tc,
   }
 
   /* consider adding filename to directory meta data */
-  if (tree->is_directory)
+  if (tree->is_directory == GNUNET_YES)
   {
     const char *user = getenv ("USER");
     if ( (user == NULL) || 
@@ -384,7 +384,11 @@ share_tree_trim (struct TrimContext *tc,
   {
     tc->pos = pos;
     if (NULL != pos->ksk_uri)
-      GNUNET_FS_uri_ksk_get_keywords (pos->ksk_uri, &remove_high_frequency_keywords, tc);
+    {
+      struct GNUNET_FS_Uri *ksk_uri_copy = GNUNET_FS_uri_dup (pos->ksk_uri);
+      GNUNET_FS_uri_ksk_get_keywords (ksk_uri_copy, &remove_high_frequency_keywords, tc);
+      GNUNET_FS_uri_destroy (ksk_uri_copy);
+    }
   }
 
   /* add high-frequency meta data and keywords to parent */
@@ -411,8 +415,8 @@ GNUNET_FS_share_tree_trim (struct GNUNET_FS_ShareTreeItem *toplevel)
 
   if (toplevel == NULL)
     return;  
-  tc.keywordcounter = GNUNET_CONTAINER_multihashmap_create (1024);
-  tc.metacounter = GNUNET_CONTAINER_multihashmap_create (1024);
+  tc.keywordcounter = GNUNET_CONTAINER_multihashmap_create (1024, GNUNET_NO);
+  tc.metacounter = GNUNET_CONTAINER_multihashmap_create (1024, GNUNET_NO);
   share_tree_trim (&tc, toplevel);
   GNUNET_CONTAINER_multihashmap_destroy (tc.keywordcounter);
   GNUNET_CONTAINER_multihashmap_destroy (tc.metacounter);