From: Christian Grothoff Date: Tue, 26 Oct 2010 22:26:09 +0000 (+0000) Subject: api to remove keyword X-Git-Tag: initial-import-from-subversion-38251~19942 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=4c4162597814cdbbdd5748024671c03615b203d3;p=oweals%2Fgnunet.git api to remove keyword --- diff --git a/src/fs/fs_uri.c b/src/fs/fs_uri.c index 781871824..dff4b8686 100644 --- a/src/fs/fs_uri.c +++ b/src/fs/fs_uri.c @@ -798,6 +798,37 @@ GNUNET_FS_uri_ksk_add_keyword (struct GNUNET_FS_Uri *uri, } +/** + * Remove the given keyword from the set of keywords represented by the URI. + * Does nothing if the keyword is not present. + * + * @param uri ksk uri to modify + * @param keyword keyword to add + */ +void +GNUNET_FS_uri_ksk_remove_keyword (struct GNUNET_FS_Uri *uri, + const char *keyword) +{ + unsigned int i; + char *old; + + 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)) + { + uri->data.ksk.keywords[i] = uri->data.ksk.keywords[uri->data.ksk.keywordCount-1]; + GNUNET_array_grow (uri->data.ksk.keywords, + uri->data.ksk.keywordCount, + uri->data.ksk.keywordCount - 1); + GNUNET_free (old); + return; + } + } +} + + /** * 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 8477c534d..0e5dccc2d 100644 --- a/src/include/gnunet_fs_service.h +++ b/src/include/gnunet_fs_service.h @@ -128,6 +128,18 @@ GNUNET_FS_uri_ksk_add_keyword (struct GNUNET_FS_Uri *uri, int is_mandatory); +/** + * Remove the given keyword from the set of keywords represented by the URI. + * Does nothing if the keyword is not present. + * + * @param uri ksk uri to modify + * @param keyword keyword to add + */ +void +GNUNET_FS_uri_ksk_remove_keyword (struct GNUNET_FS_Uri *uri, + const char *keyword); + + /** * Convert a UTF-8 String to a URI. *