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