[On W32, we need to select after calling socket before doing connect etc.]
* GNUNET-GTK: [CG]
- from-URI only tab:
- + display from open directory (needs 'from-URI only' tab!)
- + handle download lost-parent (move to 'from-URI only' tab!)
+ + display from open directory
- recursive downloads:
+ download start: recursive/directory (!)
- * display directory content from download as part of search
+ * display directory content as part of 'open directory'
+ * display directory content from download as part of search
* honor recursion option (may already be done, check!)
- TEST download-start from-URI only in event handler
+ - TEST download lost-parent
* BUGS:
Jun 27 11:51:54 core-7670 ERROR Assertion failed at gnunet-service-core.c:3616.
* @param offset offset of data in the directory
* @param dep function to call on each entry
* @param dep_cls closure for dep
+ * @return GNUNET_OK if this could be a block in a directory,
+ * GNUNET_NO if this could be part of a directory (but not 100% OK)
+ * GNUNET_SYSERR if 'data' does not represent a directory
*/
-void
+int
GNUNET_FS_directory_list_contents (size_t size,
const void *data,
uint64_t offset,
{
/* invalid size */
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
- _("Not a GNUnet directory.\n"));
- return;
+ _("MAGIC mismatch. This is not a GNUnet directory.\n"));
+ return GNUNET_SYSERR;
}
md = GNUNET_CONTAINER_meta_data_deserialize (&cdata[8 +
sizeof (uint32_t)],
mdSize);
if (md == NULL)
{
- GNUNET_break (0);
- return; /* malformed ! */
+ GNUNET_break (0);
+ return GNUNET_SYSERR; /* malformed ! */
}
dep (dep_cls,
NULL,
while ((epos < size) && (cdata[epos] != '\0'))
epos++;
if (epos >= size)
- return; /* malformed - or partial download */
+ return GNUNET_NO; /* malformed - or partial download */
uri = GNUNET_FS_uri_parse (&cdata[pos], &emsg);
pos = epos + 1;
{
GNUNET_FS_uri_destroy (uri);
GNUNET_break (0);
- return; /* illegal in directory! */
+ return GNUNET_NO; /* illegal in directory! */
}
memcpy (&mdSize, &cdata[pos], sizeof (uint32_t));
if (pos + mdSize > size)
{
GNUNET_FS_uri_destroy (uri);
- return; /* malformed - or partial download */
+ return GNUNET_NO; /* malformed - or partial download */
}
md = GNUNET_CONTAINER_meta_data_deserialize (&cdata[pos], mdSize);
{
GNUNET_FS_uri_destroy (uri);
GNUNET_break (0);
- return; /* malformed ! */
+ return GNUNET_NO; /* malformed ! */
}
pos += mdSize;
filename = GNUNET_CONTAINER_meta_data_get_by_type (md,
GNUNET_CONTAINER_meta_data_destroy (md);
GNUNET_FS_uri_destroy (uri);
}
+ return GNUNET_OK;
}
/**
* @param offset offset of data in the directory
* @param dep function to call on each entry
* @param dep_cls closure for dep
+ * @return GNUNET_OK if this could be a block in a directory,
+ * GNUNET_NO if this could be part of a directory (but not 100% OK)
+ * GNUNET_SYSERR if 'data' does not represent a directory
*/
-void
+int
GNUNET_FS_directory_list_contents (size_t size,
const void *data,
uint64_t offset,