summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/utils.c21
1 files changed, 17 insertions, 4 deletions
diff --git a/src/utils.c b/src/utils.c
index 8f56227e..6cc823e0 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -428,19 +428,23 @@ bool osmo_is_hexstr(const char *str, int min_digits, int max_digits,
/*! Determine if a given identifier is valid, i.e. doesn't contain illegal chars
* \param[in] str String to validate
- * \returns true in case string contains valid identifier, false otherwise
+ * \param[in] sep_chars Permitted separation characters between identifiers.
+ * \returns true in case \a str contains only valid identifiers and sep_chars, false otherwise
*/
-bool osmo_identifier_valid(const char *str)
+bool osmo_separated_identifiers_valid(const char *str, const char *sep_chars)
{
/* characters that are illegal in names */
static const char illegal_chars[] = "., {}[]()<>|~\\^`'\"?=;/+*&%$#!";
unsigned int i;
+ size_t len;
/* an empty string is not a valid identifier */
- if (!str || strlen(str) == 0)
+ if (!str || (len = strlen(str)) == 0)
return false;
- for (i = 0; i < strlen(str); i++) {
+ for (i = 0; i < len; i++) {
+ if (sep_chars && strchr(sep_chars, str[i]))
+ continue;
/* check for 7-bit ASCII */
if (str[i] & 0x80)
return false;
@@ -454,4 +458,13 @@ bool osmo_identifier_valid(const char *str)
return true;
}
+/*! Determine if a given identifier is valid, i.e. doesn't contain illegal chars
+ * \param[in] str String to validate
+ * \returns true in case \a str contains valid identifier, false otherwise
+ */
+bool osmo_identifier_valid(const char *str)
+{
+ return osmo_separated_identifiers_valid(str, NULL);
+}
+
/*! @} */