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 */