X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/2d21ac55c334faf3a56e5634905ed6987fc787d4..5ba3f43ea354af8ad55bea84372a2bc834d8757c:/iokit/Kernel/IOStringFuncs.c diff --git a/iokit/Kernel/IOStringFuncs.c b/iokit/Kernel/IOStringFuncs.c index 7b43926d3..c4f9458fe 100644 --- a/iokit/Kernel/IOStringFuncs.c +++ b/iokit/Kernel/IOStringFuncs.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998-2006 Apple Computer, Inc. All rights reserved. + * Copyright (c) 1998-2016 Apple Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * @@ -25,7 +25,9 @@ * * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ */ -/* Copyright (c) 1995 NeXT Computer, Inc. All rights reserved. + +/* + * Copyright (c) 1995 NeXT Computer, Inc. All rights reserved. * * strol.c - The functions strtol() & strtoul() are exported as public API * via the header file ~driverkit/generalFuncs.h @@ -38,7 +40,7 @@ * Commented out references to errno. */ -/*- +/* * Copyright (c) 1990, 1993 * The Regents of the University of California. All rights reserved. * @@ -79,6 +81,14 @@ #include #include + +long strtol(const char *nptr, char **endptr, int base); +unsigned long strtoul(const char *nptr, char **endptr, int base); +quad_t strtoq(const char *nptr, char **endptr, int base); +u_quad_t strtouq(const char *nptr, char **endptr, int base); +char *strncat(char *s1, const char *s2, unsigned long n); + + typedef int BOOL; static inline BOOL @@ -115,11 +125,11 @@ isdigit(char c) long strtol(const char *nptr, char **endptr, int base) { - register const char *s = nptr; - register unsigned long acc; - register int c; - register unsigned long cutoff; - register int neg = 0, any, cutlim; + const char *s = nptr; + unsigned long acc; + char c; + unsigned long cutoff; + int neg = 0, any, cutlim; /* * Skip white space and pick up leading +/- sign if any. @@ -191,18 +201,27 @@ strtol(const char *nptr, char **endptr, int base) } else if (neg) acc = -acc; if (endptr != 0) - *endptr = (char *)(any ? s - 1 : nptr); + { + if(any) + { + *endptr = __CAST_AWAY_QUALIFIER(s - 1, const, char *); + } + else + { + *endptr = __CAST_AWAY_QUALIFIER(nptr, const, char *); + } + } return (acc); } unsigned long strtoul(const char *nptr, char **endptr, int base) { - register const char *s = nptr; - register unsigned long acc; - register int c; - register unsigned long cutoff; - register int neg = 0, any, cutlim; + const char *s = nptr; + unsigned long acc; + char c; + unsigned long cutoff; + int neg = 0, any, cutlim; /* * See strtol for comments as to the logic used. @@ -253,7 +272,17 @@ strtoul(const char *nptr, char **endptr, int base) } else if (neg) acc = -acc; if (endptr != 0) - *endptr = (char *)(any ? s - 1 : nptr); + { + if(any) + { + *endptr = __CAST_AWAY_QUALIFIER(s - 1, const, char *); + } + else + { + *endptr = __CAST_AWAY_QUALIFIER(nptr, const, char *); + } + } + return (acc); } @@ -266,11 +295,11 @@ strtoul(const char *nptr, char **endptr, int base) quad_t strtoq(const char *nptr, char **endptr, int base) { - register const char *s; - register u_quad_t acc; - register int c; - register u_quad_t qbase, cutoff; - register int neg, any, cutlim; + const char *s; + u_quad_t acc; + char c; + u_quad_t qbase, cutoff; + int neg, any, cutlim; /* * Skip white space and pick up leading +/- sign if any. @@ -329,7 +358,7 @@ strtoq(const char *nptr, char **endptr, int base) break; if (c >= base) break; - if (any < 0 || acc > cutoff || acc == cutoff && c > cutlim) + if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim)) any = -1; else { any = 1; @@ -343,7 +372,17 @@ strtoq(const char *nptr, char **endptr, int base) } else if (neg) acc = -acc; if (endptr != 0) - *endptr = (char *)(any ? s - 1 : nptr); + { + if(any) + { + *endptr = __CAST_AWAY_QUALIFIER(s - 1, const, char *); + } + else + { + *endptr = __CAST_AWAY_QUALIFIER(nptr, const, char *); + } + } + return (acc); } @@ -357,13 +396,13 @@ strtoq(const char *nptr, char **endptr, int base) u_quad_t strtouq(const char *nptr, char **endptr, - register int base) + int base) { - register const char *s = nptr; - register u_quad_t acc; - register int c; - register u_quad_t qbase, cutoff; - register int neg, any, cutlim; + const char *s = nptr; + u_quad_t acc; + char c; + u_quad_t qbase, cutoff; + int neg, any, cutlim; /* * See strtoq for comments as to the logic used. @@ -400,7 +439,7 @@ strtouq(const char *nptr, break; if (c >= base) break; - if (any < 0 || acc > cutoff || acc == cutoff && c > cutlim) + if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim)) any = -1; else { any = 1; @@ -414,24 +453,21 @@ strtouq(const char *nptr, } else if (neg) acc = -acc; if (endptr != 0) - *endptr = (char *)(any ? s - 1 : nptr); + { + if(any) + { + *endptr = __CAST_AWAY_QUALIFIER(s - 1, const, char *); + } + else + { + *endptr = __CAST_AWAY_QUALIFIER(nptr, const, char *); + } + } + return (acc); } -/* - * - */ - -char *strchr(const char *str, int ch) -{ - do { - if (*str == ch) - return((char *)str); - } while (*str++); - return ((char *) 0); -} - /* * */