diff options
Diffstat (limited to 'src/fs/fs_directory.c')
-rw-r--r-- | src/fs/fs_directory.c | 65 |
1 files changed, 33 insertions, 32 deletions
diff --git a/src/fs/fs_directory.c b/src/fs/fs_directory.c index eb7aac5bb..c693f9216 100644 --- a/src/fs/fs_directory.c +++ b/src/fs/fs_directory.c | |||
@@ -33,6 +33,7 @@ | |||
33 | * into memory | 33 | * into memory |
34 | */ | 34 | */ |
35 | #include "platform.h" | 35 | #include "platform.h" |
36 | |||
36 | #include "gnunet_fs_service.h" | 37 | #include "gnunet_fs_service.h" |
37 | #include "fs_api.h" | 38 | #include "fs_api.h" |
38 | 39 | ||
@@ -52,15 +53,15 @@ | |||
52 | */ | 53 | */ |
53 | int | 54 | int |
54 | GNUNET_FS_meta_data_test_for_directory (const struct | 55 | GNUNET_FS_meta_data_test_for_directory (const struct |
55 | GNUNET_CONTAINER_MetaData *md) | 56 | GNUNET_FS_MetaData *md) |
56 | { | 57 | { |
57 | char *mime; | 58 | char *mime; |
58 | int ret; | 59 | int ret; |
59 | 60 | ||
60 | if (NULL == md) | 61 | if (NULL == md) |
61 | return GNUNET_SYSERR; | 62 | return GNUNET_SYSERR; |
62 | mime = GNUNET_CONTAINER_meta_data_get_by_type (md, | 63 | mime = GNUNET_FS_meta_data_get_by_type (md, |
63 | EXTRACTOR_METATYPE_MIMETYPE); | 64 | EXTRACTOR_METATYPE_MIMETYPE); |
64 | if (NULL == mime) | 65 | if (NULL == mime) |
65 | return GNUNET_SYSERR; | 66 | return GNUNET_SYSERR; |
66 | ret = (0 == strcasecmp (mime, GNUNET_FS_DIRECTORY_MIME)) ? GNUNET_YES : | 67 | ret = (0 == strcasecmp (mime, GNUNET_FS_DIRECTORY_MIME)) ? GNUNET_YES : |
@@ -77,19 +78,19 @@ GNUNET_FS_meta_data_test_for_directory (const struct | |||
77 | * @param md metadata to add mimetype to | 78 | * @param md metadata to add mimetype to |
78 | */ | 79 | */ |
79 | void | 80 | void |
80 | GNUNET_FS_meta_data_make_directory (struct GNUNET_CONTAINER_MetaData *md) | 81 | GNUNET_FS_meta_data_make_directory (struct GNUNET_FS_MetaData *md) |
81 | { | 82 | { |
82 | char *mime; | 83 | char *mime; |
83 | 84 | ||
84 | mime = | 85 | mime = |
85 | GNUNET_CONTAINER_meta_data_get_by_type (md, EXTRACTOR_METATYPE_MIMETYPE); | 86 | GNUNET_FS_meta_data_get_by_type (md, EXTRACTOR_METATYPE_MIMETYPE); |
86 | if (mime != NULL) | 87 | if (mime != NULL) |
87 | { | 88 | { |
88 | GNUNET_break (0 == strcmp (mime, GNUNET_FS_DIRECTORY_MIME)); | 89 | GNUNET_break (0 == strcmp (mime, GNUNET_FS_DIRECTORY_MIME)); |
89 | GNUNET_free (mime); | 90 | GNUNET_free (mime); |
90 | return; | 91 | return; |
91 | } | 92 | } |
92 | GNUNET_CONTAINER_meta_data_insert (md, "<gnunet>", | 93 | GNUNET_FS_meta_data_insert (md, "<gnunet>", |
93 | EXTRACTOR_METATYPE_MIMETYPE, | 94 | EXTRACTOR_METATYPE_MIMETYPE, |
94 | EXTRACTOR_METAFORMAT_UTF8, "text/plain", | 95 | EXTRACTOR_METAFORMAT_UTF8, "text/plain", |
95 | GNUNET_FS_DIRECTORY_MIME, | 96 | GNUNET_FS_DIRECTORY_MIME, |
@@ -192,7 +193,7 @@ GNUNET_FS_directory_list_contents (size_t size, | |||
192 | uint32_t mdSize; | 193 | uint32_t mdSize; |
193 | uint64_t epos; | 194 | uint64_t epos; |
194 | struct GNUNET_FS_Uri *uri; | 195 | struct GNUNET_FS_Uri *uri; |
195 | struct GNUNET_CONTAINER_MetaData *md; | 196 | struct GNUNET_FS_MetaData *md; |
196 | char *filename; | 197 | char *filename; |
197 | 198 | ||
198 | if ((offset == 0) && | 199 | if ((offset == 0) && |
@@ -215,8 +216,8 @@ GNUNET_FS_directory_list_contents (size_t size, | |||
215 | _ ("MAGIC mismatch. This is not a GNUnet directory.\n")); | 216 | _ ("MAGIC mismatch. This is not a GNUnet directory.\n")); |
216 | return GNUNET_SYSERR; | 217 | return GNUNET_SYSERR; |
217 | } | 218 | } |
218 | md = GNUNET_CONTAINER_meta_data_deserialize (&cdata[8 + sizeof(uint32_t)], | 219 | md = GNUNET_FS_meta_data_deserialize (&cdata[8 + sizeof(uint32_t)], |
219 | mdSize); | 220 | mdSize); |
220 | if (md == NULL) | 221 | if (md == NULL) |
221 | { | 222 | { |
222 | GNUNET_break (0); | 223 | GNUNET_break (0); |
@@ -228,7 +229,7 @@ GNUNET_FS_directory_list_contents (size_t size, | |||
228 | md, | 229 | md, |
229 | 0, | 230 | 0, |
230 | NULL); | 231 | NULL); |
231 | GNUNET_CONTAINER_meta_data_destroy (md); | 232 | GNUNET_FS_meta_data_destroy (md); |
232 | pos = 8 + sizeof(uint32_t) + mdSize; | 233 | pos = 8 + sizeof(uint32_t) + mdSize; |
233 | } | 234 | } |
234 | while (pos < size) | 235 | while (pos < size) |
@@ -283,7 +284,7 @@ GNUNET_FS_directory_list_contents (size_t size, | |||
283 | return GNUNET_NO; /* malformed - or partial download */ | 284 | return GNUNET_NO; /* malformed - or partial download */ |
284 | } | 285 | } |
285 | 286 | ||
286 | md = GNUNET_CONTAINER_meta_data_deserialize (&cdata[pos], | 287 | md = GNUNET_FS_meta_data_deserialize (&cdata[pos], |
287 | mdSize); | 288 | mdSize); |
288 | if (NULL == md) | 289 | if (NULL == md) |
289 | { | 290 | { |
@@ -293,11 +294,11 @@ GNUNET_FS_directory_list_contents (size_t size, | |||
293 | } | 294 | } |
294 | pos += mdSize; | 295 | pos += mdSize; |
295 | filename = | 296 | filename = |
296 | GNUNET_CONTAINER_meta_data_get_by_type (md, | 297 | GNUNET_FS_meta_data_get_by_type (md, |
297 | EXTRACTOR_METATYPE_GNUNET_ORIGINAL_FILENAME); | 298 | EXTRACTOR_METATYPE_GNUNET_ORIGINAL_FILENAME); |
298 | full_data.size = 0; | 299 | full_data.size = 0; |
299 | full_data.data = NULL; | 300 | full_data.data = NULL; |
300 | GNUNET_CONTAINER_meta_data_iterate (md, | 301 | GNUNET_FS_meta_data_iterate (md, |
301 | &find_full_data, | 302 | &find_full_data, |
302 | &full_data); | 303 | &full_data); |
303 | if (NULL != dep) | 304 | if (NULL != dep) |
@@ -311,7 +312,7 @@ GNUNET_FS_directory_list_contents (size_t size, | |||
311 | } | 312 | } |
312 | GNUNET_free (full_data.data); | 313 | GNUNET_free (full_data.data); |
313 | GNUNET_free (filename); | 314 | GNUNET_free (filename); |
314 | GNUNET_CONTAINER_meta_data_destroy (md); | 315 | GNUNET_FS_meta_data_destroy (md); |
315 | GNUNET_FS_uri_destroy (uri); | 316 | GNUNET_FS_uri_destroy (uri); |
316 | } | 317 | } |
317 | return GNUNET_OK; | 318 | return GNUNET_OK; |
@@ -342,7 +343,7 @@ struct GNUNET_FS_DirectoryBuilder | |||
342 | /** | 343 | /** |
343 | * Meta-data for the directory itself. | 344 | * Meta-data for the directory itself. |
344 | */ | 345 | */ |
345 | struct GNUNET_CONTAINER_MetaData *meta; | 346 | struct GNUNET_FS_MetaData *meta; |
346 | 347 | ||
347 | /** | 348 | /** |
348 | * Head of linked list of entries. | 349 | * Head of linked list of entries. |
@@ -362,16 +363,16 @@ struct GNUNET_FS_DirectoryBuilder | |||
362 | * @param mdir metadata for the directory | 363 | * @param mdir metadata for the directory |
363 | */ | 364 | */ |
364 | struct GNUNET_FS_DirectoryBuilder * | 365 | struct GNUNET_FS_DirectoryBuilder * |
365 | GNUNET_FS_directory_builder_create (const struct GNUNET_CONTAINER_MetaData | 366 | GNUNET_FS_directory_builder_create (const struct GNUNET_FS_MetaData |
366 | *mdir) | 367 | *mdir) |
367 | { | 368 | { |
368 | struct GNUNET_FS_DirectoryBuilder *ret; | 369 | struct GNUNET_FS_DirectoryBuilder *ret; |
369 | 370 | ||
370 | ret = GNUNET_new (struct GNUNET_FS_DirectoryBuilder); | 371 | ret = GNUNET_new (struct GNUNET_FS_DirectoryBuilder); |
371 | if (mdir != NULL) | 372 | if (mdir != NULL) |
372 | ret->meta = GNUNET_CONTAINER_meta_data_duplicate (mdir); | 373 | ret->meta = GNUNET_FS_meta_data_duplicate (mdir); |
373 | else | 374 | else |
374 | ret->meta = GNUNET_CONTAINER_meta_data_create (); | 375 | ret->meta = GNUNET_FS_meta_data_create (); |
375 | GNUNET_FS_meta_data_make_directory (ret->meta); | 376 | GNUNET_FS_meta_data_make_directory (ret->meta); |
376 | return ret; | 377 | return ret; |
377 | } | 378 | } |
@@ -390,7 +391,7 @@ GNUNET_FS_directory_builder_create (const struct GNUNET_CONTAINER_MetaData | |||
390 | void | 391 | void |
391 | GNUNET_FS_directory_builder_add (struct GNUNET_FS_DirectoryBuilder *bld, | 392 | GNUNET_FS_directory_builder_add (struct GNUNET_FS_DirectoryBuilder *bld, |
392 | const struct GNUNET_FS_Uri *uri, | 393 | const struct GNUNET_FS_Uri *uri, |
393 | const struct GNUNET_CONTAINER_MetaData *md, | 394 | const struct GNUNET_FS_MetaData *md, |
394 | const void *data) | 395 | const void *data) |
395 | { | 396 | { |
396 | struct GNUNET_FS_Uri *curi; | 397 | struct GNUNET_FS_Uri *curi; |
@@ -404,8 +405,8 @@ GNUNET_FS_directory_builder_add (struct GNUNET_FS_DirectoryBuilder *bld, | |||
404 | char *serialized; | 405 | char *serialized; |
405 | char *sptr; | 406 | char *sptr; |
406 | size_t slen; | 407 | size_t slen; |
407 | struct GNUNET_CONTAINER_MetaData *meta; | 408 | struct GNUNET_FS_MetaData *meta; |
408 | const struct GNUNET_CONTAINER_MetaData *meta_use; | 409 | const struct GNUNET_FS_MetaData *meta_use; |
409 | 410 | ||
410 | GNUNET_assert (! GNUNET_FS_uri_test_ksk (uri)); | 411 | GNUNET_assert (! GNUNET_FS_uri_test_ksk (uri)); |
411 | if (NULL != data) | 412 | if (NULL != data) |
@@ -431,17 +432,17 @@ GNUNET_FS_directory_builder_add (struct GNUNET_FS_DirectoryBuilder *bld, | |||
431 | fsize = 0; /* too large */ | 432 | fsize = 0; /* too large */ |
432 | uris = GNUNET_FS_uri_to_string (uri); | 433 | uris = GNUNET_FS_uri_to_string (uri); |
433 | slen = strlen (uris) + 1; | 434 | slen = strlen (uris) + 1; |
434 | mds = GNUNET_CONTAINER_meta_data_get_serialized_size (md); | 435 | mds = GNUNET_FS_meta_data_get_serialized_size (md); |
435 | meta_use = md; | 436 | meta_use = md; |
436 | meta = NULL; | 437 | meta = NULL; |
437 | if (fsize > 0) | 438 | if (fsize > 0) |
438 | { | 439 | { |
439 | meta = GNUNET_CONTAINER_meta_data_duplicate (md); | 440 | meta = GNUNET_FS_meta_data_duplicate (md); |
440 | GNUNET_CONTAINER_meta_data_insert (meta, "<gnunet>", | 441 | GNUNET_FS_meta_data_insert (meta, "<gnunet>", |
441 | EXTRACTOR_METATYPE_GNUNET_FULL_DATA, | 442 | EXTRACTOR_METATYPE_GNUNET_FULL_DATA, |
442 | EXTRACTOR_METAFORMAT_BINARY, NULL, data, | 443 | EXTRACTOR_METAFORMAT_BINARY, NULL, data, |
443 | fsize); | 444 | fsize); |
444 | mdxs = GNUNET_CONTAINER_meta_data_get_serialized_size (meta); | 445 | mdxs = GNUNET_FS_meta_data_get_serialized_size (meta); |
445 | if ((slen + sizeof(uint32_t) + mdxs - 1) / DBLOCK_SIZE == | 446 | if ((slen + sizeof(uint32_t) + mdxs - 1) / DBLOCK_SIZE == |
446 | (slen + sizeof(uint32_t) + mds - 1) / DBLOCK_SIZE) | 447 | (slen + sizeof(uint32_t) + mds - 1) / DBLOCK_SIZE) |
447 | { | 448 | { |
@@ -461,10 +462,10 @@ GNUNET_FS_directory_builder_add (struct GNUNET_FS_DirectoryBuilder *bld, | |||
461 | GNUNET_free (uris); | 462 | GNUNET_free (uris); |
462 | sptr = &serialized[slen + sizeof(uint32_t)]; | 463 | sptr = &serialized[slen + sizeof(uint32_t)]; |
463 | ret = | 464 | ret = |
464 | GNUNET_CONTAINER_meta_data_serialize (meta_use, &sptr, mds, | 465 | GNUNET_FS_meta_data_serialize (meta_use, &sptr, mds, |
465 | GNUNET_CONTAINER_META_DATA_SERIALIZE_PART); | 466 | GNUNET_FS_META_DATA_SERIALIZE_PART); |
466 | if (NULL != meta) | 467 | if (NULL != meta) |
467 | GNUNET_CONTAINER_meta_data_destroy (meta); | 468 | GNUNET_FS_meta_data_destroy (meta); |
468 | if (ret == -1) | 469 | if (ret == -1) |
469 | mds = 0; | 470 | mds = 0; |
470 | else | 471 | else |
@@ -593,7 +594,7 @@ GNUNET_FS_directory_builder_finish (struct GNUNET_FS_DirectoryBuilder *bld, | |||
593 | uint32_t big; | 594 | uint32_t big; |
594 | 595 | ||
595 | size = strlen (GNUNET_DIRECTORY_MAGIC) + sizeof(uint32_t); | 596 | size = strlen (GNUNET_DIRECTORY_MAGIC) + sizeof(uint32_t); |
596 | size += GNUNET_CONTAINER_meta_data_get_serialized_size (bld->meta); | 597 | size += GNUNET_FS_meta_data_get_serialized_size (bld->meta); |
597 | sizes = NULL; | 598 | sizes = NULL; |
598 | perm = NULL; | 599 | perm = NULL; |
599 | bes = NULL; | 600 | bes = NULL; |
@@ -643,10 +644,10 @@ GNUNET_FS_directory_builder_finish (struct GNUNET_FS_DirectoryBuilder *bld, | |||
643 | 644 | ||
644 | sptr = &data[off + sizeof(uint32_t)]; | 645 | sptr = &data[off + sizeof(uint32_t)]; |
645 | ret = | 646 | ret = |
646 | GNUNET_CONTAINER_meta_data_serialize (bld->meta, | 647 | GNUNET_FS_meta_data_serialize (bld->meta, |
647 | &sptr, | 648 | &sptr, |
648 | size - off - sizeof(uint32_t), | 649 | size - off - sizeof(uint32_t), |
649 | GNUNET_CONTAINER_META_DATA_SERIALIZE_FULL); | 650 | GNUNET_FS_META_DATA_SERIALIZE_FULL); |
650 | GNUNET_assert (ret != -1); | 651 | GNUNET_assert (ret != -1); |
651 | big = htonl (ret); | 652 | big = htonl (ret); |
652 | GNUNET_memcpy (&data[off], | 653 | GNUNET_memcpy (&data[off], |
@@ -666,7 +667,7 @@ GNUNET_FS_directory_builder_finish (struct GNUNET_FS_DirectoryBuilder *bld, | |||
666 | GNUNET_free (perm); | 667 | GNUNET_free (perm); |
667 | GNUNET_free (bes); | 668 | GNUNET_free (bes); |
668 | GNUNET_assert (off == size); | 669 | GNUNET_assert (off == size); |
669 | GNUNET_CONTAINER_meta_data_destroy (bld->meta); | 670 | GNUNET_FS_meta_data_destroy (bld->meta); |
670 | GNUNET_free (bld); | 671 | GNUNET_free (bld); |
671 | return GNUNET_OK; | 672 | return GNUNET_OK; |
672 | } | 673 | } |