diff options
author | Christian Grothoff <christian@grothoff.org> | 2010-01-03 21:42:52 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2010-01-03 21:42:52 +0000 |
commit | 3c5249af8087b0b1a4f131a3e19a9759639ab5db (patch) | |
tree | 697ff622324a7d259dc59da63205f398661a56fa /src/fs | |
parent | ebd1325d27e2062f3fb8e92766178ab0660c2dac (diff) | |
download | gnunet-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')
-rw-r--r-- | src/fs/fs_directory.c | 49 | ||||
-rw-r--r-- | src/fs/fs_file_information.c | 4 | ||||
-rw-r--r-- | src/fs/fs_getopt.c | 31 | ||||
-rw-r--r-- | src/fs/fs_publish.c | 14 | ||||
-rw-r--r-- | src/fs/fs_uri.c | 31 | ||||
-rw-r--r-- | src/fs/gnunet-directory.c | 21 | ||||
-rw-r--r-- | src/fs/gnunet-publish.c | 66 | ||||
-rw-r--r-- | src/fs/gnunet-search.c | 21 |
8 files changed, 149 insertions, 88 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); |
diff --git a/src/fs/fs_file_information.c b/src/fs/fs_file_information.c index c28635198..9c193f88b 100644 --- a/src/fs/fs_file_information.c +++ b/src/fs/fs_file_information.c | |||
@@ -364,7 +364,7 @@ struct DirScanCls | |||
364 | /** | 364 | /** |
365 | * Metadata extractors to use. | 365 | * Metadata extractors to use. |
366 | */ | 366 | */ |
367 | struct EXTRACTOR_Extractor *extractors; | 367 | struct EXTRACTOR_PluginList *extractors; |
368 | 368 | ||
369 | /** | 369 | /** |
370 | * Function to call on each directory entry. | 370 | * Function to call on each directory entry. |
@@ -518,7 +518,7 @@ GNUNET_FS_directory_scanner_default (void *cls, | |||
518 | void *proc_cls, | 518 | void *proc_cls, |
519 | char **emsg) | 519 | char **emsg) |
520 | { | 520 | { |
521 | struct EXTRACTOR_Extractor *ex = cls; | 521 | struct EXTRACTOR_PluginList *ex = cls; |
522 | struct DirScanCls dsc; | 522 | struct DirScanCls dsc; |
523 | 523 | ||
524 | dsc.extractors = ex; | 524 | dsc.extractors = ex; |
diff --git a/src/fs/fs_getopt.c b/src/fs/fs_getopt.c index a0d232641..f985ed8d0 100644 --- a/src/fs/fs_getopt.c +++ b/src/fs/fs_getopt.c | |||
@@ -131,7 +131,7 @@ GNUNET_FS_getopt_set_metadata (struct GNUNET_GETOPT_CommandLineProcessorContext* | |||
131 | 131 | ||
132 | { | 132 | { |
133 | struct GNUNET_CONTAINER_MetaData **mm = scls; | 133 | struct GNUNET_CONTAINER_MetaData **mm = scls; |
134 | EXTRACTOR_KeywordType type; | 134 | enum EXTRACTOR_MetaType type; |
135 | const char *typename; | 135 | const char *typename; |
136 | const char *typename_i18n; | 136 | const char *typename_i18n; |
137 | struct GNUNET_CONTAINER_MetaData *meta; | 137 | struct GNUNET_CONTAINER_MetaData *meta; |
@@ -151,17 +151,23 @@ GNUNET_FS_getopt_set_metadata (struct GNUNET_GETOPT_CommandLineProcessorContext* | |||
151 | "utf-8" | 151 | "utf-8" |
152 | #endif | 152 | #endif |
153 | ); | 153 | ); |
154 | type = EXTRACTOR_getHighestKeywordTypeNumber (); | 154 | type = EXTRACTOR_metatype_get_max (); |
155 | while (type > 0) | 155 | while (type > 0) |
156 | { | 156 | { |
157 | type--; | 157 | type--; |
158 | typename = EXTRACTOR_getKeywordTypeAsString (type); | 158 | typename = EXTRACTOR_metatype_to_string (type); |
159 | typename_i18n = dgettext (LIBEXTRACTOR_GETTEXT_DOMAIN, typename); | 159 | typename_i18n = dgettext (LIBEXTRACTOR_GETTEXT_DOMAIN, typename); |
160 | if ((strlen (tmp) >= strlen (typename) + 1) && | 160 | if ((strlen (tmp) >= strlen (typename) + 1) && |
161 | (tmp[strlen (typename)] == ':') && | 161 | (tmp[strlen (typename)] == ':') && |
162 | (0 == strncmp (typename, tmp, strlen (typename)))) | 162 | (0 == strncmp (typename, tmp, strlen (typename)))) |
163 | { | 163 | { |
164 | GNUNET_CONTAINER_meta_data_insert (meta, type, &tmp[strlen (typename) + 1]); | 164 | GNUNET_CONTAINER_meta_data_insert (meta, |
165 | "<gnunet>", | ||
166 | type, | ||
167 | EXTRACTOR_METAFORMAT_UTF8, | ||
168 | "text/plain", | ||
169 | &tmp[strlen (typename) + 1], | ||
170 | strlen (&tmp[strlen (typename) + 1])+1); | ||
165 | GNUNET_free (tmp); | 171 | GNUNET_free (tmp); |
166 | tmp = NULL; | 172 | tmp = NULL; |
167 | break; | 173 | break; |
@@ -170,8 +176,13 @@ GNUNET_FS_getopt_set_metadata (struct GNUNET_GETOPT_CommandLineProcessorContext* | |||
170 | (tmp[strlen (typename_i18n)] == ':') && | 176 | (tmp[strlen (typename_i18n)] == ':') && |
171 | (0 == strncmp (typename_i18n, tmp, strlen (typename_i18n)))) | 177 | (0 == strncmp (typename_i18n, tmp, strlen (typename_i18n)))) |
172 | { | 178 | { |
173 | GNUNET_CONTAINER_meta_data_insert (meta, type, | 179 | GNUNET_CONTAINER_meta_data_insert (meta, |
174 | &tmp[strlen (typename_i18n) + 1]); | 180 | "<gnunet>", |
181 | type, | ||
182 | EXTRACTOR_METAFORMAT_UTF8, | ||
183 | "text/plain", | ||
184 | &tmp[strlen (typename_i18n) + 1], | ||
185 | strlen (&tmp[strlen (typename_i18n) + 1]) + 1); | ||
175 | GNUNET_free (tmp); | 186 | GNUNET_free (tmp); |
176 | tmp = NULL; | 187 | tmp = NULL; |
177 | break; | 188 | break; |
@@ -179,7 +190,13 @@ GNUNET_FS_getopt_set_metadata (struct GNUNET_GETOPT_CommandLineProcessorContext* | |||
179 | } | 190 | } |
180 | if (tmp != NULL) | 191 | if (tmp != NULL) |
181 | { | 192 | { |
182 | GNUNET_CONTAINER_meta_data_insert (meta, EXTRACTOR_UNKNOWN, tmp); | 193 | GNUNET_CONTAINER_meta_data_insert (meta, |
194 | "<gnunet>", | ||
195 | EXTRACTOR_METATYPE_UNKNOWN, | ||
196 | EXTRACTOR_METAFORMAT_UTF8, | ||
197 | "text/plain", | ||
198 | tmp, | ||
199 | strlen(tmp) + 1); | ||
183 | GNUNET_free (tmp); | 200 | GNUNET_free (tmp); |
184 | printf (_ | 201 | printf (_ |
185 | ("Unknown metadata type in metadata option `%s'. Using metadata type `unknown' instead.\n"), | 202 | ("Unknown metadata type in metadata option `%s'. Using metadata type `unknown' instead.\n"), |
diff --git a/src/fs/fs_publish.c b/src/fs/fs_publish.c index 46b342cab..02ddb2a0d 100644 --- a/src/fs/fs_publish.c +++ b/src/fs/fs_publish.c | |||
@@ -842,7 +842,7 @@ do_upload (void *cls, | |||
842 | while (NULL != p->dir) | 842 | while (NULL != p->dir) |
843 | { | 843 | { |
844 | fn = GNUNET_CONTAINER_meta_data_get_by_type (p->meta, | 844 | fn = GNUNET_CONTAINER_meta_data_get_by_type (p->meta, |
845 | EXTRACTOR_FILENAME); | 845 | EXTRACTOR_METATYPE_FILENAME); |
846 | p = p->dir; | 846 | p = p->dir; |
847 | GNUNET_asprintf (&p->emsg, | 847 | GNUNET_asprintf (&p->emsg, |
848 | _("Recursive upload failed at `%s'"), | 848 | _("Recursive upload failed at `%s'"), |
@@ -1305,6 +1305,7 @@ GNUNET_FS_publish_ksk (struct GNUNET_FS_Handle *h, | |||
1305 | char *uris; | 1305 | char *uris; |
1306 | size_t size; | 1306 | size_t size; |
1307 | char *kbe; | 1307 | char *kbe; |
1308 | char *sptr; | ||
1308 | 1309 | ||
1309 | pkc = GNUNET_malloc (sizeof (struct PublishKskContext)); | 1310 | pkc = GNUNET_malloc (sizeof (struct PublishKskContext)); |
1310 | pkc->h = h; | 1311 | pkc->h = h; |
@@ -1324,8 +1325,7 @@ GNUNET_FS_publish_ksk (struct GNUNET_FS_Handle *h, | |||
1324 | return; | 1325 | return; |
1325 | } | 1326 | } |
1326 | } | 1327 | } |
1327 | pkc->mdsize = GNUNET_CONTAINER_meta_data_get_serialized_size (meta, | 1328 | pkc->mdsize = GNUNET_CONTAINER_meta_data_get_serialized_size (meta); |
1328 | GNUNET_CONTAINER_META_DATA_SERIALIZE_PART); | ||
1329 | GNUNET_assert (pkc->mdsize >= 0); | 1329 | GNUNET_assert (pkc->mdsize >= 0); |
1330 | uris = GNUNET_FS_uri_to_string (uri); | 1330 | uris = GNUNET_FS_uri_to_string (uri); |
1331 | pkc->slen = strlen (uris) + 1; | 1331 | pkc->slen = strlen (uris) + 1; |
@@ -1339,8 +1339,9 @@ GNUNET_FS_publish_ksk (struct GNUNET_FS_Handle *h, | |||
1339 | kbe = (char *) &pkc->kb[1]; | 1339 | kbe = (char *) &pkc->kb[1]; |
1340 | memcpy (kbe, uris, pkc->slen); | 1340 | memcpy (kbe, uris, pkc->slen); |
1341 | GNUNET_free (uris); | 1341 | GNUNET_free (uris); |
1342 | sptr = &kbe[pkc->slen]; | ||
1342 | pkc->mdsize = GNUNET_CONTAINER_meta_data_serialize (meta, | 1343 | pkc->mdsize = GNUNET_CONTAINER_meta_data_serialize (meta, |
1343 | &kbe[pkc->slen], | 1344 | &sptr, |
1344 | pkc->mdsize, | 1345 | pkc->mdsize, |
1345 | GNUNET_CONTAINER_META_DATA_SERIALIZE_PART); | 1346 | GNUNET_CONTAINER_META_DATA_SERIALIZE_PART); |
1346 | if (pkc->mdsize == -1) | 1347 | if (pkc->mdsize == -1) |
@@ -1480,8 +1481,7 @@ GNUNET_FS_publish_sks (struct GNUNET_FS_Handle *h, | |||
1480 | if (update == NULL) | 1481 | if (update == NULL) |
1481 | update = ""; | 1482 | update = ""; |
1482 | nidlen = strlen (update) + 1; | 1483 | nidlen = strlen (update) + 1; |
1483 | mdsize = GNUNET_CONTAINER_meta_data_get_serialized_size (meta, | 1484 | mdsize = GNUNET_CONTAINER_meta_data_get_serialized_size (meta); |
1484 | GNUNET_CONTAINER_META_DATA_SERIALIZE_PART); | ||
1485 | 1485 | ||
1486 | size = sizeof (struct SBlock) + slen + nidlen + mdsize; | 1486 | size = sizeof (struct SBlock) + slen + nidlen + mdsize; |
1487 | if (size > MAX_SBLOCK_SIZE) | 1487 | if (size > MAX_SBLOCK_SIZE) |
@@ -1496,7 +1496,7 @@ GNUNET_FS_publish_sks (struct GNUNET_FS_Handle *h, | |||
1496 | memcpy (dest, uris, slen); | 1496 | memcpy (dest, uris, slen); |
1497 | dest += slen; | 1497 | dest += slen; |
1498 | mdsize = GNUNET_CONTAINER_meta_data_serialize (meta, | 1498 | mdsize = GNUNET_CONTAINER_meta_data_serialize (meta, |
1499 | dest, | 1499 | &dest, |
1500 | mdsize, | 1500 | mdsize, |
1501 | GNUNET_CONTAINER_META_DATA_SERIALIZE_PART); | 1501 | GNUNET_CONTAINER_META_DATA_SERIALIZE_PART); |
1502 | if (mdsize == -1) | 1502 | if (mdsize == -1) |
diff --git a/src/fs/fs_uri.c b/src/fs/fs_uri.c index 02310a080..16b6e26e9 100644 --- a/src/fs/fs_uri.c +++ b/src/fs/fs_uri.c | |||
@@ -1469,19 +1469,34 @@ GNUNET_FS_uri_test_loc (const struct GNUNET_FS_Uri *uri) | |||
1469 | * Adds it to the URI. | 1469 | * Adds it to the URI. |
1470 | * | 1470 | * |
1471 | * @param cls URI to update | 1471 | * @param cls URI to update |
1472 | * @param type type of the meta data | 1472 | * @param plugin_name name of the plugin that produced this value; |
1473 | * @param data value of the meta data | 1473 | * special values can be used (i.e. '<zlib>' for zlib being |
1474 | * @return GNUNET_OK (always) | 1474 | * used in the main libextractor library and yielding |
1475 | * meta data). | ||
1476 | * @param type libextractor-type describing the meta data | ||
1477 | * @param format basic format information about data | ||
1478 | * @param data_mime_type mime-type of data (not of the original file); | ||
1479 | * can be NULL (if mime-type is not known) | ||
1480 | * @param data actual meta-data found | ||
1481 | * @param data_len number of bytes in data | ||
1482 | * @return 0 (always) | ||
1475 | */ | 1483 | */ |
1476 | static int | 1484 | static int |
1477 | gather_uri_data (void *cls, | 1485 | gather_uri_data (void *cls, |
1478 | EXTRACTOR_KeywordType type, | 1486 | const char *plugin_name, |
1479 | const char *data) | 1487 | enum EXTRACTOR_MetaType type, |
1488 | enum EXTRACTOR_MetaFormat format, | ||
1489 | const char *data_mime_type, | ||
1490 | const char *data, | ||
1491 | size_t data_len) | ||
1480 | { | 1492 | { |
1481 | struct GNUNET_FS_Uri *uri = cls; | 1493 | struct GNUNET_FS_Uri *uri = cls; |
1482 | char *nkword; | 1494 | char *nkword; |
1483 | int j; | 1495 | int j; |
1484 | 1496 | ||
1497 | if ( (format != EXTRACTOR_METAFORMAT_UTF8) && | ||
1498 | (format != EXTRACTOR_METAFORMAT_C_STRING) ) | ||
1499 | return 0; | ||
1485 | for (j = uri->data.ksk.keywordCount - 1; j >= 0; j--) | 1500 | for (j = uri->data.ksk.keywordCount - 1; j >= 0; j--) |
1486 | if (0 == strcmp (&uri->data.ksk.keywords[j][1], data)) | 1501 | if (0 == strcmp (&uri->data.ksk.keywords[j][1], data)) |
1487 | return GNUNET_OK; | 1502 | return GNUNET_OK; |
@@ -1489,7 +1504,7 @@ gather_uri_data (void *cls, | |||
1489 | strcpy (nkword, " "); /* not mandatory */ | 1504 | strcpy (nkword, " "); /* not mandatory */ |
1490 | strcat (nkword, data); | 1505 | strcat (nkword, data); |
1491 | uri->data.ksk.keywords[uri->data.ksk.keywordCount++] = nkword; | 1506 | uri->data.ksk.keywords[uri->data.ksk.keywordCount++] = nkword; |
1492 | return GNUNET_OK; | 1507 | return 0; |
1493 | } | 1508 | } |
1494 | 1509 | ||
1495 | 1510 | ||
@@ -1514,8 +1529,8 @@ GNUNET_FS_uri_ksk_create_from_meta_data (const struct GNUNET_CONTAINER_MetaData | |||
1514 | ret->data.ksk.keywords = NULL; | 1529 | ret->data.ksk.keywords = NULL; |
1515 | ret->data.ksk.keywords | 1530 | ret->data.ksk.keywords |
1516 | = GNUNET_malloc (sizeof (char *) * | 1531 | = GNUNET_malloc (sizeof (char *) * |
1517 | GNUNET_CONTAINER_meta_data_get_contents (md, NULL, NULL)); | 1532 | GNUNET_CONTAINER_meta_data_iterate (md, NULL, NULL)); |
1518 | GNUNET_CONTAINER_meta_data_get_contents (md, &gather_uri_data, ret); | 1533 | GNUNET_CONTAINER_meta_data_iterate (md, &gather_uri_data, ret); |
1519 | return ret; | 1534 | return ret; |
1520 | 1535 | ||
1521 | } | 1536 | } |
diff --git a/src/fs/gnunet-directory.c b/src/fs/gnunet-directory.c index 6201c5dbb..3ea76985e 100644 --- a/src/fs/gnunet-directory.c +++ b/src/fs/gnunet-directory.c | |||
@@ -36,13 +36,20 @@ static int ret; | |||
36 | */ | 36 | */ |
37 | static int | 37 | static int |
38 | item_printer (void *cls, | 38 | item_printer (void *cls, |
39 | EXTRACTOR_KeywordType type, | 39 | const char *plugin_name, |
40 | const char *data) | 40 | enum EXTRACTOR_MetaType type, |
41 | enum EXTRACTOR_MetaFormat format, | ||
42 | const char *data_mime_type, | ||
43 | const char *data, | ||
44 | size_t data_size) | ||
41 | { | 45 | { |
46 | if ( (format != EXTRACTOR_METAFORMAT_UTF8) && | ||
47 | (format != EXTRACTOR_METAFORMAT_C_STRING) ) | ||
48 | return 0; | ||
42 | printf ("\t%20s: %s\n", | 49 | printf ("\t%20s: %s\n", |
43 | dgettext (LIBEXTRACTOR_GETTEXT_DOMAIN, | 50 | dgettext (LIBEXTRACTOR_GETTEXT_DOMAIN, |
44 | EXTRACTOR_getKeywordTypeAsString (type)), data); | 51 | EXTRACTOR_metatype_to_string (type)), data); |
45 | return GNUNET_OK; | 52 | return 0; |
46 | } | 53 | } |
47 | 54 | ||
48 | 55 | ||
@@ -75,9 +82,9 @@ print_entry (void *cls, | |||
75 | string = GNUNET_FS_uri_to_string (uri); | 82 | string = GNUNET_FS_uri_to_string (uri); |
76 | printf ("%s:\n", string); | 83 | printf ("%s:\n", string); |
77 | GNUNET_free (string); | 84 | GNUNET_free (string); |
78 | GNUNET_CONTAINER_meta_data_get_contents (meta, | 85 | GNUNET_CONTAINER_meta_data_iterate (meta, |
79 | &item_printer, | 86 | &item_printer, |
80 | NULL); | 87 | NULL); |
81 | } | 88 | } |
82 | 89 | ||
83 | 90 | ||
diff --git a/src/fs/gnunet-publish.c b/src/fs/gnunet-publish.c index e3918f6fb..65f437f11 100644 --- a/src/fs/gnunet-publish.c +++ b/src/fs/gnunet-publish.c | |||
@@ -140,43 +140,57 @@ progress_cb (void *cls, | |||
140 | * @param cls closure | 140 | * @param cls closure |
141 | * @param type type of the meta data | 141 | * @param type type of the meta data |
142 | * @param data value of the meta data | 142 | * @param data value of the meta data |
143 | * @return GNUNET_OK to continue to iterate, GNUNET_SYSERR to abort | 143 | * @return always 0 |
144 | */ | 144 | */ |
145 | static int | 145 | static int |
146 | meta_printer (void *cls, | 146 | meta_printer (void *cls, |
147 | EXTRACTOR_KeywordType type, | 147 | const char *plugin_name, |
148 | const char *data) | 148 | enum EXTRACTOR_MetaType type, |
149 | enum EXTRACTOR_MetaFormat format, | ||
150 | const char *data_mime_type, | ||
151 | const char *data, | ||
152 | size_t data_size) | ||
149 | { | 153 | { |
150 | if ( (type == EXTRACTOR_FILENAME) || | 154 | if ( (format != EXTRACTOR_METAFORMAT_UTF8) && |
151 | (EXTRACTOR_isBinaryType (type)) ) | 155 | (format != EXTRACTOR_METAFORMAT_C_STRING) ) |
152 | return GNUNET_OK; | 156 | return 0; |
157 | if (type == EXTRACTOR_METATYPE_FILENAME) | ||
158 | return 0; | ||
153 | fprintf (stdout, | 159 | fprintf (stdout, |
154 | "%s - %s", | 160 | "%s - %s", |
155 | EXTRACTOR_getKeywordTypeAsString (type), | 161 | EXTRACTOR_metatype_to_string (type), |
156 | data); | 162 | data); |
157 | return GNUNET_OK; | 163 | return 0; |
158 | } | 164 | } |
159 | 165 | ||
160 | 166 | ||
161 | /** | 167 | /** |
162 | * Merge metadata entries (except binary | 168 | * Merge metadata entries. |
163 | * metadata). | ||
164 | * | 169 | * |
165 | * @param cls closure, target metadata structure | 170 | * @param cls closure, target metadata structure |
166 | * @param type type of the meta data | 171 | * @param type type of the meta data |
167 | * @param data value of the meta data | 172 | * @param data value of the meta data |
168 | * @return GNUNET_OK to continue to iterate, GNUNET_SYSERR to abort | 173 | * @return always 0 |
169 | */ | 174 | */ |
170 | static int | 175 | static int |
171 | meta_merger (void *cls, | 176 | meta_merger (void *cls, |
172 | EXTRACTOR_KeywordType type, | 177 | const char *plugin_name, |
173 | const char *data) | 178 | enum EXTRACTOR_MetaType type, |
179 | enum EXTRACTOR_MetaFormat format, | ||
180 | const char *data_mime_type, | ||
181 | const char *data, | ||
182 | size_t data_size) | ||
174 | { | 183 | { |
175 | struct GNUNET_CONTAINER_MetaData *m = cls; | 184 | struct GNUNET_CONTAINER_MetaData *m = cls; |
185 | |||
176 | GNUNET_CONTAINER_meta_data_insert (m, | 186 | GNUNET_CONTAINER_meta_data_insert (m, |
187 | plugin_name, | ||
177 | type, | 188 | type, |
178 | data); | 189 | format, |
179 | return GNUNET_OK; | 190 | data_mime_type, |
191 | data, | ||
192 | data_size); | ||
193 | return 0; | ||
180 | } | 194 | } |
181 | 195 | ||
182 | 196 | ||
@@ -227,16 +241,16 @@ publish_inspector (void *cls, | |||
227 | } | 241 | } |
228 | if (NULL != meta) | 242 | if (NULL != meta) |
229 | { | 243 | { |
230 | GNUNET_CONTAINER_meta_data_get_contents (meta, | 244 | GNUNET_CONTAINER_meta_data_iterate (meta, |
231 | &meta_merger, | 245 | &meta_merger, |
232 | m); | 246 | m); |
233 | GNUNET_CONTAINER_meta_data_destroy (meta); | 247 | GNUNET_CONTAINER_meta_data_destroy (meta); |
234 | meta = NULL; | 248 | meta = NULL; |
235 | } | 249 | } |
236 | if (extract_only) | 250 | if (extract_only) |
237 | { | 251 | { |
238 | fn = GNUNET_CONTAINER_meta_data_get_by_type (meta, | 252 | fn = GNUNET_CONTAINER_meta_data_get_by_type (meta, |
239 | EXTRACTOR_FILENAME); | 253 | EXTRACTOR_METATYPE_FILENAME); |
240 | fs = GNUNET_STRINGS_byte_size_fancy (length); | 254 | fs = GNUNET_STRINGS_byte_size_fancy (length); |
241 | fprintf (stdout, | 255 | fprintf (stdout, |
242 | _("Keywords for file `%s' (%s)\n"), | 256 | _("Keywords for file `%s' (%s)\n"), |
@@ -244,9 +258,9 @@ publish_inspector (void *cls, | |||
244 | fs); | 258 | fs); |
245 | GNUNET_free (fn); | 259 | GNUNET_free (fn); |
246 | GNUNET_free (fs); | 260 | GNUNET_free (fs); |
247 | GNUNET_CONTAINER_meta_data_get_contents (meta, | 261 | GNUNET_CONTAINER_meta_data_iterate (meta, |
248 | &meta_printer, | 262 | &meta_printer, |
249 | NULL); | 263 | NULL); |
250 | fprintf (stdout, "\n"); | 264 | fprintf (stdout, "\n"); |
251 | } | 265 | } |
252 | if (GNUNET_FS_meta_data_test_for_directory (meta)) | 266 | if (GNUNET_FS_meta_data_test_for_directory (meta)) |
@@ -275,7 +289,7 @@ run (void *cls, | |||
275 | { | 289 | { |
276 | struct GNUNET_FS_FileInformation *fi; | 290 | struct GNUNET_FS_FileInformation *fi; |
277 | struct GNUNET_FS_Namespace *namespace; | 291 | struct GNUNET_FS_Namespace *namespace; |
278 | EXTRACTOR_ExtractorList *l; | 292 | struct EXTRACTOR_PluginList *l; |
279 | char *ex; | 293 | char *ex; |
280 | char *emsg; | 294 | char *emsg; |
281 | 295 | ||
@@ -377,13 +391,13 @@ run (void *cls, | |||
377 | l = NULL; | 391 | l = NULL; |
378 | if (! disable_extractor) | 392 | if (! disable_extractor) |
379 | { | 393 | { |
380 | l = EXTRACTOR_loadDefaultLibraries (); | 394 | l = EXTRACTOR_plugin_add_defaults (EXTRACTOR_OPTION_DEFAULT_POLICY); |
381 | if (GNUNET_OK == | 395 | if (GNUNET_OK == |
382 | GNUNET_CONFIGURATION_get_value_string (cfg, "FS", "EXTRACTORS", | 396 | GNUNET_CONFIGURATION_get_value_string (cfg, "FS", "EXTRACTORS", |
383 | &ex)) | 397 | &ex)) |
384 | { | 398 | { |
385 | if (strlen (ex) > 0) | 399 | if (strlen (ex) > 0) |
386 | l = EXTRACTOR_loadConfigLibraries (l, ex); | 400 | l = EXTRACTOR_plugin_add_config (l, ex, EXTRACTOR_OPTION_DEFAULT_POLICY); |
387 | GNUNET_free (ex); | 401 | GNUNET_free (ex); |
388 | } | 402 | } |
389 | } | 403 | } |
@@ -396,7 +410,7 @@ run (void *cls, | |||
396 | priority, | 410 | priority, |
397 | GNUNET_TIME_relative_to_absolute (DEFAULT_EXPIRATION), | 411 | GNUNET_TIME_relative_to_absolute (DEFAULT_EXPIRATION), |
398 | &emsg); | 412 | &emsg); |
399 | EXTRACTOR_removeAll (l); | 413 | EXTRACTOR_plugin_remove_all (l); |
400 | if (fi == NULL) | 414 | if (fi == NULL) |
401 | { | 415 | { |
402 | fprintf (stderr, | 416 | fprintf (stderr, |
diff --git a/src/fs/gnunet-search.c b/src/fs/gnunet-search.c index 067d77159..4836f9d83 100644 --- a/src/fs/gnunet-search.c +++ b/src/fs/gnunet-search.c | |||
@@ -45,12 +45,19 @@ static int verbose; | |||
45 | 45 | ||
46 | static int | 46 | static int |
47 | item_printer (void *cls, | 47 | item_printer (void *cls, |
48 | EXTRACTOR_KeywordType type, | 48 | const char *plugin_name, |
49 | const char *data) | 49 | enum EXTRACTOR_MetaType type, |
50 | enum EXTRACTOR_MetaFormat format, | ||
51 | const char *data_mime_type, | ||
52 | const char *data, | ||
53 | size_t data_size) | ||
50 | { | 54 | { |
55 | if ( (format != EXTRACTOR_METAFORMAT_UTF8) && | ||
56 | (format != EXTRACTOR_METAFORMAT_C_STRING) ) | ||
57 | return 0; | ||
51 | printf ("\t%20s: %s\n", | 58 | printf ("\t%20s: %s\n", |
52 | dgettext (LIBEXTRACTOR_GETTEXT_DOMAIN, | 59 | dgettext (LIBEXTRACTOR_GETTEXT_DOMAIN, |
53 | EXTRACTOR_getKeywordTypeAsString (type)), | 60 | EXTRACTOR_metatype_to_string (type)), |
54 | data); | 61 | data); |
55 | return GNUNET_OK; | 62 | return GNUNET_OK; |
56 | } | 63 | } |
@@ -86,7 +93,7 @@ progress_cb (void *cls, | |||
86 | printf ("%s:\n", uri); | 93 | printf ("%s:\n", uri); |
87 | filename = | 94 | filename = |
88 | GNUNET_CONTAINER_meta_data_get_by_type (info->value.search.specifics.result.meta, | 95 | GNUNET_CONTAINER_meta_data_get_by_type (info->value.search.specifics.result.meta, |
89 | EXTRACTOR_FILENAME); | 96 | EXTRACTOR_METATYPE_FILENAME); |
90 | if (filename != NULL) | 97 | if (filename != NULL) |
91 | { | 98 | { |
92 | while (NULL != (dotdot = strstr (filename, ".."))) | 99 | while (NULL != (dotdot = strstr (filename, ".."))) |
@@ -98,9 +105,9 @@ progress_cb (void *cls, | |||
98 | else | 105 | else |
99 | printf ("gnunet-download %s\n", uri); | 106 | printf ("gnunet-download %s\n", uri); |
100 | if (verbose) | 107 | if (verbose) |
101 | GNUNET_CONTAINER_meta_data_get_contents (info->value.search.specifics.result.meta, | 108 | GNUNET_CONTAINER_meta_data_iterate (info->value.search.specifics.result.meta, |
102 | &item_printer, | 109 | &item_printer, |
103 | NULL); | 110 | NULL); |
104 | printf ("\n"); | 111 | printf ("\n"); |
105 | fflush(stdout); | 112 | fflush(stdout); |
106 | GNUNET_free_non_null (filename); | 113 | GNUNET_free_non_null (filename); |