From 6756773dbc5aee6135ba8067cbf67aaf48cbfaf6 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Sun, 29 Jan 2012 21:41:24 +0000 Subject: [PATCH] -fs publish should basically work now --- src/fs/fs_dirmetascan.c | 16 +++++++--------- src/fs/fs_sharetree.c | 9 ++++++++- src/fs/gnunet-helper-fs-publish.c | 2 +- src/include/gnunet_fs_service.h | 2 +- 4 files changed, 17 insertions(+), 12 deletions(-) diff --git a/src/fs/fs_dirmetascan.c b/src/fs/fs_dirmetascan.c index 35e95c00b..5ffa69229 100644 --- a/src/fs/fs_dirmetascan.c +++ b/src/fs/fs_dirmetascan.c @@ -95,8 +95,9 @@ void GNUNET_FS_directory_scan_abort (struct GNUNET_FS_DirScanner *ds) { /* terminate helper */ - GNUNET_HELPER_stop (ds->helper); - + if (NULL != ds->helper) + GNUNET_HELPER_stop (ds->helper); + /* free resources */ if (NULL != ds->toplevel) GNUNET_FS_share_tree_free (ds->toplevel); @@ -190,6 +191,7 @@ expand_tree (struct GNUNET_FS_ShareTreeItem *parent, chld = GNUNET_malloc (sizeof (struct GNUNET_FS_ShareTreeItem)); chld->parent = parent; chld->filename = GNUNET_strdup (filename); + chld->short_filename = GNUNET_strdup (GNUNET_STRINGS_get_short_name (filename)); chld->is_directory = is_directory; if (NULL != parent) GNUNET_CONTAINER_DLL_insert (parent->children_head, @@ -300,10 +302,6 @@ process_helper_msgs (void *cls, if (0 != strcmp (filename, ds->pos->filename)) { - fprintf (stderr, - "Expected `%s', got `%s'\n", - ds->pos->filename, - filename); GNUNET_break (0); break; } @@ -319,7 +317,6 @@ process_helper_msgs (void *cls, break; } /* having full filenames is too dangerous; always make sure we clean them up */ - ds->pos->short_filename = GNUNET_strdup (GNUNET_STRINGS_get_short_name (filename)); GNUNET_CONTAINER_meta_data_delete (ds->pos->meta, EXTRACTOR_METATYPE_FILENAME, NULL, 0); @@ -343,10 +340,11 @@ process_helper_msgs (void *cls, GNUNET_break (0); break; } + GNUNET_HELPER_stop (ds->helper); + ds->helper = NULL; ds->progress_callback (ds->progress_callback_cls, NULL, GNUNET_SYSERR, - GNUNET_FS_DIRSCANNER_INTERNAL_ERROR); - + GNUNET_FS_DIRSCANNER_FINISHED); return; default: GNUNET_break (0); diff --git a/src/fs/fs_sharetree.c b/src/fs/fs_sharetree.c index 8660c8958..a876dac99 100644 --- a/src/fs/fs_sharetree.c +++ b/src/fs/fs_sharetree.c @@ -305,12 +305,16 @@ migrate_and_drop_metadata (void *cls, const GNUNET_HashCode * key, void *value) struct MetaCounter *counter = value; if (counter->count >= tc->move_threshold) + { + if (NULL == tc->pos->meta) + tc->pos->meta = GNUNET_CONTAINER_meta_data_create (); GNUNET_CONTAINER_meta_data_insert (tc->pos->meta, counter->plugin_name, counter->type, counter->format, counter->data_mime_type, counter->data, counter->data_size); + } GNUNET_assert (GNUNET_YES == GNUNET_CONTAINER_multihashmap_remove (tc->metacounter, key, @@ -350,6 +354,8 @@ share_tree_trim (struct TrimContext *tc, (0 != strncasecmp (user, tree->short_filename, strlen(user)))) { /* only use filename if it doesn't match $USER */ + if (NULL == tree->meta) + tree->meta = GNUNET_CONTAINER_meta_data_create (); GNUNET_CONTAINER_meta_data_insert (tree->meta, "", EXTRACTOR_METATYPE_GNUNET_ORIGINAL_FILENAME, EXTRACTOR_METAFORMAT_UTF8, @@ -364,7 +370,8 @@ share_tree_trim (struct TrimContext *tc, /* now, count keywords and meta data in children */ for (pos = tree->children_head; NULL != pos; pos = pos->next) { - GNUNET_CONTAINER_meta_data_iterate (pos->meta, &add_to_meta_counter, tc->metacounter); + if (NULL != pos->meta) + GNUNET_CONTAINER_meta_data_iterate (pos->meta, &add_to_meta_counter, tc->metacounter); if (NULL != pos->ksk_uri) GNUNET_FS_uri_ksk_get_keywords (pos->ksk_uri, &add_to_keyword_counter, tc->keywordcounter); } diff --git a/src/fs/gnunet-helper-fs-publish.c b/src/fs/gnunet-helper-fs-publish.c index 7accf79ac..a1a2c1a80 100644 --- a/src/fs/gnunet-helper-fs-publish.c +++ b/src/fs/gnunet-helper-fs-publish.c @@ -340,7 +340,7 @@ extract_files (struct ScanTreeNode *item) } { char buf[size + slen]; - char *dst = buf; + char *dst = &buf[slen]; memcpy (buf, item->filename, slen); size = GNUNET_CONTAINER_meta_data_serialize (meta, diff --git a/src/include/gnunet_fs_service.h b/src/include/gnunet_fs_service.h index e723d6457..a984d8a2d 100644 --- a/src/include/gnunet_fs_service.h +++ b/src/include/gnunet_fs_service.h @@ -2703,7 +2703,7 @@ struct GNUNET_FS_ShareTreeItem char *filename; /** - * Base name of the file/directory; FIXME: needed? + * Base name of the file/directory. */ char *short_filename; -- 2.25.1