From 071a86114c12f57fe46aa68a5249a926369006ed Mon Sep 17 00:00:00 2001 From: Jordan Bancino Date: Mon, 12 Jun 2023 14:10:59 +0000 Subject: [PATCH] Apply #70: Add StrLower() function. --- Cytoplasm/src/Str.c | 26 ++++++++++++++++++++++++++ Cytoplasm/src/include/Str.h | 9 +++++++++ 2 files changed, 35 insertions(+) diff --git a/Cytoplasm/src/Str.c b/Cytoplasm/src/Str.c index 8bd8c73..f81f023 100644 --- a/Cytoplasm/src/Str.c +++ b/Cytoplasm/src/Str.c @@ -277,6 +277,32 @@ StrInt(long i) return str; } +char * +StrLower(char *str) +{ + char *ret; + + size_t len; + size_t i; + + if (!str) + { + return NULL; + } + + len = strlen(str); + ret = Malloc(len + 1); + + for (i = 0; i < len; i++) + { + ret[i] = tolower(str[i]); + } + + ret[len] = '\0'; + + return ret; +} + int StrEquals(const char *str1, const char *str2) { diff --git a/Cytoplasm/src/include/Str.h b/Cytoplasm/src/include/Str.h index 21fdeb0..1bc63cc 100644 --- a/Cytoplasm/src/include/Str.h +++ b/Cytoplasm/src/include/Str.h @@ -96,6 +96,15 @@ extern char * StrRandom(size_t); */ extern char * StrInt(long); +/** + * Converts a string into a lowercase version of it using + * .Xr tolower 3 , + * returning the lowercase version on the heap, or NULL if there was + * a memory allocation error. The returned string should be freed by + * the caller after it is no longer needed. + */ +extern char * StrLower(char *); + /** * Compare two strings and determine whether or not they are equal. * This is the most common use case of strcmp() in Cytoplasm, but