diff options
Diffstat (limited to 'src/fs/gnunet-fs-gtk-main_window_file_publish.c')
-rw-r--r-- | src/fs/gnunet-fs-gtk-main_window_file_publish.c | 38 |
1 files changed, 23 insertions, 15 deletions
diff --git a/src/fs/gnunet-fs-gtk-main_window_file_publish.c b/src/fs/gnunet-fs-gtk-main_window_file_publish.c index d214d5f4..f542530b 100644 --- a/src/fs/gnunet-fs-gtk-main_window_file_publish.c +++ b/src/fs/gnunet-fs-gtk-main_window_file_publish.c | |||
@@ -526,6 +526,7 @@ extract_file (struct AddDirContext *adc, const char *filename) | |||
526 | GNUNET_CRYPTO_hash (filename, strlen (filename), &hc); | 526 | GNUNET_CRYPTO_hash (filename, strlen (filename), &hc); |
527 | GNUNET_CONTAINER_multihashmap_put (adc->metamap, &hc, pd, | 527 | GNUNET_CONTAINER_multihashmap_put (adc->metamap, &hc, pd, |
528 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY); | 528 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY); |
529 | /* FIXME: what if this put fails? I think it actually can... Why unique only? */ | ||
529 | GNUNET_CONTAINER_meta_data_iterate (pd->meta, &add_to_meta_counter, | 530 | GNUNET_CONTAINER_meta_data_iterate (pd->meta, &add_to_meta_counter, |
530 | adc->metacounter); | 531 | adc->metacounter); |
531 | } | 532 | } |
@@ -745,6 +746,9 @@ scan_directory (void *cls, const char *filename) | |||
745 | struct GNUNET_CONTAINER_MultiHashMap *mhm; | 746 | struct GNUNET_CONTAINER_MultiHashMap *mhm; |
746 | struct GNUNET_CONTAINER_MultiHashMap *mcm; | 747 | struct GNUNET_CONTAINER_MultiHashMap *mcm; |
747 | unsigned int pc; | 748 | unsigned int pc; |
749 | const char *ss; | ||
750 | const char *short_fn; | ||
751 | const char *user; | ||
748 | 752 | ||
749 | if (0 != STAT (filename, &sbuf)) | 753 | if (0 != STAT (filename, &sbuf)) |
750 | return GNUNET_OK; | 754 | return GNUNET_OK; |
@@ -769,30 +773,33 @@ scan_directory (void *cls, const char *filename) | |||
769 | adc->metacounter = mcm; | 773 | adc->metacounter = mcm; |
770 | adc->parent = parent; | 774 | adc->parent = parent; |
771 | adc->dir_entry_count = pc + 1; | 775 | adc->dir_entry_count = pc + 1; |
776 | short_fn = filename; | ||
777 | while ( (NULL != (ss = strstr (short_fn, DIR_SEPARATOR_STR))) && | ||
778 | (ss[1] != '\0') ) | ||
779 | short_fn = 1 + ss; | ||
780 | user = getenv ("USER"); | ||
781 | if ( (user == NULL) || | ||
782 | (0 != strncasecmp (user, | ||
783 | short_fn, | ||
784 | strlen(user))) ) | ||
785 | { | ||
786 | /* only use filename if it doesn't match $USER */ | ||
787 | GNUNET_CONTAINER_meta_data_insert (pd->meta, "<gnunet-gtk>", | ||
788 | EXTRACTOR_METATYPE_FILENAME, | ||
789 | EXTRACTOR_METAFORMAT_UTF8, | ||
790 | "text/plain", short_fn, | ||
791 | strlen (short_fn) + 1); | ||
792 | } | ||
772 | if (adc->metamap != NULL) | 793 | if (adc->metamap != NULL) |
773 | { | 794 | { |
774 | GNUNET_CRYPTO_hash (filename, strlen (filename), &hc); | 795 | GNUNET_CRYPTO_hash (filename, strlen (filename), &hc); |
775 | GNUNET_CONTAINER_multihashmap_put (adc->metamap, &hc, pd, | 796 | GNUNET_CONTAINER_multihashmap_put (adc->metamap, &hc, pd, |
776 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY); | 797 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY); |
798 | /* FIXME: what if this put fails? I think it actually can... Why unique only? */ | ||
777 | GNUNET_CONTAINER_meta_data_iterate (pd->meta, &add_to_meta_counter, mcm); | 799 | GNUNET_CONTAINER_meta_data_iterate (pd->meta, &add_to_meta_counter, mcm); |
778 | } | 800 | } |
779 | else | 801 | else |
780 | { | 802 | { |
781 | char *filename_utf8; | ||
782 | const char *ss, *short_fn; | ||
783 | |||
784 | GNUNET_assert (mcm == NULL); | ||
785 | /* we're top-level */ | ||
786 | short_fn = filename; | ||
787 | while (NULL != (ss = strstr (short_fn, DIR_SEPARATOR_STR))) | ||
788 | short_fn = 1 + ss; | ||
789 | filename_utf8 = GNUNET_GTK_from_loc_to_utf8 ((char *) short_fn); | ||
790 | GNUNET_CONTAINER_meta_data_insert (pd->meta, "<gnunet-gtk>", | ||
791 | EXTRACTOR_METATYPE_FILENAME, | ||
792 | EXTRACTOR_METAFORMAT_UTF8, | ||
793 | "text/plain", filename_utf8, | ||
794 | strlen (filename_utf8) + 1); | ||
795 | GNUNET_free_non_null (filename_utf8); | ||
796 | add_entry_to_ts (adc->ts, &pd->iter, filename, &adc->bo, adc->do_index, | 803 | add_entry_to_ts (adc->ts, &pd->iter, filename, &adc->bo, adc->do_index, |
797 | NULL, pd->meta); | 804 | NULL, pd->meta); |
798 | } | 805 | } |
@@ -1540,6 +1547,7 @@ add_updateable_to_ts (void *cls, const char *last_id, | |||
1540 | return; | 1547 | return; |
1541 | GNUNET_CONTAINER_multihashmap_put (uc->seen, &hc, "dummy", | 1548 | GNUNET_CONTAINER_multihashmap_put (uc->seen, &hc, "dummy", |
1542 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST); | 1549 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST); |
1550 | /* FIXME: what if this put fails? Not convinced it cannot... */ | ||
1543 | desc = | 1551 | desc = |
1544 | GNUNET_CONTAINER_meta_data_get_first_by_types (last_meta, | 1552 | GNUNET_CONTAINER_meta_data_get_first_by_types (last_meta, |
1545 | EXTRACTOR_METATYPE_DESCRIPTION, | 1553 | EXTRACTOR_METATYPE_DESCRIPTION, |