Add string upper/lowercase conversions to str_util.c

This commit is contained in:
Stefan Rueger
2023-05-20 21:35:58 +01:00
parent 0f6037a0fa
commit ded200cae9
2 changed files with 31 additions and 0 deletions

View File

@@ -1220,6 +1220,10 @@ int str_caseends(const char *str, const char *ends);
int str_caseeq(const char *str1, const char *str2);
int str_casematch(const char *pattern, const char *string);
char *str_sprintf(const char *fmt, ...);
char *str_lc(char *s);
char *str_uc(char *s);
char *str_lcfirst(char *s);
char *str_ucfirst(char *s);
bool is_bigendian();
void change_endian(void *p, int size);
int memall(const void *p, char c, size_t n);

View File

@@ -224,6 +224,33 @@ char *str_sprintf(const char *fmt, ...) {
}
// Changes string to be all lowercase and returns original pointer
char *str_lc(char *s) {
for(char *t = s; *t; t++)
*t = tolower(*t & 0xff);
return s;
}
// Changes string to be all uppercase and returns original pointer
char *str_uc(char *s) {
for(char *t = s; *t; t++)
*t = toupper(*t & 0xff);
return s;
}
// Changes first character in a string to be lowercase and returns original pointer
char *str_lcfirst(char *s) {
*s = tolower(*s & 0xff);
return s;
}
// Changes first character in a string to be uppercase and returns original pointer
char *str_ucfirst(char *s) {
*s = toupper(*s & 0xff);
return s;
}
bool is_bigendian() {
union {char a[2]; int16_t i;} u = {.i = 1};
return u.a[1] == 1;