[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r19684 - gnunet-gtk/src/fs
From: |
gnunet |
Subject: |
[GNUnet-SVN] r19684 - gnunet-gtk/src/fs |
Date: |
Sat, 4 Feb 2012 21:01:36 +0100 |
Author: grothoff
Date: 2012-02-04 21:01:36 +0100 (Sat, 04 Feb 2012)
New Revision: 19684
Modified:
gnunet-gtk/src/fs/gnunet-fs-gtk_common.c
gnunet-gtk/src/fs/gnunet-fs-gtk_common.h
gnunet-gtk/src/fs/gnunet-fs-gtk_download-save-as.c
gnunet-gtk/src/fs/gnunet-fs-gtk_event-handler.c
gnunet-gtk/src/fs/gnunet-fs-gtk_event-handler.h
Log:
-also eliminate 'meta' field in DownloadEntry, can be obtained from sr's tree
model
Modified: gnunet-gtk/src/fs/gnunet-fs-gtk_common.c
===================================================================
--- gnunet-gtk/src/fs/gnunet-fs-gtk_common.c 2012-02-04 19:47:27 UTC (rev
19683)
+++ gnunet-gtk/src/fs/gnunet-fs-gtk_common.c 2012-02-04 20:01:36 UTC (rev
19684)
@@ -192,8 +192,9 @@
* @param filename name with the directory
* @param dep function to call on each entry
* @param dep_cls closure for 'dep'
+ * @return GNUNET_OK on success
*/
-void
+int
GNUNET_FS_GTK_mmap_and_scan (const char *filename,
GNUNET_FS_DirectoryEntryProcessor dep,
void *dep_cls)
@@ -202,23 +203,24 @@
struct GNUNET_DISK_MapHandle *mh;
uint64_t fsize;
void *ddata;
+ int ret;
if (GNUNET_OK != GNUNET_DISK_file_size (filename, &fsize, GNUNET_YES))
{
GNUNET_break (0);
- return;
+ return GNUNET_SYSERR;
}
if (NULL == (fh = GNUNET_DISK_file_open (filename, GNUNET_DISK_OPEN_READ,
GNUNET_DISK_PERM_NONE)))
{
GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_ERROR, "open", filename);
- return;
+ return GNUNET_SYSERR;
}
if (NULL == (ddata = GNUNET_DISK_file_map (fh, &mh,
GNUNET_DISK_MAP_TYPE_READ, (size_t) fsize)))
{
GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_ERROR, "mmap", filename);
GNUNET_break (GNUNET_OK == GNUNET_DISK_file_close (fh));
- return;
+ return GNUNET_SYSERR;
}
if (GNUNET_SYSERR ==
GNUNET_FS_directory_list_contents ((size_t) fsize, ddata, 0, dep,
@@ -226,9 +228,15 @@
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
_("Selected file `%s' is not a GNUnet directory!\n"),
filename);
+ ret = GNUNET_SYSERR;
}
+ else
+ {
+ ret = GNUNET_OK;
+ }
GNUNET_break (GNUNET_OK == GNUNET_DISK_file_unmap (mh));
GNUNET_break (GNUNET_OK == GNUNET_DISK_file_close (fh));
+ return ret;
}
Modified: gnunet-gtk/src/fs/gnunet-fs-gtk_common.h
===================================================================
--- gnunet-gtk/src/fs/gnunet-fs-gtk_common.h 2012-02-04 19:47:27 UTC (rev
19683)
+++ gnunet-gtk/src/fs/gnunet-fs-gtk_common.h 2012-02-04 20:01:36 UTC (rev
19684)
@@ -73,8 +73,9 @@
* @param filename name with the directory
* @param dep function to call on each entry
* @param dep_cls closure for 'dep'
+ * @return GNUNET_OK on success
*/
-void
+int
GNUNET_FS_GTK_mmap_and_scan (const char *filename,
GNUNET_FS_DirectoryEntryProcessor dep,
void *dep_cls);
Modified: gnunet-gtk/src/fs/gnunet-fs-gtk_download-save-as.c
===================================================================
--- gnunet-gtk/src/fs/gnunet-fs-gtk_download-save-as.c 2012-02-04 19:47:27 UTC
(rev 19683)
+++ gnunet-gtk/src/fs/gnunet-fs-gtk_download-save-as.c 2012-02-04 20:01:36 UTC
(rev 19684)
@@ -67,8 +67,6 @@
de->sr->download = NULL;
}
GNUNET_free_non_null (de->filename);
- if (NULL != de->meta)
- GNUNET_CONTAINER_meta_data_destroy (de->meta);
GNUNET_FS_uri_destroy (de->uri);
GNUNET_free (de);
}
@@ -176,7 +174,7 @@
set recursive 'default' value based on what the 'dc' tells us */
cb = GTK_WIDGET (gtk_builder_get_object
(dlc->builder,
"GNUNET_GTK_save_as_recursive_check_button"));
- if (GNUNET_FS_meta_data_test_for_directory (de->meta))
+ if (GNUNET_NO != de->is_directory)
gtk_widget_set_sensitive (cb, TRUE);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (cb),
de->is_recursive);
@@ -247,7 +245,7 @@
GNUNET_break (NULL !=
GNUNET_FS_download_start (fs,
de->uri,
- de->meta,
+ NULL /* meta data */,
de->filename, NULL /* tempname */ ,
0 /* offset */ ,
len,
Modified: gnunet-gtk/src/fs/gnunet-fs-gtk_event-handler.c
===================================================================
--- gnunet-gtk/src/fs/gnunet-fs-gtk_event-handler.c 2012-02-04 19:47:27 UTC
(rev 19683)
+++ gnunet-gtk/src/fs/gnunet-fs-gtk_event-handler.c 2012-02-04 20:01:36 UTC
(rev 19684)
@@ -391,11 +391,11 @@
de = GNUNET_malloc (sizeof (struct DownloadEntry));
de->uri = GNUNET_FS_uri_dup (uri);
de->filename = buf;
- de->meta = GNUNET_CONTAINER_meta_data_duplicate (meta);
de->sr = sr;
sr->download = de;
de->anonymity = anonymity;
de->is_recursive = is_recursive;
+ de->is_directory = GNUNET_FS_meta_data_test_for_directory (meta);
fprintf (stderr,
"lp %d, have-sug: %d\n",
local_parents,
@@ -1710,7 +1710,7 @@
-1);
if ( (depth == 0) &&
(block_size > 0) &&
- (GNUNET_YES == GNUNET_FS_meta_data_test_for_directory (de->meta)) )
+ (GNUNET_YES == de->is_directory) )
{
/* got a data block of a directory, list its contents */
struct AddDirectoryEntryContext ade;
@@ -1723,9 +1723,7 @@
offset, &add_directory_entry, &ade))
{
/* Mime type was wrong, this is not a directory, update model! */
- GNUNET_break (GNUNET_OK ==
- GNUNET_CONTAINER_meta_data_delete (de->meta,
-
EXTRACTOR_METATYPE_MIMETYPE, NULL, 0));
+ de->is_directory = GNUNET_SYSERR;
gtk_tree_store_set (de->sr->tab->ts, &iter,
10, "" /* unknown mime type */, -1);
}
@@ -1782,7 +1780,7 @@
de->is_done = GNUNET_YES;
mark_download_progress (de, size, size, NULL, 0, 0, 0);
- if ( (GNUNET_YES == GNUNET_FS_meta_data_test_for_directory (de->meta)) &&
+ if ( (GNUNET_NO != de->is_directory) &&
(filename != NULL) )
{
/* download was for a directory (and we have a temp file for scanning);
@@ -1790,7 +1788,9 @@
ade.tab = de->sr->tab;
ade.prr = de->sr->rr;
ade.check_duplicates = GNUNET_YES;
- GNUNET_FS_GTK_mmap_and_scan (filename, &add_directory_entry, &ade);
+ if (GNUNET_OK !=
+ GNUNET_FS_GTK_mmap_and_scan (filename, &add_directory_entry, &ade))
+ de->is_directory = GNUNET_NO;
}
change_download_color (de, "green");
}
@@ -1911,13 +1911,11 @@
GtkTreeIter iter_old;
GtkTreeIter child;
GtkTreeModel *model;
+ struct GNUNET_CONTAINER_MetaData *meta;
+ struct GNUNET_FS_Uri *uri;
- /* first, move the root of the respective 'de'-tree */
+ /* find the 'old' root */
rr_old = de->sr->rr;
- de->sr = GNUNET_GTK_add_to_uri_tab (de->meta, de->uri);
- de->sr->download = de;
-
-
tm_old = gtk_tree_row_reference_get_model (rr_old);
path = gtk_tree_row_reference_get_path (rr_old);
gtk_tree_row_reference_free (rr_old);
@@ -1928,7 +1926,16 @@
return;
}
gtk_tree_path_free (path);
+ gtk_tree_model_get (tm_old, &iter_old,
+ 0, &meta,
+ 1, &uri,
+ -1);
+
+ /* create the target root */
+ de->sr = GNUNET_GTK_add_to_uri_tab (meta, uri);
+ de->sr->download = de;
+ /* get positions of the 'new' root */
model = GTK_TREE_MODEL (de->sr->tab->ts);
path = gtk_tree_row_reference_get_path (de->sr->rr);
if (! gtk_tree_model_get_iter (model, &iter, path))
@@ -1986,8 +1993,6 @@
}
de->dc = dc;
de->pde = pde;
- if ( (meta != NULL) && (de->meta == NULL) )
- de->meta = GNUNET_CONTAINER_meta_data_duplicate (meta);
if (NULL != sr)
{
/* have a search result, establish mapping de <--> sr */
Modified: gnunet-gtk/src/fs/gnunet-fs-gtk_event-handler.h
===================================================================
--- gnunet-gtk/src/fs/gnunet-fs-gtk_event-handler.h 2012-02-04 19:47:27 UTC
(rev 19683)
+++ gnunet-gtk/src/fs/gnunet-fs-gtk_event-handler.h 2012-02-04 20:01:36 UTC
(rev 19684)
@@ -147,13 +147,6 @@
struct GNUNET_FS_Uri *uri;
/**
- * Meta data for the download, can be NULL (i.e. for download
- * by URI). In that case, we'll need to figure out if the
- * result is a directory later!
- */
- struct GNUNET_CONTAINER_MetaData *meta;
-
- /**
* Suggested (or selected) filename for the download on the
* local disk, or NULL for on suggestion.
*/
@@ -165,6 +158,11 @@
int is_recursive;
/**
+ * Is this a directory? (GNUNET_SYSERR is used for "maybe"!)
+ */
+ int is_directory;
+
+ /**
* Desired (default) anonymity level.
*/
uint32_t anonymity;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r19684 - gnunet-gtk/src/fs,
gnunet <=