revisit some calls of strtol(), stroul(), strtoull()

Replace some with atoi(), where the VTY has already validated correct
range of the argument.

Replace others with the new osmo_str_to_int() or osmo_str_to_int64()
functions, possibly covering more detection of invalid number strings.

Leave those strtol() callers that depend on endptr to provide the next
string token.

Related: SYS#5542
Change-Id: I0ebb06e751c28f7d1cdf328de29cd227a2449391
diff --git a/src/gsm/gsm23236.c b/src/gsm/gsm23236.c
index 01d0eb3..d4a14a5 100644
--- a/src/gsm/gsm23236.c
+++ b/src/gsm/gsm23236.c
@@ -436,27 +436,13 @@
  */
 static int osmo_nri_parse(int16_t *dst, const char *str)
 {
-	char *endp;
-	int64_t val;
+	int val;
 	int base = 10;
-
-	if (osmo_str_startswith(str, "0x")) {
-		str += 2;
+	if (osmo_str_startswith(str, "0x"))
 		base = 16;
-	}
-
-	if (!str || !str[0])
+	if (osmo_str_to_int(&val, str, base, 0, INT16_MAX))
 		return -1;
-
-	errno = 0;
-	val = strtoull(str, &endp, base);
-	if (errno || *endp != '\0')
-		return -1;
-
-	if (val < 0 || val > INT16_MAX)
-		return -1;
-
-	*dst = val;
+	*dst = (int16_t)val;
 	return 0;
 }