gnunet-svn
[Top][All Lists]
Advanced

[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;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]