summaryrefslogtreecommitdiffstats
path: root/sys/cddl/compat/opensolaris/kern/opensolaris_misc.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/cddl/compat/opensolaris/kern/opensolaris_misc.c')
-rw-r--r--sys/cddl/compat/opensolaris/kern/opensolaris_misc.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/sys/cddl/compat/opensolaris/kern/opensolaris_misc.c b/sys/cddl/compat/opensolaris/kern/opensolaris_misc.c
index a89d478..279ae4c 100644
--- a/sys/cddl/compat/opensolaris/kern/opensolaris_misc.c
+++ b/sys/cddl/compat/opensolaris/kern/opensolaris_misc.c
@@ -30,6 +30,7 @@ __FBSDID("$FreeBSD$");
#include <sys/param.h>
#include <sys/kernel.h>
#include <sys/libkern.h>
+#include <sys/limits.h>
#include <sys/misc.h>
#include <sys/sunddi.h>
@@ -40,17 +41,30 @@ struct opensolaris_utsname utsname = {
};
int
+ddi_strtol(const char *str, char **nptr, int base, long *result)
+{
+
+ *result = strtol(str, nptr, base);
+ if (*result == 0)
+ return (EINVAL);
+ else if (*result == LONG_MIN || *result == LONG_MAX)
+ return (ERANGE);
+ return (0);
+}
+
+int
ddi_strtoul(const char *str, char **nptr, int base, unsigned long *result)
{
- char *end;
if (str == hw_serial) {
*result = hostid;
return (0);
}
- *result = strtoul(str, &end, base);
+ *result = strtoul(str, nptr, base);
if (*result == 0)
return (EINVAL);
+ else if (*result == ULONG_MAX)
+ return (ERANGE);
return (0);
}
OpenPOWER on IntegriCloud