aboutsummaryrefslogtreecommitdiff
path: root/src/fs
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2012-01-29 21:41:24 +0000
committerChristian Grothoff <christian@grothoff.org>2012-01-29 21:41:24 +0000
commit6756773dbc5aee6135ba8067cbf67aaf48cbfaf6 (patch)
tree9dd6bfb42ed814653a2e622923332db54b007a7d /src/fs
parent68401426269d202ae48d4942842f365198886c57 (diff)
downloadgnunet-6756773dbc5aee6135ba8067cbf67aaf48cbfaf6.tar.gz
gnunet-6756773dbc5aee6135ba8067cbf67aaf48cbfaf6.zip
-fs publish should basically work now
Diffstat (limited to 'src/fs')
-rw-r--r--src/fs/fs_dirmetascan.c16
-rw-r--r--src/fs/fs_sharetree.c9
-rw-r--r--src/fs/gnunet-helper-fs-publish.c2
3 files changed, 16 insertions, 11 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
95GNUNET_FS_directory_scan_abort (struct GNUNET_FS_DirScanner *ds) 95GNUNET_FS_directory_scan_abort (struct GNUNET_FS_DirScanner *ds)
96{ 96{
97 /* terminate helper */ 97 /* terminate helper */
98 GNUNET_HELPER_stop (ds->helper); 98 if (NULL != ds->helper)
99 99 GNUNET_HELPER_stop (ds->helper);
100
100 /* free resources */ 101 /* free resources */
101 if (NULL != ds->toplevel) 102 if (NULL != ds->toplevel)
102 GNUNET_FS_share_tree_free (ds->toplevel); 103 GNUNET_FS_share_tree_free (ds->toplevel);
@@ -190,6 +191,7 @@ expand_tree (struct GNUNET_FS_ShareTreeItem *parent,
190 chld = GNUNET_malloc (sizeof (struct GNUNET_FS_ShareTreeItem)); 191 chld = GNUNET_malloc (sizeof (struct GNUNET_FS_ShareTreeItem));
191 chld->parent = parent; 192 chld->parent = parent;
192 chld->filename = GNUNET_strdup (filename); 193 chld->filename = GNUNET_strdup (filename);
194 chld->short_filename = GNUNET_strdup (GNUNET_STRINGS_get_short_name (filename));
193 chld->is_directory = is_directory; 195 chld->is_directory = is_directory;
194 if (NULL != parent) 196 if (NULL != parent)
195 GNUNET_CONTAINER_DLL_insert (parent->children_head, 197 GNUNET_CONTAINER_DLL_insert (parent->children_head,
@@ -300,10 +302,6 @@ process_helper_msgs (void *cls,
300 if (0 != strcmp (filename, 302 if (0 != strcmp (filename,
301 ds->pos->filename)) 303 ds->pos->filename))
302 { 304 {
303 fprintf (stderr,
304 "Expected `%s', got `%s'\n",
305 ds->pos->filename,
306 filename);
307 GNUNET_break (0); 305 GNUNET_break (0);
308 break; 306 break;
309 } 307 }
@@ -319,7 +317,6 @@ process_helper_msgs (void *cls,
319 break; 317 break;
320 } 318 }
321 /* having full filenames is too dangerous; always make sure we clean them up */ 319 /* having full filenames is too dangerous; always make sure we clean them up */
322 ds->pos->short_filename = GNUNET_strdup (GNUNET_STRINGS_get_short_name (filename));
323 GNUNET_CONTAINER_meta_data_delete (ds->pos->meta, 320 GNUNET_CONTAINER_meta_data_delete (ds->pos->meta,
324 EXTRACTOR_METATYPE_FILENAME, 321 EXTRACTOR_METATYPE_FILENAME,
325 NULL, 0); 322 NULL, 0);
@@ -343,10 +340,11 @@ process_helper_msgs (void *cls,
343 GNUNET_break (0); 340 GNUNET_break (0);
344 break; 341 break;
345 } 342 }
343 GNUNET_HELPER_stop (ds->helper);
344 ds->helper = NULL;
346 ds->progress_callback (ds->progress_callback_cls, 345 ds->progress_callback (ds->progress_callback_cls,
347 NULL, GNUNET_SYSERR, 346 NULL, GNUNET_SYSERR,
348 GNUNET_FS_DIRSCANNER_INTERNAL_ERROR); 347 GNUNET_FS_DIRSCANNER_FINISHED);
349
350 return; 348 return;
351 default: 349 default:
352 GNUNET_break (0); 350 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)
305 struct MetaCounter *counter = value; 305 struct MetaCounter *counter = value;
306 306
307 if (counter->count >= tc->move_threshold) 307 if (counter->count >= tc->move_threshold)
308 {
309 if (NULL == tc->pos->meta)
310 tc->pos->meta = GNUNET_CONTAINER_meta_data_create ();
308 GNUNET_CONTAINER_meta_data_insert (tc->pos->meta, 311 GNUNET_CONTAINER_meta_data_insert (tc->pos->meta,
309 counter->plugin_name, 312 counter->plugin_name,
310 counter->type, 313 counter->type,
311 counter->format, 314 counter->format,
312 counter->data_mime_type, counter->data, 315 counter->data_mime_type, counter->data,
313 counter->data_size); 316 counter->data_size);
317 }
314 GNUNET_assert (GNUNET_YES == 318 GNUNET_assert (GNUNET_YES ==
315 GNUNET_CONTAINER_multihashmap_remove (tc->metacounter, 319 GNUNET_CONTAINER_multihashmap_remove (tc->metacounter,
316 key, 320 key,
@@ -350,6 +354,8 @@ share_tree_trim (struct TrimContext *tc,
350 (0 != strncasecmp (user, tree->short_filename, strlen(user)))) 354 (0 != strncasecmp (user, tree->short_filename, strlen(user))))
351 { 355 {
352 /* only use filename if it doesn't match $USER */ 356 /* only use filename if it doesn't match $USER */
357 if (NULL == tree->meta)
358 tree->meta = GNUNET_CONTAINER_meta_data_create ();
353 GNUNET_CONTAINER_meta_data_insert (tree->meta, "<libgnunetfs>", 359 GNUNET_CONTAINER_meta_data_insert (tree->meta, "<libgnunetfs>",
354 EXTRACTOR_METATYPE_GNUNET_ORIGINAL_FILENAME, 360 EXTRACTOR_METATYPE_GNUNET_ORIGINAL_FILENAME,
355 EXTRACTOR_METAFORMAT_UTF8, 361 EXTRACTOR_METAFORMAT_UTF8,
@@ -364,7 +370,8 @@ share_tree_trim (struct TrimContext *tc,
364 /* now, count keywords and meta data in children */ 370 /* now, count keywords and meta data in children */
365 for (pos = tree->children_head; NULL != pos; pos = pos->next) 371 for (pos = tree->children_head; NULL != pos; pos = pos->next)
366 { 372 {
367 GNUNET_CONTAINER_meta_data_iterate (pos->meta, &add_to_meta_counter, tc->metacounter); 373 if (NULL != pos->meta)
374 GNUNET_CONTAINER_meta_data_iterate (pos->meta, &add_to_meta_counter, tc->metacounter);
368 if (NULL != pos->ksk_uri) 375 if (NULL != pos->ksk_uri)
369 GNUNET_FS_uri_ksk_get_keywords (pos->ksk_uri, &add_to_keyword_counter, tc->keywordcounter); 376 GNUNET_FS_uri_ksk_get_keywords (pos->ksk_uri, &add_to_keyword_counter, tc->keywordcounter);
370 } 377 }
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)
340 } 340 }
341 { 341 {
342 char buf[size + slen]; 342 char buf[size + slen];
343 char *dst = buf; 343 char *dst = &buf[slen];
344 344
345 memcpy (buf, item->filename, slen); 345 memcpy (buf, item->filename, slen);
346 size = GNUNET_CONTAINER_meta_data_serialize (meta, 346 size = GNUNET_CONTAINER_meta_data_serialize (meta,