diff --git a/src/libavrdude.h b/src/libavrdude.h index e63cbcae..48fe6f09 100644 --- a/src/libavrdude.h +++ b/src/libavrdude.h @@ -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); diff --git a/src/strutil.c b/src/strutil.c index 17cfabbb..3342ae7b 100644 --- a/src/strutil.c +++ b/src/strutil.c @@ -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;