From 4cdecaf4c7815917932a3b80812ecbd840dab4e7 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Mon, 30 Jan 2012 12:21:21 +0000 Subject: -all meta data extraction should happen in helper, removing from API --- src/fs/Makefile.am | 4 +-- src/fs/fs_file_information.c | 59 --------------------------------------- src/fs/gnunet-helper-fs-publish.c | 35 +++++++++++++++++++++-- 3 files changed, 33 insertions(+), 65 deletions(-) (limited to 'src/fs') diff --git a/src/fs/Makefile.am b/src/fs/Makefile.am index ccbffc355..99b8f2def 100644 --- a/src/fs/Makefile.am +++ b/src/fs/Makefile.am @@ -44,8 +44,7 @@ libgnunetfs_la_SOURCES = \ libgnunetfs_la_LIBADD = \ $(top_builddir)/src/datastore/libgnunetdatastore.la \ $(top_builddir)/src/util/libgnunetutil.la \ - -lextractor \ - $(GN_LIBINTL) $(XLIB) -lunistring + $(GN_LIBINTL) $(XLIB) -lunistring -lextractor libgnunetfs_la_LDFLAGS = \ $(GN_LIB_LDFLAGS) $(WINFLAGS) \ @@ -114,7 +113,6 @@ gnunet_publish_DEPENDENCIES = \ gnunet_helper_fs_publish_SOURCES = \ gnunet-helper-fs-publish.c gnunet_helper_fs_publish_LDADD = \ - $(top_builddir)/src/fs/libgnunetfs.la \ $(top_builddir)/src/util/libgnunetutil.la \ -lextractor \ $(GN_LIBINTL) diff --git a/src/fs/fs_file_information.c b/src/fs/fs_file_information.c index 01ce6f54b..a633dcb7b 100644 --- a/src/fs/fs_file_information.c +++ b/src/fs/fs_file_information.c @@ -22,10 +22,6 @@ * @file fs/fs_file_information.c * @brief Manage information for publishing directory hierarchies * @author Christian Grothoff - * - * TODO: - * - metadata filename clean up code - * - metadata/ksk generation for directories from contained files */ #include "platform.h" #include @@ -34,61 +30,6 @@ #include "fs_tree.h" -/** - * Add meta data that libextractor finds to our meta data - * container. - * - * @param cls closure, our meta data container - * @param plugin_name name of the plugin that produced this value; - * special values can be used (i.e. '<zlib>' for zlib being - * used in the main libextractor library and yielding - * meta data). - * @param type libextractor-type describing the meta data - * @param format basic format information about data - * @param data_mime_type mime-type of data (not of the original file); - * can be NULL (if mime-type is not known) - * @param data actual meta-data found - * @param data_len number of bytes in data - * @return always 0 to continue extracting - */ -static int -add_to_md (void *cls, const char *plugin_name, enum EXTRACTOR_MetaType type, - enum EXTRACTOR_MetaFormat format, const char *data_mime_type, - const char *data, size_t data_len) -{ - struct GNUNET_CONTAINER_MetaData *md = cls; - - (void) GNUNET_CONTAINER_meta_data_insert (md, plugin_name, type, format, - data_mime_type, data, data_len); - return 0; -} - - -/** - * Extract meta-data from a file. - * - * @return GNUNET_SYSERR on error, otherwise the number - * of meta-data items obtained - */ -int -GNUNET_FS_meta_data_extract_from_file (struct GNUNET_CONTAINER_MetaData *md, - const char *filename, - struct EXTRACTOR_PluginList *extractors) -{ - int old; - - if (filename == NULL) - return GNUNET_SYSERR; - if (extractors == NULL) - return 0; - old = GNUNET_CONTAINER_meta_data_iterate (md, NULL, NULL); - GNUNET_assert (old >= 0); - EXTRACTOR_extract (extractors, filename, NULL, 0, &add_to_md, md); - return (GNUNET_CONTAINER_meta_data_iterate (md, NULL, NULL) - old); -} - - - /** * Obtain the name under which this file information * structure is stored on disk. Only works for top-level diff --git a/src/fs/gnunet-helper-fs-publish.c b/src/fs/gnunet-helper-fs-publish.c index a1a2c1a80..546c2ba88 100644 --- a/src/fs/gnunet-helper-fs-publish.c +++ b/src/fs/gnunet-helper-fs-publish.c @@ -87,6 +87,36 @@ struct ScanTreeNode static struct EXTRACTOR_PluginList *plugins; +/** + * Add meta data that libextractor finds to our meta data + * container. + * + * @param cls closure, our meta data container + * @param plugin_name name of the plugin that produced this value; + * special values can be used (i.e. '<zlib>' for zlib being + * used in the main libextractor library and yielding + * meta data). + * @param type libextractor-type describing the meta data + * @param format basic format information about data + * @param data_mime_type mime-type of data (not of the original file); + * can be NULL (if mime-type is not known) + * @param data actual meta-data found + * @param data_len number of bytes in data + * @return always 0 to continue extracting + */ +static int +add_to_md (void *cls, const char *plugin_name, enum EXTRACTOR_MetaType type, + enum EXTRACTOR_MetaFormat format, const char *data_mime_type, + const char *data, size_t data_len) +{ + struct GNUNET_CONTAINER_MetaData *md = cls; + + (void) GNUNET_CONTAINER_meta_data_insert (md, plugin_name, type, format, + data_mime_type, data, data_len); + return 0; +} + + /** * Free memory of the 'tree' structure * @@ -322,9 +352,8 @@ extract_files (struct ScanTreeNode *item) /* this is the expensive operation, *afterwards* we'll check for aborts */ meta = GNUNET_CONTAINER_meta_data_create (); - GNUNET_FS_meta_data_extract_from_file (meta, - item->filename, - plugins); + if (NULL != plugins) + EXTRACTOR_extract (plugins, item->filename, NULL, 0, &add_to_md, meta); slen = strlen (item->filename) + 1; size = GNUNET_CONTAINER_meta_data_get_serialized_size (meta); if ( (-1 == size) || -- cgit v1.2.3