aboutsummaryrefslogtreecommitdiff
path: root/src/fs/fs_directory.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2010-01-03 21:42:52 +0000
committerChristian Grothoff <christian@grothoff.org>2010-01-03 21:42:52 +0000
commit3c5249af8087b0b1a4f131a3e19a9759639ab5db (patch)
tree697ff622324a7d259dc59da63205f398661a56fa /src/fs/fs_directory.c
parentebd1325d27e2062f3fb8e92766178ab0660c2dac (diff)
downloadgnunet-3c5249af8087b0b1a4f131a3e19a9759639ab5db.tar.gz
gnunet-3c5249af8087b0b1a4f131a3e19a9759639ab5db.zip
adapting main code base to work with libextractor 0.6 API; testcases will follow later
Diffstat (limited to 'src/fs/fs_directory.c')
-rw-r--r--src/fs/fs_directory.c49
1 files changed, 25 insertions, 24 deletions
diff --git a/src/fs/fs_directory.c b/src/fs/fs_directory.c
index e037130c8..48578c650 100644
--- a/src/fs/fs_directory.c
+++ b/src/fs/fs_directory.c
@@ -36,10 +36,6 @@
36#include "gnunet_fs_service.h" 36#include "gnunet_fs_service.h"
37#include "fs.h" 37#include "fs.h"
38 38
39#ifndef EXTRACTOR_GNUNET_FULL_DATA
40#define EXTRACTOR_GNUNET_FULL_DATA 137
41#endif
42
43/** 39/**
44 * String that is used to indicate that a file 40 * String that is used to indicate that a file
45 * is a GNUnet directory. 41 * is a GNUnet directory.
@@ -60,7 +56,7 @@ GNUNET_FS_meta_data_test_for_directory (const struct GNUNET_CONTAINER_MetaData *
60 char *mime; 56 char *mime;
61 int ret; 57 int ret;
62 58
63 mime = GNUNET_CONTAINER_meta_data_get_by_type (md, EXTRACTOR_MIMETYPE); 59 mime = GNUNET_CONTAINER_meta_data_get_by_type (md, EXTRACTOR_METATYPE_MIMETYPE);
64 if (mime == NULL) 60 if (mime == NULL)
65 return GNUNET_SYSERR; 61 return GNUNET_SYSERR;
66 ret = (0 == strcmp (mime, GNUNET_FS_DIRECTORY_MIME)) ? GNUNET_YES : GNUNET_NO; 62 ret = (0 == strcmp (mime, GNUNET_FS_DIRECTORY_MIME)) ? GNUNET_YES : GNUNET_NO;
@@ -80,7 +76,7 @@ GNUNET_FS_meta_data_make_directory (struct GNUNET_CONTAINER_MetaData *md)
80{ 76{
81 char *mime; 77 char *mime;
82 78
83 mime = GNUNET_CONTAINER_meta_data_get_by_type (md, EXTRACTOR_MIMETYPE); 79 mime = GNUNET_CONTAINER_meta_data_get_by_type (md, EXTRACTOR_METATYPE_MIMETYPE);
84 if (mime != NULL) 80 if (mime != NULL)
85 { 81 {
86 GNUNET_break (0 == strcmp (mime, 82 GNUNET_break (0 == strcmp (mime,
@@ -89,8 +85,12 @@ GNUNET_FS_meta_data_make_directory (struct GNUNET_CONTAINER_MetaData *md)
89 return; 85 return;
90 } 86 }
91 GNUNET_CONTAINER_meta_data_insert (md, 87 GNUNET_CONTAINER_meta_data_insert (md,
92 EXTRACTOR_MIMETYPE, 88 "<gnunet>",
93 GNUNET_FS_DIRECTORY_MIME); 89 EXTRACTOR_METATYPE_MIMETYPE,
90 EXTRACTOR_METAFORMAT_UTF8,
91 "text/plain",
92 GNUNET_FS_DIRECTORY_MIME,
93 strlen (GNUNET_FS_DIRECTORY_MIME)+1);
94} 94}
95 95
96 96
@@ -225,9 +225,9 @@ GNUNET_FS_directory_list_contents (size_t size,
225 } 225 }
226 pos += mdSize; 226 pos += mdSize;
227 filename = GNUNET_CONTAINER_meta_data_get_by_type (md, 227 filename = GNUNET_CONTAINER_meta_data_get_by_type (md,
228 EXTRACTOR_FILENAME); 228 EXTRACTOR_METATYPE_FILENAME);
229 file_data = GNUNET_CONTAINER_meta_data_get_by_type (md, 229 file_data = GNUNET_CONTAINER_meta_data_get_by_type (md,
230 EXTRACTOR_GNUNET_FULL_DATA); 230 EXTRACTOR_METATYPE_GNUNET_FULL_DATA);
231 if (dep != NULL) 231 if (dep != NULL)
232 dep (dep_cls, 232 dep (dep_cls,
233 filename, 233 filename,
@@ -322,6 +322,7 @@ GNUNET_FS_directory_builder_add (struct GNUNET_FS_DirectoryBuilder *bld,
322 size_t mdxs; 322 size_t mdxs;
323 char *uris; 323 char *uris;
324 char *ser; 324 char *ser;
325 char *sptr;
325 size_t slen; 326 size_t slen;
326 struct GNUNET_CONTAINER_MetaData *meta; 327 struct GNUNET_CONTAINER_MetaData *meta;
327 const struct GNUNET_CONTAINER_MetaData *meta_use; 328 const struct GNUNET_CONTAINER_MetaData *meta_use;
@@ -340,25 +341,24 @@ GNUNET_FS_directory_builder_add (struct GNUNET_FS_DirectoryBuilder *bld,
340 fsize = 0; /* not given */ 341 fsize = 0; /* not given */
341 if (fsize > MAX_INLINE_SIZE) 342 if (fsize > MAX_INLINE_SIZE)
342 fsize = 0; /* too large */ 343 fsize = 0; /* too large */
343 if ( (NULL == data) ||
344 (NULL != memchr (data, 0, fsize)) )
345 fsize = 0; /* must not have 0's in data! */
346 uris = GNUNET_FS_uri_to_string (uri); 344 uris = GNUNET_FS_uri_to_string (uri);
347 slen = strlen (uris) + 1; 345 slen = strlen (uris) + 1;
348 mds = 346 mds =
349 GNUNET_CONTAINER_meta_data_get_serialized_size (md, 347 GNUNET_CONTAINER_meta_data_get_serialized_size (md);
350 GNUNET_CONTAINER_META_DATA_SERIALIZE_FULL);
351 meta_use = md; 348 meta_use = md;
352 meta = NULL; 349 meta = NULL;
353 if (fsize > 0) 350 if (fsize > 0)
354 { 351 {
355 meta = GNUNET_CONTAINER_meta_data_duplicate (md); 352 meta = GNUNET_CONTAINER_meta_data_duplicate (md);
356 GNUNET_CONTAINER_meta_data_insert (meta, 353 GNUNET_CONTAINER_meta_data_insert (meta,
357 EXTRACTOR_GNUNET_FULL_DATA, 354 "<gnunet>",
358 data); 355 EXTRACTOR_METATYPE_GNUNET_FULL_DATA,
356 EXTRACTOR_METAFORMAT_BINARY,
357 NULL,
358 data,
359 fsize);
359 mdxs = 360 mdxs =
360 GNUNET_CONTAINER_meta_data_get_serialized_size (meta, 361 GNUNET_CONTAINER_meta_data_get_serialized_size (meta);
361 GNUNET_CONTAINER_META_DATA_SERIALIZE_FULL);
362 if ( (slen + sizeof (uint32_t) + mdxs - 1) / DBLOCK_SIZE == 362 if ( (slen + sizeof (uint32_t) + mdxs - 1) / DBLOCK_SIZE ==
363 (slen + sizeof (uint32_t) + mds - 1) / DBLOCK_SIZE) 363 (slen + sizeof (uint32_t) + mds - 1) / DBLOCK_SIZE)
364 { 364 {
@@ -376,8 +376,9 @@ GNUNET_FS_directory_builder_add (struct GNUNET_FS_DirectoryBuilder *bld,
376 ser = (char*) &e[1]; 376 ser = (char*) &e[1];
377 memcpy (ser, uris, slen); 377 memcpy (ser, uris, slen);
378 GNUNET_free (uris); 378 GNUNET_free (uris);
379 sptr = &ser[slen + sizeof(uint32_t)];
379 ret = GNUNET_CONTAINER_meta_data_serialize (meta_use, 380 ret = GNUNET_CONTAINER_meta_data_serialize (meta_use,
380 &ser[slen + sizeof(uint32_t)], 381 &sptr,
381 mds, 382 mds,
382 GNUNET_CONTAINER_META_DATA_SERIALIZE_PART); 383 GNUNET_CONTAINER_META_DATA_SERIALIZE_PART);
383 if (NULL != meta) 384 if (NULL != meta)
@@ -503,6 +504,7 @@ GNUNET_FS_directory_builder_finish (struct GNUNET_FS_DirectoryBuilder *bld,
503 void **rdata) 504 void **rdata)
504{ 505{
505 char *data; 506 char *data;
507 char *sptr;
506 size_t *sizes; 508 size_t *sizes;
507 unsigned int *perm; 509 unsigned int *perm;
508 unsigned int i; 510 unsigned int i;
@@ -516,8 +518,7 @@ GNUNET_FS_directory_builder_finish (struct GNUNET_FS_DirectoryBuilder *bld,
516 uint32_t big; 518 uint32_t big;
517 519
518 size = 8 + sizeof (uint32_t); 520 size = 8 + sizeof (uint32_t);
519 size += GNUNET_CONTAINER_meta_data_get_serialized_size (bld->meta, 521 size += GNUNET_CONTAINER_meta_data_get_serialized_size (bld->meta);
520 GNUNET_CONTAINER_META_DATA_SERIALIZE_FULL);
521 sizes = NULL; 522 sizes = NULL;
522 perm = NULL; 523 perm = NULL;
523 bes = NULL; 524 bes = NULL;
@@ -560,9 +561,9 @@ GNUNET_FS_directory_builder_finish (struct GNUNET_FS_DirectoryBuilder *bld,
560 memcpy (data, GNUNET_DIRECTORY_MAGIC, 8); 561 memcpy (data, GNUNET_DIRECTORY_MAGIC, 8);
561 off = 8; 562 off = 8;
562 563
564 sptr = &data[off + sizeof (uint32_t)];
563 ret = GNUNET_CONTAINER_meta_data_serialize (bld->meta, 565 ret = GNUNET_CONTAINER_meta_data_serialize (bld->meta,
564 &data[off + 566 &sptr,
565 sizeof (uint32_t)],
566 size - off - sizeof (uint32_t), 567 size - off - sizeof (uint32_t),
567 GNUNET_CONTAINER_META_DATA_SERIALIZE_FULL); 568 GNUNET_CONTAINER_META_DATA_SERIALIZE_FULL);
568 GNUNET_assert (ret != -1); 569 GNUNET_assert (ret != -1);