Fix warnings: tolower() and similar require uchar
utils.c: In function 'osmo_str2lower':
utils.c:277:3: warning: array subscript has type 'char' [-Wchar-subscripts]
out[i] = tolower(in[i]);
And according to man:
If c is neither an unsigned char value nor EOF, the behavior of these func‐
tions is undefined.
Change-Id: I3fed2ab6a4efba9f8a21fcf84a5b3a91e8df084f
diff --git a/src/gsm/gsm_utils.c b/src/gsm/gsm_utils.c
index 5a4ceb3..61d3f83 100644
--- a/src/gsm/gsm_utils.c
+++ b/src/gsm/gsm_utils.c
@@ -596,7 +596,7 @@
/*! Parse string name of a GSM band */
enum gsm_band gsm_band_parse(const char* mhz)
{
- while (*mhz && !isdigit(*mhz))
+ while (*mhz && !isdigit((unsigned char)*mhz))
mhz++;
if (*mhz == '\0')
diff --git a/src/logging.c b/src/logging.c
index c8b86b1..2fb06ba 100644
--- a/src/logging.c
+++ b/src/logging.c
@@ -847,7 +847,7 @@
char name[name_len];
for (j = 0; j < name_len; j++)
- name[j] = tolower(info->cat[i].name[j]);
+ name[j] = tolower((unsigned char)info->cat[i].name[j]);
name[name_len-1] = '\0';
ret = snprintf(str + offset, rem, "%s|", name+1);
@@ -869,7 +869,7 @@
char loglevel_str[loglevel_str_len];
for (j = 0; j < loglevel_str_len; j++)
- loglevel_str[j] = tolower(loglevel_strs[i].str[j]);
+ loglevel_str[j] = tolower((unsigned char)loglevel_strs[i].str[j]);
loglevel_str[loglevel_str_len-1] = '\0';
ret = snprintf(str + offset, rem, "%s|", loglevel_str);
diff --git a/src/utils.c b/src/utils.c
index a1881f0..1c176f8 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -274,7 +274,7 @@
unsigned int i;
for (i = 0; i < strlen(in); i++)
- out[i] = tolower(in[i]);
+ out[i] = tolower((const unsigned char)in[i]);
out[strlen(in)] = '\0';
}
@@ -287,7 +287,7 @@
unsigned int i;
for (i = 0; i < strlen(in); i++)
- out[i] = toupper(in[i]);
+ out[i] = toupper((const unsigned char)in[i]);
out[strlen(in)] = '\0';
}
#endif /* HAVE_CTYPE_H */