aboutsummaryrefslogtreecommitdiff
path: root/src/fs/gnunet-fs-gtk-main_window_file_publish.c
diff options
context:
space:
mode:
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.c38
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,