summaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
Diffstat (limited to 'utils')
-rw-r--r--utils/nsurl.c32
-rw-r--r--utils/nsurl.h14
2 files changed, 46 insertions, 0 deletions
diff --git a/utils/nsurl.c b/utils/nsurl.c
index 47b7f5451..8c525452a 100644
--- a/utils/nsurl.c
+++ b/utils/nsurl.c
@@ -1564,6 +1564,38 @@ const char *nsurl_access(const nsurl *url)
/* exported interface, documented in nsurl.h */
+const char *nsurl_access_leaf(const nsurl *url)
+{
+ size_t path_len;
+ const char *path;
+ const char *leaf;
+
+ if (url->components.path == NULL)
+ return "";
+
+ path = lwc_string_data(url->components.path);
+ path_len = lwc_string_length(url->components.path);
+
+ if (path_len == 0)
+ return "";
+
+ if (path_len == 1 && *path == '/')
+ return "/";
+
+ leaf = path + path_len;
+
+ do {
+ leaf--;
+ } while ((leaf != path) && (*leaf != '/'));
+
+ if (*leaf == '/')
+ leaf++;
+
+ return leaf;
+}
+
+
+/* exported interface, documented in nsurl.h */
size_t nsurl_length(const nsurl *url)
{
assert(url != NULL);
diff --git a/utils/nsurl.h b/utils/nsurl.h
index 068d08b8d..b075c42a1 100644
--- a/utils/nsurl.h
+++ b/utils/nsurl.h
@@ -183,6 +183,20 @@ const char *nsurl_access(const nsurl *url);
/**
+ * Access a URL's path leaf as a string
+ *
+ * \param url NetSurf URL to retrieve a string pointer for.
+ * \return the required string
+ *
+ * The returned string is owned by the NetSurf URL object. It will die
+ * with the NetSurf URL object. Keep a reference to the URL if you need it.
+ *
+ * The returned string has a trailing '\0'.
+ */
+const char *nsurl_access_leaf(const nsurl *url);
+
+
+/**
* Find the length of a NetSurf URL object's URL, as returned by nsurl_access
*
* \param url NetSurf URL to find length of.