From 695f7138383c64e438fc2a98ea0e730f8332c953 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Tue, 26 Oct 2010 22:20:20 +0000 Subject: [PATCH] api to add keyword --- src/fs/fs_uri.c | 33 +++++++++++++++++++++++++++++++++ src/include/gnunet_fs_service.h | 14 ++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/src/fs/fs_uri.c b/src/fs/fs_uri.c index 9a4f72201..781871824 100644 --- a/src/fs/fs_uri.c +++ b/src/fs/fs_uri.c @@ -765,6 +765,39 @@ GNUNET_FS_uri_ksk_get_keywords (const struct GNUNET_FS_Uri *uri, } +/** + * Add the given keyword to the set of keywords represented by the URI. + * Does nothing if the keyword is already present. + * + * @param uri ksk uri to modify + * @param keyword keyword to add + * @param is_mandatory is this keyword mandatory? + */ +void +GNUNET_FS_uri_ksk_add_keyword (struct GNUNET_FS_Uri *uri, + const char *keyword, + int is_mandatory) +{ + unsigned int i; + const char *old; + char *n; + + GNUNET_assert (uri->type == ksk); + for (i = 0; i < uri->data.ksk.keywordCount; i++) + { + old = uri->data.ksk.keywords[i]; + if (0 == strcmp (&old[1], keyword)) + return; + } + GNUNET_asprintf (&n, + is_mandatory ? "+%s" : " %s", + keyword); + GNUNET_array_append (uri->data.ksk.keywords, + uri->data.ksk.keywordCount, + n); +} + + /** * Obtain the identity of the peer offering the data * diff --git a/src/include/gnunet_fs_service.h b/src/include/gnunet_fs_service.h index 8e71308ba..8477c534d 100644 --- a/src/include/gnunet_fs_service.h +++ b/src/include/gnunet_fs_service.h @@ -114,6 +114,20 @@ char * GNUNET_FS_uri_ksk_to_string_fancy (const struct GNUNET_FS_Uri *uri); +/** + * Add the given keyword to the set of keywords represented by the URI. + * Does nothing if the keyword is already present. + * + * @param uri ksk uri to modify + * @param keyword keyword to add + * @param is_mandatory is this keyword mandatory? + */ +void +GNUNET_FS_uri_ksk_add_keyword (struct GNUNET_FS_Uri *uri, + const char *keyword, + int is_mandatory); + + /** * Convert a UTF-8 String to a URI. * -- 2.25.1