* @author Christian Grothoff
*
* TODO:
- * - publishing progress update API (increment offset, serialize)
* - serialization/deserialization (& deserialization API)
* - metadata filename clean up code
* - metadata/ksk generation for directories from contained files
/**
- * Create a temporary file disk to store the current
+ * Create a temporary file on disk to store the current
* state of "fi" in.
*/
-static void
-fi_sync (struct GNUNET_FS_FileInformation * fi)
+void
+GNUNET_FS_file_information_sync (struct GNUNET_FS_FileInformation * fi)
{
if (NULL == fi->serialization)
{
- fi->serialization = NULL; // FIXME
+ fi->serialization = NULL; // FIXME -- need cfg!
}
// FIXME...
}
* @param filename name of the file to use
* @return NULL on error
*/
-static struct GNUNET_FS_FileInformation *
-fi_load (const char *filename)
+struct GNUNET_FS_FileInformation *
+GNUNET_FS_file_information_recover (const char *name)
{
struct GNUNET_FS_FileInformation *ret;
+ ret = NULL;
// FIXME!
- return NULL;
+ return ret;
+}
+
+
+/**
+ * Obtain the name under which this file information
+ * structure is stored on disk. Only works for top-level
+ * file information structures.
+ *
+ * @param s structure to get the filename for
+ * @return NULL on error, otherwise filename that
+ * can be passed to "GNUNET_FS_file_information_recover"
+ * to read this fi-struct from disk.
+ */
+const char *
+GNUNET_FS_file_information_get_id (struct GNUNET_FS_FileInformation *s)
+{
+ if (NULL != s->dir)
+ return NULL;
+ return s->serialization;
}
const struct GNUNET_FS_Uri *keywords,
const struct GNUNET_CONTAINER_MetaData *meta,
int do_index,
- unsigned int anonymity,
- unsigned int priority,
+ uint32_t anonymity,
+ uint32_t priority,
struct GNUNET_TIME_Absolute expirationTime)
{
struct FileInfo *fi;
const struct GNUNET_FS_Uri *keywords,
const struct GNUNET_CONTAINER_MetaData *meta,
int do_index,
- unsigned int anonymity,
- unsigned int priority,
+ uint32_t anonymity,
+ uint32_t priority,
struct GNUNET_TIME_Absolute expirationTime)
{
return GNUNET_FS_file_information_create_from_reader (client_info,
const struct GNUNET_FS_Uri *keywords,
const struct GNUNET_CONTAINER_MetaData *meta,
int do_index,
- unsigned int anonymity,
- unsigned int priority,
+ uint32_t anonymity,
+ uint32_t priority,
struct GNUNET_TIME_Absolute expirationTime)
{
struct GNUNET_FS_FileInformation *ret;
ret->data.file.do_index = do_index;
ret->anonymity = anonymity;
ret->priority = priority;
- fi_sync (ret);
+ GNUNET_FS_file_information_sync (ret);
return ret;
}
/**
* Desired anonymity level.
*/
- unsigned int anonymity;
+ uint32_t anonymity;
/**
* Desired publishing priority.
*/
- unsigned int priority;
+ uint32_t priority;
/**
* Expiration time for publication.
GNUNET_FS_directory_scanner_default (void *cls,
const char *dirname,
int do_index,
- unsigned int anonymity,
- unsigned int priority,
+ uint32_t anonymity,
+ uint32_t priority,
struct GNUNET_TIME_Absolute expirationTime,
GNUNET_FS_FileProcessor proc,
void *proc_cls,
GNUNET_FS_DirectoryScanner scanner,
void *scanner_cls,
int do_index,
- unsigned int anonymity,
- unsigned int priority,
+ uint32_t anonymity,
+ uint32_t priority,
struct GNUNET_TIME_Absolute expirationTime,
char **emsg)
{
while (dc.entries != NULL)
{
dc.entries->dir = ret;
- fi_sync (dc.entries);
+ GNUNET_FS_file_information_sync (dc.entries);
dc.entries = dc.entries->next;
}
- fi_sync (ret);
+ GNUNET_FS_file_information_sync (ret);
return ret;
}
GNUNET_FS_file_information_create_empty_directory (void *client_info,
const struct GNUNET_CONTAINER_MetaData *meta,
const struct GNUNET_FS_Uri *keywords,
- unsigned int anonymity,
- unsigned int priority,
+ uint32_t anonymity,
+ uint32_t priority,
struct GNUNET_TIME_Absolute expirationTime)
{
struct GNUNET_FS_FileInformation *ret;
ret->is_directory = GNUNET_YES;
ret->anonymity = anonymity;
ret->priority = priority;
- fi_sync (ret);
+ GNUNET_FS_file_information_sync (ret);
return ret;
}
ent->next = dir->data.dir.entries;
dir->data.dir.entries = ent;
dir->data.dir.dir_size = 0;
- dir->publish_offset = 0;
- fi_sync (ent);
- fi_sync (dir);
+ GNUNET_FS_file_information_sync (ent);
+ GNUNET_FS_file_information_sync (dir);
return GNUNET_OK;
}
&fi->priority,
&fi->expirationTime,
&fi->client_info);
+ GNUNET_free_non_null (fi->data.dir.dir_data);
GNUNET_free (fi->data.dir.dirname);
}
else
&fi->expirationTime,
&fi->client_info);
}
-
+ GNUNET_free_non_null (fi->emsg);
/* clean up serialization */
if (0 != UNLINK (fi->serialization))
GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_WARNING,