Function rmw_validate_node_name
Defined in File validate_node_name.h
Function Documentation
-
rmw_ret_t rmw_validate_node_name(const char *node_name, int *validation_result, size_t *invalid_index)
Determine if a node name is valid.
Node names must follow these rules:
must not be an empty string
must only contain alphanumeric characters and underscores (a-z|A-Z|0-9|_)
must not start with a number
If either the node name C string or validation_result pointer are null, then
RMW_RET_INVALID_ARGUMENT
will be returned. The node_name should be a valid, null-terminated C string. The validation_result int pointer should point to valid memory so a result can be stored in it as an output variable. The invalid_index size_t pointer should either point NULL or to valid memory so in the event of a validation error, the location in the input string can be stored therein. If NULL is passed in for invalid_index, it will be not be set.The invalid_index will not be assigned a value if the node name is valid.
The int which validation_result points to will have a one of a few possible results values (defined with macros) stored into it:
RMW_NODE_NAME_VALID
RMW_NODE_NAME_INVALID_IS_EMPTY_STRING
RMW_NODE_NAME_INVALID_CONTAINS_UNALLOWED_CHARACTERS
RMW_NODE_NAME_INVALID_STARTS_WITH_NUMBER
RMW_NODE_NAME_INVALID_TOO_LONG
The result value can be converted to a description with the rmw_node_name_validation_result_string() function.
The
RMW_NODE_NAME_INVALID_TOO_LONG
is guaranteed to be checked last, such that if you get that result, then you can assume all other checks succeeded. This is done so that the length limit can be treated as a warning rather than an error if desired.- Parameters:
node_name – [in] node name to be validated
validation_result – [out] int in which the result of the check is stored
invalid_index – [out] size_t index of the input string where an error occurred
- Returns:
RMW_RET_OK
on successfully running the check, or- Returns:
RMW_RET_INVALID_ARGUMENT
on invalid parameters, or- Returns:
RMW_RET_ERROR
when an unspecified error occurs.