diff options
Diffstat (limited to 'src/fs/gnunet-fs-gtk_event-handler.c')
-rw-r--r-- | src/fs/gnunet-fs-gtk_event-handler.c | 33 |
1 files changed, 19 insertions, 14 deletions
diff --git a/src/fs/gnunet-fs-gtk_event-handler.c b/src/fs/gnunet-fs-gtk_event-handler.c index 376fba44..f49795cf 100644 --- a/src/fs/gnunet-fs-gtk_event-handler.c +++ b/src/fs/gnunet-fs-gtk_event-handler.c | |||
@@ -391,11 +391,11 @@ start_download (GtkTreeView *tree_view, | |||
391 | de = GNUNET_malloc (sizeof (struct DownloadEntry)); | 391 | de = GNUNET_malloc (sizeof (struct DownloadEntry)); |
392 | de->uri = GNUNET_FS_uri_dup (uri); | 392 | de->uri = GNUNET_FS_uri_dup (uri); |
393 | de->filename = buf; | 393 | de->filename = buf; |
394 | de->meta = GNUNET_CONTAINER_meta_data_duplicate (meta); | ||
395 | de->sr = sr; | 394 | de->sr = sr; |
396 | sr->download = de; | 395 | sr->download = de; |
397 | de->anonymity = anonymity; | 396 | de->anonymity = anonymity; |
398 | de->is_recursive = is_recursive; | 397 | de->is_recursive = is_recursive; |
398 | de->is_directory = GNUNET_FS_meta_data_test_for_directory (meta); | ||
399 | fprintf (stderr, | 399 | fprintf (stderr, |
400 | "lp %d, have-sug: %d\n", | 400 | "lp %d, have-sug: %d\n", |
401 | local_parents, | 401 | local_parents, |
@@ -1710,7 +1710,7 @@ mark_download_progress (struct DownloadEntry *de, uint64_t size, | |||
1710 | -1); | 1710 | -1); |
1711 | if ( (depth == 0) && | 1711 | if ( (depth == 0) && |
1712 | (block_size > 0) && | 1712 | (block_size > 0) && |
1713 | (GNUNET_YES == GNUNET_FS_meta_data_test_for_directory (de->meta)) ) | 1713 | (GNUNET_YES == de->is_directory) ) |
1714 | { | 1714 | { |
1715 | /* got a data block of a directory, list its contents */ | 1715 | /* got a data block of a directory, list its contents */ |
1716 | struct AddDirectoryEntryContext ade; | 1716 | struct AddDirectoryEntryContext ade; |
@@ -1723,9 +1723,7 @@ mark_download_progress (struct DownloadEntry *de, uint64_t size, | |||
1723 | offset, &add_directory_entry, &ade)) | 1723 | offset, &add_directory_entry, &ade)) |
1724 | { | 1724 | { |
1725 | /* Mime type was wrong, this is not a directory, update model! */ | 1725 | /* Mime type was wrong, this is not a directory, update model! */ |
1726 | GNUNET_break (GNUNET_OK == | 1726 | de->is_directory = GNUNET_SYSERR; |
1727 | GNUNET_CONTAINER_meta_data_delete (de->meta, | ||
1728 | EXTRACTOR_METATYPE_MIMETYPE, NULL, 0)); | ||
1729 | gtk_tree_store_set (de->sr->tab->ts, &iter, | 1727 | gtk_tree_store_set (de->sr->tab->ts, &iter, |
1730 | 10, "" /* unknown mime type */, -1); | 1728 | 10, "" /* unknown mime type */, -1); |
1731 | } | 1729 | } |
@@ -1782,7 +1780,7 @@ mark_download_completed (struct DownloadEntry *de, uint64_t size, | |||
1782 | 1780 | ||
1783 | de->is_done = GNUNET_YES; | 1781 | de->is_done = GNUNET_YES; |
1784 | mark_download_progress (de, size, size, NULL, 0, 0, 0); | 1782 | mark_download_progress (de, size, size, NULL, 0, 0, 0); |
1785 | if ( (GNUNET_YES == GNUNET_FS_meta_data_test_for_directory (de->meta)) && | 1783 | if ( (GNUNET_NO != de->is_directory) && |
1786 | (filename != NULL) ) | 1784 | (filename != NULL) ) |
1787 | { | 1785 | { |
1788 | /* download was for a directory (and we have a temp file for scanning); | 1786 | /* download was for a directory (and we have a temp file for scanning); |
@@ -1790,7 +1788,9 @@ mark_download_completed (struct DownloadEntry *de, uint64_t size, | |||
1790 | ade.tab = de->sr->tab; | 1788 | ade.tab = de->sr->tab; |
1791 | ade.prr = de->sr->rr; | 1789 | ade.prr = de->sr->rr; |
1792 | ade.check_duplicates = GNUNET_YES; | 1790 | ade.check_duplicates = GNUNET_YES; |
1793 | GNUNET_FS_GTK_mmap_and_scan (filename, &add_directory_entry, &ade); | 1791 | if (GNUNET_OK != |
1792 | GNUNET_FS_GTK_mmap_and_scan (filename, &add_directory_entry, &ade)) | ||
1793 | de->is_directory = GNUNET_NO; | ||
1794 | } | 1794 | } |
1795 | change_download_color (de, "green"); | 1795 | change_download_color (de, "green"); |
1796 | } | 1796 | } |
@@ -1911,13 +1911,11 @@ download_lost_parent (struct DownloadEntry *de) | |||
1911 | GtkTreeIter iter_old; | 1911 | GtkTreeIter iter_old; |
1912 | GtkTreeIter child; | 1912 | GtkTreeIter child; |
1913 | GtkTreeModel *model; | 1913 | GtkTreeModel *model; |
1914 | struct GNUNET_CONTAINER_MetaData *meta; | ||
1915 | struct GNUNET_FS_Uri *uri; | ||
1914 | 1916 | ||
1915 | /* first, move the root of the respective 'de'-tree */ | 1917 | /* find the 'old' root */ |
1916 | rr_old = de->sr->rr; | 1918 | rr_old = de->sr->rr; |
1917 | de->sr = GNUNET_GTK_add_to_uri_tab (de->meta, de->uri); | ||
1918 | de->sr->download = de; | ||
1919 | |||
1920 | |||
1921 | tm_old = gtk_tree_row_reference_get_model (rr_old); | 1919 | tm_old = gtk_tree_row_reference_get_model (rr_old); |
1922 | path = gtk_tree_row_reference_get_path (rr_old); | 1920 | path = gtk_tree_row_reference_get_path (rr_old); |
1923 | gtk_tree_row_reference_free (rr_old); | 1921 | gtk_tree_row_reference_free (rr_old); |
@@ -1928,7 +1926,16 @@ download_lost_parent (struct DownloadEntry *de) | |||
1928 | return; | 1926 | return; |
1929 | } | 1927 | } |
1930 | gtk_tree_path_free (path); | 1928 | gtk_tree_path_free (path); |
1929 | gtk_tree_model_get (tm_old, &iter_old, | ||
1930 | 0, &meta, | ||
1931 | 1, &uri, | ||
1932 | -1); | ||
1933 | |||
1934 | /* create the target root */ | ||
1935 | de->sr = GNUNET_GTK_add_to_uri_tab (meta, uri); | ||
1936 | de->sr->download = de; | ||
1931 | 1937 | ||
1938 | /* get positions of the 'new' root */ | ||
1932 | model = GTK_TREE_MODEL (de->sr->tab->ts); | 1939 | model = GTK_TREE_MODEL (de->sr->tab->ts); |
1933 | path = gtk_tree_row_reference_get_path (de->sr->rr); | 1940 | path = gtk_tree_row_reference_get_path (de->sr->rr); |
1934 | if (! gtk_tree_model_get_iter (model, &iter, path)) | 1941 | if (! gtk_tree_model_get_iter (model, &iter, path)) |
@@ -1986,8 +1993,6 @@ setup_download (struct DownloadEntry *de, struct DownloadEntry *pde, | |||
1986 | } | 1993 | } |
1987 | de->dc = dc; | 1994 | de->dc = dc; |
1988 | de->pde = pde; | 1995 | de->pde = pde; |
1989 | if ( (meta != NULL) && (de->meta == NULL) ) | ||
1990 | de->meta = GNUNET_CONTAINER_meta_data_duplicate (meta); | ||
1991 | if (NULL != sr) | 1996 | if (NULL != sr) |
1992 | { | 1997 | { |
1993 | /* have a search result, establish mapping de <--> sr */ | 1998 | /* have a search result, establish mapping de <--> sr */ |