From 43b2081b8d5e23c8582e2729f18ccd7555be8a40 Mon Sep 17 00:00:00 2001 From: Michael Drake Date: Sat, 30 Jan 2016 11:50:24 +0000 Subject: Add lwc_string_tolower() API. --- include/libwapcaplet/libwapcaplet.h | 10 ++++++++++ src/libwapcaplet.c | 19 +++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/include/libwapcaplet/libwapcaplet.h b/include/libwapcaplet/libwapcaplet.h index 4c0fc71..c0e8c29 100644 --- a/include/libwapcaplet/libwapcaplet.h +++ b/include/libwapcaplet/libwapcaplet.h @@ -105,6 +105,16 @@ extern lwc_error lwc_intern_substring(lwc_string *str, size_t ssoffset, size_t sslen, lwc_string **ret); +/** + * Optain a lowercased lwc_string from given lwc_string. + * + * @param str String to create lowercase string from. + * @param ret Pointer to ::lwc_string pointer to fill out. + * @return Result of operation, if not OK then the value pointed + * to by \a ret will not be valid. + */ +extern lwc_error lwc_string_tolower(lwc_string *str, lwc_string **ret); + /** * Increment the reference count on an lwc_string. * diff --git a/src/libwapcaplet.c b/src/libwapcaplet.c index 9360f23..9521e96 100644 --- a/src/libwapcaplet.c +++ b/src/libwapcaplet.c @@ -164,6 +164,25 @@ lwc_intern_substring(lwc_string *str, return lwc_intern_string(CSTR_OF(str) + ssoffset, sslen, ret); } +lwc_error +lwc_string_tolower(lwc_string *str, lwc_string **ret) +{ + assert(str); + assert(ret); + + /* Internally make use of knowledge that insensitive strings + * are lower case. */ + if (str->insensitive == NULL) { + lwc_error error = lwc__intern_caseless_string(str); + if (error != lwc_error_ok) { + return error; + } + } + + *ret = lwc_string_ref(str->insensitive); + return lwc_error_ok; +} + void lwc_string_destroy(lwc_string *str) { -- cgit v1.2.3