Index: cpukit/libmisc/stringto/stringto.h
===================================================================
--- cpukit/libmisc/stringto/stringto.h	(revision 35d09baa84f3e029646e3a2f2f0e9b348de57517)
+++ cpukit/libmisc/stringto/stringto.h	(revision 48751ab095bbbb23489c2e3243f57571cbfa9153)
@@ -13,4 +13,26 @@
 #define __STRING_TO_A_TYPE_h__
 
+#include <rtems.h>
+
+/**
+ *  @brief Convert String to Pointer (with validation)
+ *
+ *  This method converts a string to a pointer (void *) with
+ *  basic numeric 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
+ *
+ *  @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_pointer(
+  const char     *s,
+  void          **n,
+  char          **endptr
+);
+
 /**
  *  @brief Convert String to Unsigned Character (with validation)
@@ -24,8 +46,9 @@
  *  @param[in] base is the expected base of the number
  *
- *  @return This method returns true on successful conversion and *n is
- *          filled in.
- */
-bool rtems_string_to_unsigned_char(
+ *  @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_char(
   const char     *s,
   unsigned char  *n,
@@ -44,8 +67,9 @@
  *  @param[in] base is the expected base of the number
  *
- *  @return This method returns true on successful conversion and *n is
- *          filled in.
- */
-bool rtems_string_to_int(
+ *  @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_int(
   const char  *s,
   int         *n,
@@ -65,8 +89,9 @@
  *  @param[in] base is the expected base of the number
  *
- *  @return This method returns true on successful conversion and *n is
- *          filled in.
- */
-bool rtems_string_to_long(
+ *  @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_long(
   const char  *s,
   long        *n,
@@ -86,8 +111,9 @@
  *  @param[in] base is the expected base of the number
  *
- *  @return This method returns true on successful conversion and *n is
- *          filled in.
- */
-bool rtems_string_to_unsigned_long(
+ *  @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_long(
   const char     *s,
   unsigned long  *n,
@@ -107,8 +133,9 @@
  *  @param[in] base is the expected base of the number
  *
- *  @return This method returns true on successful conversion and *n is
- *          filled in.
- */
-bool rtems_string_to_long_long(
+ *  @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_long_long(
   const char  *s,
   long long   *n,
@@ -128,8 +155,9 @@
  *  @param[in] base is the expected base of the number
  *
- *  @return This method returns true on successful conversion and *n is
- *          filled in.
- */
-bool rtems_string_to_unsigned_long_long(
+ *  @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_long_long(
   const char           *s,
   unsigned long long   *n,
@@ -147,8 +175,9 @@
  *  @param[in] endptr is used to keep track of the position in the string
  *
- *  @return This method returns true on successful conversion and *n is
- *          filled in.
- */
-bool rtems_string_to_float(
+ *  @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_float(
   const char   *s,
   float        *n,
@@ -165,8 +194,9 @@
  *  @param[in] endptr is used to keep track of the position in the string
  *
- *  @return This method returns true on successful conversion and *n is
- *          filled in.
- */
-bool rtems_string_to_double(
+ *  @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_double(
   const char   *s,
   double       *n,
Index: cpukit/libmisc/stringto/stringto_template.h
===================================================================
--- cpukit/libmisc/stringto/stringto_template.h	(revision 35d09baa84f3e029646e3a2f2f0e9b348de57517)
+++ cpukit/libmisc/stringto/stringto_template.h	(revision 48751ab095bbbb23489c2e3243f57571cbfa9153)
@@ -10,4 +10,6 @@
  */
 
+#include <rtems/stringto.h>
+
 #include <errno.h>
 #include <stdlib.h>
@@ -15,5 +17,12 @@
 #include <stdbool.h>
 
-#include <math.h>
+/*
+ *  If we are doing floating point conversion, then we need math.h
+ */
+#if defined(STRING_TO_FLOAT)
+  #include <math.h>
+#endif
+
+#include <rtems.h>
 
 /*
@@ -21,4 +30,8 @@
  * it and should NOT be protected against multiple inclusions.
  */
+
+#if defined(STRING_TO_POINTER)
+  #define STRING_TO_INTEGER
+#endif
 
 #if !defined(STRING_TO_FLOAT) && !defined(STRING_TO_INTEGER)
@@ -53,9 +66,13 @@
 #endif
 
-bool STRING_TO_NAME (
+#if !defined(STRING_TO_INPUT_TYPE)
+  #define STRING_TO_INPUT_TYPE STRING_TO_TYPE
+#endif
+
+rtems_status_code STRING_TO_NAME (
   const char      *s,
   STRING_TO_TYPE  *n,
   char           **endptr
-  #if defined(STRING_TO_INTEGER)
+  #if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
     ,
     int              base
@@ -63,9 +80,9 @@
 )
 {
-  STRING_TO_TYPE  result;
-  char           *end;
+  STRING_TO_INPUT_TYPE  result;
+  char                 *end;
 
   if ( !n )
-    return false;
+    return RTEMS_INVALID_ADDRESS;
 
   errno = 0;
@@ -74,4 +91,6 @@
   #ifdef STRING_TO_FLOAT
     result = STRING_TO_METHOD( s, &end );
+  #elif defined(STRING_TO_POINTER)
+    result = STRING_TO_METHOD( s, &end, 16 );
   #elif defined(STRING_TO_INTEGER)
     result = STRING_TO_METHOD( s, &end, base );
@@ -84,14 +103,14 @@
   /* nothing was converted */
   if ( end == s )
-    return false;
+    return RTEMS_NOT_DEFINED;
 
   /* there was a conversion error */
   if ( (result == ZERO) && errno )
-    return false;
+    return RTEMS_INVALID_NUMBER;
 
   #ifdef STRING_TO_MAX
     /* there was an overflow */
     if ( (result == STRING_TO_MAX) && (errno == ERANGE))
-      return false;
+      return RTEMS_INVALID_NUMBER;
   #endif
 
@@ -99,9 +118,9 @@
     /* there was an underflow */
     if ( (result == STRING_TO_MIN) && (errno == ERANGE))
-      return false;
+      return RTEMS_INVALID_NUMBER;
   #endif
 
   *n = (STRING_TO_TYPE) result;
-  return true;
+  return RTEMS_SUCCESSFUL;
 }
 
Index: cpukit/libmisc/stringto/stringtopointer.c
===================================================================
--- cpukit/libmisc/stringto/stringtopointer.c	(revision 48751ab095bbbb23489c2e3243f57571cbfa9153)
+++ cpukit/libmisc/stringto/stringtopointer.c	(revision 48751ab095bbbb23489c2e3243f57571cbfa9153)
@@ -0,0 +1,25 @@
+/*
+ *  COPYRIGHT (c) 2009.
+ *  On-Line Applications Research Corporation (OAR).
+ *
+ *  The license and distribution terms for this file may be
+ *  found in the file LICENSE in this distribution or at
+ *  http://www.rtems.com/license/LICENSE.
+ *
+ *  $Id$
+ */
+
+/*
+ *  Instantiate an error checking wrapper for strtoul which is
+ *  used to input a (void *)
+ *
+ *  NOTE: This is only an appropriate implementation when unsigned long
+ *        can represent a void *
+ */
+#define STRING_TO_POINTER
+#define STRING_TO_TYPE void *
+#define STRING_TO_INPUT_TYPE unsigned long
+#define STRING_TO_NAME rtems_string_to_pointer
+#define STRING_TO_METHOD strtoul
+#define STRING_TO_MAX ULONG_MAX
+#include "stringto_template.h"
