Converts all Unicode characters in the string that have a case to lowercase. The exact manner that this is done depends on the current locale, and may result in the number of characters in the string changing.
A UTF-8 encoded string.
The data is owned by the caller of the function. The value is a NUL terminated UTF-8 string.
str, in bytes, or -1 if