-remove trailing whitespace
[oweals/gnunet.git] / src / fs / fs_api.c
index ab49139b9b9b2d497e54bbec82498aa689140e55..04057bc9881575e0584e1918f179a46ba9312778 100644 (file)
@@ -164,7 +164,7 @@ process_job_queue (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
       run_time = GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 2);
       end_time = GNUNET_TIME_absolute_add (qe->start_time, run_time);
       rst = GNUNET_TIME_absolute_get_remaining (end_time);
-      if (0 == rst.rel_value)
+      if (0 == rst.rel_value_us)
       {
        num_probes_expired++;
        stop_job (qe);
@@ -181,7 +181,7 @@ process_job_queue (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
                                        qe->blocks * qe->start_times);
       end_time = GNUNET_TIME_absolute_add (qe->start_time, run_time);
       rst = GNUNET_TIME_absolute_get_remaining (end_time);
-      if (0 == rst.rel_value)
+      if (0 == rst.rel_value_us)
       {
        num_downloads_expired++;
        stop_job (qe);
@@ -211,8 +211,8 @@ process_job_queue (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
     /* stop probes if possible */
     num_probes_change = - num_probes_active;
     num_downloads_change = h->max_parallel_requests - h->active_downloads;
-  } 
-  else 
+  }
+  else
   {
     /* start all downloads */
     num_downloads_change = num_downloads_waiting;
@@ -220,7 +220,7 @@ process_job_queue (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
     num_probes_change = GNUNET_MIN (num_probes_waiting,
                                    h->max_parallel_requests - (h->active_downloads + num_downloads_waiting));
   }
-       
+
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
              "Changing %d probes and %d downloads\n",
              num_probes_change,
@@ -232,7 +232,7 @@ process_job_queue (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
     next = qe->next;
     if (GNUNET_FS_QUEUE_PRIORITY_PROBE != qe->priority)
       continue;
-    if (num_probes_change < 0) 
+    if (num_probes_change < 0)
     {
       stop_job (qe);
       num_probes_change++;
@@ -266,7 +266,7 @@ process_job_queue (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
           ( (qe->blocks + h->active_blocks <= h->max_parallel_requests) ||
             ( (qe->blocks > h->max_parallel_requests) &&
               (0 == h->active_downloads) ) ) )
-      {    
+      {
        start_job (qe);
        num_downloads_change--;
       }
@@ -284,7 +284,7 @@ process_job_queue (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
              "AD: %u, MP: %u; %d probes and %d downloads to start, will run again in %s\n",
              h->active_downloads,
-             h->max_parallel_requests,       
+             h->max_parallel_requests, 
              num_probes_change,
              num_downloads_change,
              GNUNET_STRINGS_relative_time_to_string (restart_at, GNUNET_YES));
@@ -467,7 +467,7 @@ GNUNET_FS_data_reader_file_ (void *cls, uint64_t offset, size_t max, void *buf,
       return 0;
     }
   }
-  if ( (GNUNET_SYSERR == 
+  if ( (GNUNET_SYSERR ==
        GNUNET_DISK_file_seek (fi->fd, offset, GNUNET_DISK_SEEK_SET)) ||
        (-1 == (ret = GNUNET_DISK_file_read (fi->fd, buf, max))) )
   {
@@ -496,7 +496,7 @@ GNUNET_FS_make_file_reader_context_ (const char *filename)
 {
   struct FileInfo *fi;
 
-  fi = GNUNET_malloc (sizeof (struct FileInfo));
+  fi = GNUNET_new (struct FileInfo);
   fi->filename = GNUNET_STRINGS_filename_expand (filename);
   if (NULL == fi->filename)
   {
@@ -781,7 +781,7 @@ write_start_time (struct GNUNET_BIO_WriteHandle *wh,
   struct GNUNET_TIME_Relative dur;
 
   dur = GNUNET_TIME_absolute_get_duration (timestamp);
-  return GNUNET_BIO_write_int64 (wh, dur.rel_value);
+  return GNUNET_BIO_write_int64 (wh, dur.rel_value_us);
 }
 
 
@@ -805,7 +805,7 @@ read_start_time (struct GNUNET_BIO_ReadHandle *rh,
 {
   struct GNUNET_TIME_Relative dur;
 
-  if (GNUNET_OK != GNUNET_BIO_read_int64 (rh, &dur.rel_value))
+  if (GNUNET_OK != GNUNET_BIO_read_int64 (rh, &dur.rel_value_us))
     return GNUNET_SYSERR;
   *timestamp = GNUNET_TIME_absolute_subtract (GNUNET_TIME_absolute_get (), dur);
   return GNUNET_OK;
@@ -871,7 +871,7 @@ deserialize_fi_node (struct GNUNET_FS_Handle *h, const char *fn,
       || (GNUNET_OK !=
           GNUNET_BIO_read_string (rh, "fn", &ret->filename, 16 * 1024)) ||
       (GNUNET_OK !=
-       GNUNET_BIO_read_int64 (rh, &ret->bo.expiration_time.abs_value)) ||
+       GNUNET_BIO_read_int64 (rh, &ret->bo.expiration_time.abs_value_us)) ||
       (GNUNET_OK != GNUNET_BIO_read_int32 (rh, &ret->bo.anonymity_level)) ||
       (GNUNET_OK != GNUNET_BIO_read_int32 (rh, &ret->bo.content_priority)) ||
       (GNUNET_OK != GNUNET_BIO_read_int32 (rh, &ret->bo.replication_level)))
@@ -1044,7 +1044,8 @@ cleanup:
  * @return NULL on error
  */
 static struct GNUNET_FS_FileInformation *
-deserialize_file_information (struct GNUNET_FS_Handle *h, const char *filename)
+deserialize_file_information (struct GNUNET_FS_Handle *h,
+                             const char *filename)
 {
   struct GNUNET_FS_FileInformation *ret;
   struct GNUNET_BIO_ReadHandle *rh;
@@ -1187,7 +1188,7 @@ make_serialization_file_name_in_dir (struct GNUNET_FS_Handle *h,
  *
  * @param wh write handle
  * @param fi file with reader
- * @return GNUNET_OK on success
+ * @return #GNUNET_OK on success
  */
 static int
 copy_from_reader (struct GNUNET_BIO_WriteHandle *wh,
@@ -1273,7 +1274,7 @@ GNUNET_FS_file_information_sync_ (struct GNUNET_FS_FileInformation *fi)
       (GNUNET_OK != GNUNET_BIO_write_string (wh, fi->emsg)) ||
       (GNUNET_OK != GNUNET_BIO_write_string (wh, fi->filename)) ||
       (GNUNET_OK !=
-       GNUNET_BIO_write_int64 (wh, fi->bo.expiration_time.abs_value)) ||
+       GNUNET_BIO_write_int64 (wh, fi->bo.expiration_time.abs_value_us)) ||
       (GNUNET_OK != GNUNET_BIO_write_int32 (wh, fi->bo.anonymity_level)) ||
       (GNUNET_OK != GNUNET_BIO_write_int32 (wh, fi->bo.content_priority)) ||
       (GNUNET_OK != GNUNET_BIO_write_int32 (wh, fi->bo.replication_level)))
@@ -1330,6 +1331,9 @@ GNUNET_FS_file_information_sync_ (struct GNUNET_FS_FileInformation *fi)
     }
     break;
   case 4:                      /* directory */
+    if ( (NULL != fi->data.dir.entries) &&
+        (NULL == fi->data.dir.entries->serialization) )
+      GNUNET_FS_file_information_sync_ (fi->data.dir.entries);
     if ((GNUNET_OK != GNUNET_BIO_write_int32 (wh, fi->data.dir.dir_size)) ||
         (GNUNET_OK !=
          GNUNET_BIO_write (wh, fi->data.dir.dir_data,
@@ -1348,6 +1352,9 @@ GNUNET_FS_file_information_sync_ (struct GNUNET_FS_FileInformation *fi)
     GNUNET_assert (0);
     goto cleanup;
   }
+  if ( (NULL != fi->next) &&
+       (NULL == fi->next->serialization) )
+    GNUNET_FS_file_information_sync_ (fi->next);
   if (GNUNET_OK !=
       GNUNET_BIO_write_string (wh,
                                (fi->next !=
@@ -1391,7 +1398,8 @@ cleanup:
  * @return NULL if srch was not found in this subtree
  */
 static struct GNUNET_FS_FileInformation *
-find_file_position (struct GNUNET_FS_FileInformation *pos, const char *srch)
+find_file_position (struct GNUNET_FS_FileInformation *pos,
+                   const char *srch)
 {
   struct GNUNET_FS_FileInformation *r;
 
@@ -1401,7 +1409,7 @@ find_file_position (struct GNUNET_FS_FileInformation *pos, const char *srch)
       return pos;
     if ( (GNUNET_YES == pos->is_directory) &&
         (NULL != (r = find_file_position (pos->data.dir.entries, srch))) )
-      return r;    
+      return r;
     pos = pos->next;
   }
   return NULL;
@@ -1412,7 +1420,7 @@ find_file_position (struct GNUNET_FS_FileInformation *pos, const char *srch)
  * Signal the FS's progress function that we are resuming
  * an upload.
  *
- * @param cls closure (of type "struct GNUNET_FS_PublishContext*")
+ * @param cls closure (of type `struct GNUNET_FS_PublishContext *`, for the parent (!))
  * @param fi the entry in the publish-structure
  * @param length length of the file or directory
  * @param meta metadata for the file or directory (can be modified)
@@ -1420,7 +1428,7 @@ find_file_position (struct GNUNET_FS_FileInformation *pos, const char *srch)
  * @param bo block options (can be modified)
  * @param do_index should we index?
  * @param client_info pointer to client context set upon creation (can be modified)
- * @return GNUNET_OK to continue (always)
+ * @return #GNUNET_OK to continue (always)
  */
 static int
 fip_signal_resume (void *cls, struct GNUNET_FS_FileInformation *fi,
@@ -1438,8 +1446,8 @@ fip_signal_resume (void *cls, struct GNUNET_FS_FileInformation *fi,
     return GNUNET_OK;
   }
   pi.status = GNUNET_FS_STATUS_PUBLISH_RESUME;
-  pi.value.publish.specifics.resume.message = pc->fi->emsg;
-  pi.value.publish.specifics.resume.chk_uri = pc->fi->chk_uri;
+  pi.value.publish.specifics.resume.message = fi->emsg;
+  pi.value.publish.specifics.resume.chk_uri = fi->chk_uri;
   *client_info = GNUNET_FS_publish_make_status_ (&pi, pc, fi, 0);
   if (GNUNET_YES == GNUNET_FS_meta_data_test_for_directory (meta))
   {
@@ -1455,9 +1463,9 @@ fip_signal_resume (void *cls, struct GNUNET_FS_FileInformation *fi,
  * Function called with a filename of serialized publishing operation
  * to deserialize.
  *
- * @param cls the 'struct GNUNET_FS_Handle*'
+ * @param cls the `struct GNUNET_FS_Handle *`
  * @param filename complete filename (absolute path)
- * @return GNUNET_OK (continue to iterate)
+ * @return #GNUNET_OK (continue to iterate)
  */
 static int
 deserialize_publish_file (void *cls, const char *filename)
@@ -1467,17 +1475,17 @@ deserialize_publish_file (void *cls, const char *filename)
   struct GNUNET_FS_PublishContext *pc;
   int32_t options;
   int32_t all_done;
+  int32_t have_ns;
   char *fi_root;
-  char *ns;
+  struct GNUNET_CRYPTO_EccPrivateKey ns;
   char *fi_pos;
   char *emsg;
 
-  pc = GNUNET_malloc (sizeof (struct GNUNET_FS_PublishContext));
+  pc = GNUNET_new (struct GNUNET_FS_PublishContext);
   pc->h = h;
   pc->serialization = get_serialization_short_name (filename);
   fi_root = NULL;
   fi_pos = NULL;
-  ns = NULL;
   rh = GNUNET_BIO_read_open (filename);
   if (NULL == rh)
   {
@@ -1489,10 +1497,12 @@ deserialize_publish_file (void *cls, const char *filename)
           GNUNET_BIO_read_string (rh, "publish-nuid", &pc->nuid, 1024)) ||
       (GNUNET_OK != GNUNET_BIO_read_int32 (rh, &options)) ||
       (GNUNET_OK != GNUNET_BIO_read_int32 (rh, &all_done)) ||
+      (GNUNET_OK != GNUNET_BIO_read_int32 (rh, &have_ns)) ||
       (GNUNET_OK !=
        GNUNET_BIO_read_string (rh, "publish-firoot", &fi_root, 128)) ||
       (GNUNET_OK != GNUNET_BIO_read_string (rh, "publish-fipos", &fi_pos, 128))
-      || (GNUNET_OK != GNUNET_BIO_read_string (rh, "publish-ns", &ns, 1024)))
+      || ( (GNUNET_YES == have_ns) &&
+          (GNUNET_OK != GNUNET_BIO_read (rh, "publish-ns", &ns, sizeof (ns)))) )
   {
     GNUNET_break (0);
     goto cleanup;
@@ -1510,17 +1520,10 @@ deserialize_publish_file (void *cls, const char *filename)
     GNUNET_break (0);
     goto cleanup;
   }
-  if (NULL != ns)
+  if (GNUNET_YES == have_ns)
   {
-    pc->ns = GNUNET_FS_namespace_create (h, ns);
-    if (NULL == pc->ns)
-    {
-      GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-                  _
-                  ("Failed to recover namespace `%s', cannot resume publishing operation.\n"),
-                  ns);
-      goto cleanup;
-    }
+    pc->ns = GNUNET_new (struct GNUNET_CRYPTO_EccPrivateKey);
+    *pc->ns = ns;
   }
   if ((0 == (pc->options & GNUNET_FS_PUBLISH_OPTION_SIMULATE_ONLY)) &&
       (GNUNET_YES != pc->all_done))
@@ -1553,7 +1556,7 @@ deserialize_publish_file (void *cls, const char *filename)
     GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == pc->upload_task);
     pc->upload_task =
         GNUNET_SCHEDULER_add_with_priority
-        (GNUNET_SCHEDULER_PRIORITY_BACKGROUND, 
+        (GNUNET_SCHEDULER_PRIORITY_BACKGROUND,
         &GNUNET_FS_publish_main_, pc);
   }
   if (GNUNET_OK != GNUNET_BIO_read_close (rh, &emsg))
@@ -1563,7 +1566,6 @@ deserialize_publish_file (void *cls, const char *filename)
                 filename, emsg);
     GNUNET_free (emsg);
   }
-  GNUNET_free_non_null (ns);
   pc->top = GNUNET_FS_make_top (h, &GNUNET_FS_publish_signal_suspend_, pc);
   return GNUNET_OK;
 cleanup:
@@ -1571,7 +1573,6 @@ cleanup:
   GNUNET_free_non_null (pc->nuid);
   GNUNET_free_non_null (fi_root);
   GNUNET_free_non_null (fi_pos);
-  GNUNET_free_non_null (ns);
   if ((NULL != rh) && (GNUNET_OK != GNUNET_BIO_read_close (rh, &emsg)))
   {
     GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
@@ -1601,6 +1602,7 @@ void
 GNUNET_FS_publish_sync_ (struct GNUNET_FS_PublishContext *pc)
 {
   struct GNUNET_BIO_WriteHandle *wh;
+  int32_t have_ns;
 
   if (NULL == pc->serialization)
     pc->serialization =
@@ -1622,17 +1624,20 @@ GNUNET_FS_publish_sync_ (struct GNUNET_FS_PublishContext *pc)
     GNUNET_break (0);
     goto cleanup;
   }
+  have_ns = (NULL != pc->ns) ? GNUNET_YES : GNUNET_NO;
   if ((GNUNET_OK != GNUNET_BIO_write_string (wh, pc->nid)) ||
       (GNUNET_OK != GNUNET_BIO_write_string (wh, pc->nuid)) ||
       (GNUNET_OK != GNUNET_BIO_write_int32 (wh, pc->options)) ||
       (GNUNET_OK != GNUNET_BIO_write_int32 (wh, pc->all_done)) ||
+      (GNUNET_OK != GNUNET_BIO_write_int32 (wh, have_ns)) ||
       (GNUNET_OK != GNUNET_BIO_write_string (wh, pc->fi->serialization)) ||
       (GNUNET_OK !=
        GNUNET_BIO_write_string (wh,
                                 (NULL == pc->fi_pos) ? NULL : pc->fi_pos->serialization)) ||
-      (GNUNET_OK !=
-       GNUNET_BIO_write_string (wh,
-                                (NULL == pc->ns) ? NULL : pc->ns->name)))
+      ( (NULL != pc->ns) &&
+       (GNUNET_OK != GNUNET_BIO_write (wh,
+                                       pc->ns,
+                                       sizeof (struct GNUNET_CRYPTO_EccPrivateKey)) ) ))
   {
     GNUNET_break (0);
     goto cleanup;
@@ -1722,9 +1727,9 @@ cleanup:
 /**
  * Serialize a download request.
  *
- * @param wh the 'struct GNUNET_BIO_WriteHandle*'
- * @param dr the 'struct DownloadRequest'
- * @return GNUNET_YES on success, GNUNET_NO on error
+ * @param wh the `struct GNUNET_BIO_WriteHandle*`
+ * @param dr the the request to write to disk
+ * @return #GNUNET_YES on success, #GNUNET_NO on error
  */
 static int
 write_download_request (struct GNUNET_BIO_WriteHandle *wh,
@@ -1752,7 +1757,7 @@ write_download_request (struct GNUNET_BIO_WriteHandle *wh,
  * Read a download request tree.
  *
  * @param rh mesh to read from
- * @return value the 'struct DownloadRequest', NULL on error
+ * @return value the download request read from disk, NULL on error
  */
 static struct DownloadRequest *
 read_download_request (struct GNUNET_BIO_ReadHandle *rh)
@@ -2026,8 +2031,8 @@ cleanup:
   if (NULL != wh)
     (void) GNUNET_BIO_write_close (wh);
   remove_sync_file_in_dir (sr->h,
-                           (NULL == sr->sc->psearch_result) 
-                          ? GNUNET_FS_SYNC_PATH_MASTER_SEARCH 
+                           (NULL == sr->sc->psearch_result)
+                          ? GNUNET_FS_SYNC_PATH_MASTER_SEARCH
                           : GNUNET_FS_SYNC_PATH_CHILD_SEARCH,
                            sr->sc->serialization, sr->serialization);
   GNUNET_free (sr->serialization);
@@ -2052,8 +2057,8 @@ GNUNET_FS_search_sync_ (struct GNUNET_FS_SearchContext *sc)
   const char *category;
 
   category =
-      (NULL == sc->psearch_result) 
-    ? GNUNET_FS_SYNC_PATH_MASTER_SEARCH 
+      (NULL == sc->psearch_result)
+    ? GNUNET_FS_SYNC_PATH_MASTER_SEARCH
     : GNUNET_FS_SYNC_PATH_CHILD_SEARCH;
   if (NULL == sc->serialization)
     sc->serialization = make_serialization_file_name (sc->h, category);
@@ -2158,7 +2163,7 @@ deserialize_unindex_file (void *cls, const char *filename)
   {
     GNUNET_break (0);
     goto cleanup;
-  }  
+  }
   uc->state = (enum UnindexState) state;
   switch (state)
   {
@@ -2311,8 +2316,8 @@ deserialize_search_result (void *cls, const char *filename)
     if (NULL != ser)
     {
       remove_sync_file_in_dir (sc->h,
-                               (NULL == sc->psearch_result) 
-                              ? GNUNET_FS_SYNC_PATH_MASTER_SEARCH 
+                               (NULL == sc->psearch_result)
+                              ? GNUNET_FS_SYNC_PATH_MASTER_SEARCH
                               : GNUNET_FS_SYNC_PATH_CHILD_SEARCH,
                                sc->serialization, ser);
       GNUNET_free (ser);