diff options
author | Christian Grothoff <christian@grothoff.org> | 2010-04-28 08:07:19 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2010-04-28 08:07:19 +0000 |
commit | b393f0f2c8f2075c16310a8edbe552020fd8b147 (patch) | |
tree | d6b91d0939ab540d2f66291cf0659ed40bda9626 /src/util/container_meta_data.c | |
parent | 1c90bd35e34a9a237ebde4440367322a8cc2a686 (diff) | |
download | gnunet-b393f0f2c8f2075c16310a8edbe552020fd8b147.tar.gz gnunet-b393f0f2c8f2075c16310a8edbe552020fd8b147.zip |
merge meta data for search results
Diffstat (limited to 'src/util/container_meta_data.c')
-rw-r--r-- | src/util/container_meta_data.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/util/container_meta_data.c b/src/util/container_meta_data.c index 89a63d659..e44984b64 100644 --- a/src/util/container_meta_data.c +++ b/src/util/container_meta_data.c | |||
@@ -311,6 +311,54 @@ GNUNET_CONTAINER_meta_data_insert (struct GNUNET_CONTAINER_MetaData *md, | |||
311 | 311 | ||
312 | 312 | ||
313 | /** | 313 | /** |
314 | * Merge given meta data. | ||
315 | * | ||
316 | * @param cls the 'struct GNUNET_CONTAINER_MetaData' to merge into | ||
317 | * @param plugin_name name of the plugin that produced this value; | ||
318 | * special values can be used (i.e. '<zlib>' for zlib being | ||
319 | * used in the main libextractor library and yielding | ||
320 | * meta data). | ||
321 | * @param type libextractor-type describing the meta data | ||
322 | * @param format basic format information about data | ||
323 | * @param data_mime_type mime-type of data (not of the original file); | ||
324 | * can be NULL (if mime-type is not known) | ||
325 | * @param data actual meta-data found | ||
326 | * @param data_len number of bytes in data | ||
327 | * @return 0 (to continue) | ||
328 | */ | ||
329 | static int | ||
330 | merge_helper(void *cls, | ||
331 | const char *plugin_name, | ||
332 | enum EXTRACTOR_MetaType type, | ||
333 | enum EXTRACTOR_MetaFormat format, | ||
334 | const char *data_mime_type, | ||
335 | const char *data, | ||
336 | size_t data_len) | ||
337 | { | ||
338 | struct GNUNET_CONTAINER_MetaData *md = cls; | ||
339 | (void) GNUNET_CONTAINER_meta_data_insert (md, plugin_name, | ||
340 | type, format, | ||
341 | data_mime_type, data, data_len); | ||
342 | return 0; | ||
343 | } | ||
344 | |||
345 | |||
346 | /** | ||
347 | * Extend metadata. Merges the meta data from the second argument | ||
348 | * into the first, discarding duplicate key-value pairs. | ||
349 | * | ||
350 | * @param md metadata to extend | ||
351 | * @param in metadata to merge | ||
352 | */ | ||
353 | void | ||
354 | GNUNET_CONTAINER_meta_data_merge (struct GNUNET_CONTAINER_MetaData *md, | ||
355 | const struct GNUNET_CONTAINER_MetaData *in) | ||
356 | { | ||
357 | GNUNET_CONTAINER_meta_data_iterate (in, &merge_helper, md); | ||
358 | } | ||
359 | |||
360 | |||
361 | /** | ||
314 | * Remove an item. | 362 | * Remove an item. |
315 | * | 363 | * |
316 | * @param md metadata to manipulate | 364 | * @param md metadata to manipulate |