From 2c6a3e7e2eadef996b918992d36e9855e8dc5e9e Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Tue, 1 Dec 2009 22:16:10 +0000 Subject: 2009-12-01 Joel Sherrill * libmisc/stringto/stringto.h, libmisc/stringto/stringto_template.h: Tidy up as part of adding new test. --- cpukit/libmisc/stringto/stringto.h | 21 +++++++++++++++++++++ cpukit/libmisc/stringto/stringto_template.h | 7 +++++++ 2 files changed, 28 insertions(+) (limited to 'cpukit/libmisc') diff --git a/cpukit/libmisc/stringto/stringto.h b/cpukit/libmisc/stringto/stringto.h index e0ba24416c..af2fd2f083 100644 --- a/cpukit/libmisc/stringto/stringto.h +++ b/cpukit/libmisc/stringto/stringto.h @@ -77,6 +77,27 @@ rtems_status_code rtems_string_to_int( int base ); +/** + * @brief Convert String to Unsigned Int (with validation) + * + * This method converts a string to an unsigned int with range validation. + * + * @param[in] s is the string to convert + * @param[in] n points to the variable to place the converted output in + * @param[in] endptr is used to keep track of the position in the string + * @param[in] base is the expected base of the number + * + * @return This method returns RTEMS_SUCCESSFUL on successful conversion + * and *n is filled in. Otherwise, the status indicates the + * source of the error. + */ +rtems_status_code rtems_string_to_unsigned_int( + const char *s, + unsigned int *n, + char **endptr, + int base +); + /** * @brief Convert String to Long (with validation) * diff --git a/cpukit/libmisc/stringto/stringto_template.h b/cpukit/libmisc/stringto/stringto_template.h index a1503e0d87..4972d5fbac 100644 --- a/cpukit/libmisc/stringto/stringto_template.h +++ b/cpukit/libmisc/stringto/stringto_template.h @@ -104,9 +104,16 @@ rtems_status_code STRING_TO_NAME ( if ( end == s ) return RTEMS_NOT_DEFINED; + /* + * In theory, we should check this but newlib never returns anything + * but range errors. So this is unreachable code based upon the newlib + * implementation of strXXX methods as of 1 December 2009. --joel + */ + #if 0 /* there was a conversion error */ if ( (result == ZERO) && errno ) return RTEMS_INVALID_NUMBER; + #endif #ifdef STRING_TO_MAX /* there was an overflow */ -- cgit v1.2.3