Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
-
/**
* @file fs/fs_publish.c
* @brief publish a file or directory in GNUnet
* @author Krista Bennett
* @author Christian Grothoff
*/
-
#include "platform.h"
#include "gnunet_constants.h"
#include "gnunet_signatures.h"
pi->value.publish.pctx = (NULL == p->dir) ? NULL : p->dir->client_info;
pi->value.publish.filename = p->filename;
pi->value.publish.size =
- (p->is_directory == GNUNET_YES) ? p->data.dir.dir_size : p->data.file.file_size;
+ (GNUNET_YES == p->is_directory) ? p->data.dir.dir_size : p->data.file.file_size;
pi->value.publish.eta =
- GNUNET_TIME_calculate_eta (p->start_time, offset, pi->value.publish.size);
+ GNUNET_TIME_calculate_eta (p->start_time, offset,
+ pi->value.publish.size);
pi->value.publish.completed = offset;
pi->value.publish.duration =
GNUNET_TIME_absolute_get_duration (p->start_time);
static void
publish_cleanup (struct GNUNET_FS_PublishContext *pc)
{
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Cleaning up publish context (done!)\n");
- if (pc->fhc != NULL)
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Cleaning up publish context (done!)\n");
+ if (NULL != pc->fhc)
{
GNUNET_CRYPTO_hash_file_cancel (pc->fhc);
pc->fhc = NULL;
GNUNET_free_non_null (pc->nid);
GNUNET_free_non_null (pc->nuid);
GNUNET_free_non_null (pc->serialization);
- if (pc->dsh != NULL)
+ if (NULL != pc->dsh)
{
GNUNET_DATASTORE_disconnect (pc->dsh, GNUNET_NO);
pc->dsh = NULL;
}
- if (pc->client != NULL)
+ if (NULL != pc->client)
{
GNUNET_CLIENT_disconnect (pc->client);
pc->client = NULL;
pc->qre = NULL;
if (GNUNET_SYSERR == success)
{
- GNUNET_asprintf (&pc->fi_pos->emsg, _("Publishing failed: %s"), msg);
+ GNUNET_asprintf (&pc->fi_pos->emsg,
+ _("Publishing failed: %s"),
+ msg);
pi.status = GNUNET_FS_STATUS_PUBLISH_ERROR;
pi.value.publish.eta = GNUNET_TIME_UNIT_FOREVER_REL;
pi.value.publish.specifics.error.message = pc->fi_pos->emsg;
pi.status = GNUNET_FS_STATUS_PUBLISH_COMPLETED;
pi.value.publish.eta = GNUNET_TIME_UNIT_ZERO;
pi.value.publish.specifics.completed.chk_uri = p->chk_uri;
+ pi.value.publish.specifics.completed.sks_uri = p->sks_uri;
p->client_info =
GNUNET_FS_publish_make_status_ (&pi, pc, p,
- GNUNET_ntohll (p->chk_uri->data.
- chk.file_length));
+ p->data.file.file_size);
}
*/
static void
signal_publish_error (struct GNUNET_FS_FileInformation *p,
- struct GNUNET_FS_PublishContext *pc, const char *emsg)
+ struct GNUNET_FS_PublishContext *pc,
+ const char *emsg)
{
struct GNUNET_FS_ProgressInfo pi;
* We've finished publishing the SBlock as part of a larger upload.
* Check the result and complete the larger upload.
*
- * @param cls the "struct GNUNET_FS_PublishContext*" of the larger upload
+ * @param cls the `struct GNUNET_FS_PublishContext *` of the larger upload
* @param uri URI of the published SBlock
* @param emsg NULL on success, otherwise error message
*/
static void
-publish_sblocks_cont (void *cls, const struct GNUNET_FS_Uri *uri,
+publish_sblocks_cont (void *cls,
+ const struct GNUNET_FS_Uri *uri,
const char *emsg)
{
struct GNUNET_FS_PublishContext *pc = cls;
GNUNET_FS_publish_sync_ (pc);
return;
}
+ if (NULL != uri)
+ {
+ /* sks publication, remember namespace URI */
+ pc->fi->sks_uri = GNUNET_FS_uri_dup (uri);
+ }
GNUNET_assert (pc->qre == NULL);
if ((pc->dsh != NULL) && (pc->rid != 0))
{
* @param emsg NULL on success, otherwise error message
*/
static void
-publish_kblocks_cont (void *cls, const struct GNUNET_FS_Uri *uri,
+publish_kblocks_cont (void *cls,
+ const struct GNUNET_FS_Uri *uri,
const char *emsg)
{
struct GNUNET_FS_PublishContext *pc = cls;
GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == pc->upload_task);
pc->upload_task =
GNUNET_SCHEDULER_add_with_priority
- (GNUNET_SCHEDULER_PRIORITY_BACKGROUND, &GNUNET_FS_publish_main_, pc);
+ (GNUNET_SCHEDULER_PRIORITY_BACKGROUND,
+ &GNUNET_FS_publish_main_,
+ pc);
return;
}
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
* @return number of bytes copied to buf, 0 on error
*/
static size_t
-block_reader (void *cls, uint64_t offset, size_t max, void *buf, char **emsg)
+block_reader (void *cls,
+ uint64_t offset,
+ size_t max,
+ void *buf,
+ char **emsg)
{
struct GNUNET_FS_PublishContext *pc = cls;
struct GNUNET_FS_FileInformation *p;
if (0 == p->bo.anonymity_level)
{
/* zero anonymity, box CHK URI in LOC URI */
- loc =
- GNUNET_FS_uri_loc_create (p->chk_uri, pc->h->cfg,
- p->bo.expiration_time);
+ loc = GNUNET_FS_uri_loc_create (p->chk_uri,
+ pc->h->cfg,
+ p->bo.expiration_time);
GNUNET_FS_uri_destroy (p->chk_uri);
p->chk_uri = loc;
GNUNET_FS_file_information_sync_ (p);
/* upload of "p" complete, publish KBlocks! */
if (NULL != p->keywords)
{
- pc->ksk_pc = GNUNET_FS_publish_ksk (pc->h, p->keywords, p->meta, p->chk_uri, &p->bo,
- pc->options, &publish_kblocks_cont, pc);
+ pc->ksk_pc = GNUNET_FS_publish_ksk (pc->h,
+ p->keywords,
+ p->meta,
+ p->chk_uri,
+ &p->bo,
+ pc->options,
+ &publish_kblocks_cont, pc);
}
else
{
{
p->data.file.do_index = GNUNET_NO;
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
- _
- ("Can not index file `%s': %s. Will try to insert instead.\n"),
- "<no-name>", _("needs to be an actual file"));
+ _("Can not index file `%s': %s. Will try to insert instead.\n"),
+ "<no-name>",
+ _("needs to be an actual file"));
GNUNET_FS_file_information_sync_ (p);
publish_content (pc);
return;
{
GNUNET_assert (NULL == ret->qre);
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
- _
- ("Reserving space for %u entries and %llu bytes for publication\n"),
+ _("Reserving space for %u entries and %llu bytes for publication\n"),
(unsigned int) ret->reserve_entries,
(unsigned long long) ret->reserve_space);
ret->qre =
GNUNET_DATASTORE_reserve (ret->dsh, ret->reserve_space,
- ret->reserve_entries, UINT_MAX, UINT_MAX,
- GNUNET_TIME_UNIT_FOREVER_REL, &finish_reserve,
+ ret->reserve_entries,
+ UINT_MAX, UINT_MAX,
+ GNUNET_TIME_UNIT_FOREVER_REL,
+ &finish_reserve,
ret);
}
else
* @return #GNUNET_OK to continue (always)
*/
static int
-fip_signal_stop (void *cls, struct GNUNET_FS_FileInformation *fi,
- uint64_t length, struct GNUNET_CONTAINER_MetaData *meta,
- struct GNUNET_FS_Uri **uri, struct GNUNET_FS_BlockOptions *bo,
+fip_signal_stop (void *cls,
+ struct GNUNET_FS_FileInformation *fi,
+ uint64_t length,
+ struct GNUNET_CONTAINER_MetaData *meta,
+ struct GNUNET_FS_Uri **uri,
+ struct GNUNET_FS_BlockOptions *bo,
int *do_index, void **client_info)
{
struct GNUNET_FS_PublishContext *pc = cls;
struct GNUNET_FS_ProgressInfo pi;
uint64_t off;
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Publish stop called\n");
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Publish stop called\n");
GNUNET_FS_end_top (pc->h, pc->top);
if (NULL != pc->ksk_pc)
{
pc->skip_next_fi_callback = GNUNET_YES;
GNUNET_FS_file_information_inspect (pc->fi, &fip_signal_stop, pc);
- if (pc->fi->serialization != NULL)
+ if (NULL != pc->fi->serialization)
{
GNUNET_FS_remove_sync_file_ (pc->h, GNUNET_FS_SYNC_PATH_FILE_INFO,
pc->fi->serialization);
GNUNET_free (pc->fi->serialization);
pc->fi->serialization = NULL;
}
- off = (pc->fi->chk_uri == NULL) ? 0 : GNUNET_ntohll (pc->fi->chk_uri->data.chk.file_length);
+ off = (NULL == pc->fi->chk_uri) ? 0 : GNUNET_ntohll (pc->fi->chk_uri->data.chk.file_length);
- if (pc->serialization != NULL)
+ if (NULL != pc->serialization)
{
GNUNET_FS_remove_sync_file_ (pc->h, GNUNET_FS_SYNC_PATH_MASTER_PUBLISH,
pc->serialization);
}
-
/* end of fs_publish.c */