From 38caddcf934f3378613a8a81d2163abe5cb84544 Mon Sep 17 00:00:00 2001 From: Michael Drake Date: Mon, 26 Sep 2011 13:27:20 +0000 Subject: Add means to find out if a NetSurf URL object contains a given component. svn path=/trunk/netsurf/; revision=12883 --- utils/nsurl.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ utils/nsurl.h | 22 ++++++++++++++++++++++ 2 files changed, 81 insertions(+) (limited to 'utils') diff --git a/utils/nsurl.c b/utils/nsurl.c index 6c51609f5..0c4d1ee07 100644 --- a/utils/nsurl.c +++ b/utils/nsurl.c @@ -1181,6 +1181,65 @@ nserror nsurl_get(const nsurl *url, nsurl_component parts, } +/* exported interface, documented in nsurl.h */ +bool nsurl_enquire(const nsurl *url, nsurl_component part) +{ + assert(url != NULL); + + if (part == NSURL_SCHEME) { + if (url->scheme != NULL) + return true; + else + return false; + + } else if (part == NSURL_QUERY) { + if (url->query != NULL) + return true; + else + return false; + + } else if (part == NSURL_USERNAME || part == NSURL_CREDENTIALS) { + if (url->username != NULL) + return true; + else + return false; + + } else if (part == NSURL_PASSWORD) { + if (url->password != NULL) + return true; + else + return false; + + } else if (part == NSURL_HOST) { + if (url->host != NULL) + return true; + else + return false; + + } else if (part == NSURL_PORT) { + if (url->port != NULL) + return true; + else + return false; + + } else if (part == NSURL_PATH) { + if (url->path != NULL) + return true; + else + return false; + + } else if (part == NSURL_FRAGMENT) { + if (url->fragment != NULL) + return true; + else + return false; + } + + LOG(("Unsupported value passed to part param.")); + assert(0); +} + + /* exported interface, documented in nsurl.h */ const char *nsurl_access(const nsurl *url) { diff --git a/utils/nsurl.h b/utils/nsurl.h index ac62c7ced..fe29c2f1d 100644 --- a/utils/nsurl.h +++ b/utils/nsurl.h @@ -124,6 +124,28 @@ nserror nsurl_get(const nsurl *url, nsurl_component parts, char **url_s, size_t *url_l); +/** + * Enquire about the existence of componenets in a given URL + * + * \param url NetSurf URL object + * \param part The URL components confirm existence of + * \return true iff the component in question exists in url + * + * The valid values for the part parameter are: + * NSURL_SCHEME + * NSURL_USERNAME + * NSURL_PASSWORD + * NSURL_CREDENTIALS + * NSURL_HOST + * NSURL_PORT + * NSURL_AUTHORITY + * NSURL_PATH + * NSURL_QUERY + * NSURL_FRAGMENT + */ +bool nsurl_enquire(const nsurl *url, nsurl_component part); + + /** * Access a NetSurf URL object as a string * -- cgit v1.2.3