error:
GNUNET_free_non_null (fn);
if (NULL != rh)
- GNUNET_BIO_read_close (rh, &emsg);
+ (void) GNUNET_BIO_read_close (rh, &emsg);
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
_("Failed to load state: %s\n"),
emsg);
n = GNUNET_CONTAINER_multihashmap_size (work_finished);
fn = get_state_file ();
wh = GNUNET_BIO_write_open (fn);
+ if (NULL == wh)
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+ _("Failed to save state to file %s\n"),
+ fn);
+ GNUNET_free (fn);
+ return;
+ }
if (GNUNET_OK !=
GNUNET_BIO_write_int32 (wh, n))
{
_("Publishing `%s'\n"),
wi->filename);
publish_proc = GNUNET_OS_start_process_vap (GNUNET_YES,
- NULL, NULL,
+ 0, NULL, NULL,
"gnunet-publish",
argv);
if (NULL == publish_proc)
if (GNUNET_YES == do_shutdown)
return GNUNET_SYSERR;
- if (NULL != strstr (filename,
- DIR_SEPARATOR_STR ".auto-share"))
+ if ( (NULL != strstr (filename,
+ "/.auto-share")) ||
+ (NULL != strstr (filename,
+ "\\.auto-share")) )
return GNUNET_OK; /* skip internal file */
GNUNET_CRYPTO_hash (filename,
strlen (filename),
sizeof (struct GNUNET_HashCode)))
return GNUNET_OK; /* skip: we did this one already */
/* contents changed, need to re-do the directory... */
- GNUNET_CONTAINER_multihashmap_remove (work_finished,
- &key,
- wi);
+ GNUNET_assert (GNUNET_YES ==
+ GNUNET_CONTAINER_multihashmap_remove (work_finished,
+ &key,
+ wi));
}
else
{
{
/* check arguments */
if ((args[0] == NULL) || (args[1] != NULL) ||
- (GNUNET_YES != GNUNET_DISK_directory_test (args[0])))
+ (GNUNET_YES != GNUNET_DISK_directory_test (args[0], GNUNET_YES)))
{
printf (_("You must specify one and only one directory name for automatic publication.\n"));
ret = -1;
cfg_filename = GNUNET_strdup (cfgfile);
cfg = c;
dir_name = args[0];
- work_finished = GNUNET_CONTAINER_multihashmap_create (1024);
+ work_finished = GNUNET_CONTAINER_multihashmap_create (1024, GNUNET_NO);
load_state ();
run_task = GNUNET_SCHEDULER_add_with_priority (GNUNET_SCHEDULER_PRIORITY_IDLE,
&scan, NULL);
return GNUNET_OK;
}
+
/**
* The main function to automatically publish content to GNUnet.
*
gettext_noop
("Automatically publish files from a directory on GNUnet"),
options, &run, NULL)) ? ret : 1;
- (void) GNUNET_CONTAINER_multihashmap_iterate (work_finished,
- &free_item,
- NULL);
- GNUNET_CONTAINER_multihashmap_destroy (work_finished);
+ if (NULL != work_finished)
+ {
+ (void) GNUNET_CONTAINER_multihashmap_iterate (work_finished,
+ &free_item,
+ NULL);
+ GNUNET_CONTAINER_multihashmap_destroy (work_finished);
+ }
while (NULL != (wi = work_head))
{
GNUNET_CONTAINER_DLL_remove (work_head, work_tail, wi);
sigpipe = NULL;
GNUNET_free (cfg_filename);
cfg_filename = NULL;
+ GNUNET_free ((void*) argv);
return ok;
}