diff options
| -rw-r--r-- | backends/PalmOS/Src/missing/_stdlib.cpp | 42 | ||||
| -rw-r--r-- | backends/PalmOS/Src/missing/stdlib.h | 19 | 
2 files changed, 36 insertions, 25 deletions
diff --git a/backends/PalmOS/Src/missing/_stdlib.cpp b/backends/PalmOS/Src/missing/_stdlib.cpp index 6d242c5df7..0c89ecd0d9 100644 --- a/backends/PalmOS/Src/missing/_stdlib.cpp +++ b/backends/PalmOS/Src/missing/_stdlib.cpp @@ -21,17 +21,31 @@   */  #include "stdlib.h" -/////////////////////////////////////////////////////////////////////////////// -void *bsearch(const void *key, const void *base, UInt32 nmemb,  -				UInt32 size, int (*compar)(const void *, const void *)) { -	UInt32 i; -	for (i=0; i<nmemb; i++)  -		if (compar(key, (void*)((UInt32)base + size * i)) == 0) -			return (void*)((UInt32)base + size * i); +void *bsearch(const void *key, const void *base, UInt32 nmemb, UInt32 size, int (*compar)(const void *, const void *)) { +	Int32 position; +	 +	if (SysBinarySearch(base, nmemb, size, (SearchFuncPtr)compar, key, 0, &position, true)) +		return (void *)((UInt32)base + size * position); +	  	return NULL;  } -/////////////////////////////////////////////////////////////////////////////// + +long strtol(const char *s, char **endptr, int base) { +	// WARNING : only base = 10 supported +	long val = StrAToI(s); +	 +	if (endptr) { +		Char str[maxStrIToALen]; +		StrIToA(str, val); +		 +		if (StrNCompare(s, str, StrLen(str)) == 0) +			*endptr = (char *)s + StrLen(str); +	} + +	return val; +} +  MemPtr calloc(UInt32 nelem, UInt32 elsize) {  	MemPtr newP;  	UInt32 size = nelem*elsize; @@ -43,15 +57,14 @@ MemPtr calloc(UInt32 nelem, UInt32 elsize) {  	return newP;  } -/////////////////////////////////////////////////////////////////////////////// +  Err free(MemPtr memP) {  	if (memP)  		return MemPtrFree(memP);  	return memErrInvalidParam;  } -/////////////////////////////////////////////////////////////////////////////// -MemPtr realloc(MemPtr oldP, UInt32 size) -{ + +MemPtr realloc(MemPtr oldP, UInt32 size) {  	if (oldP != NULL)  		if (MemPtrResize(oldP,size) == 0) @@ -66,9 +79,8 @@ MemPtr realloc(MemPtr oldP, UInt32 size)  	}	  	return newP;  } -/////////////////////////////////////////////////////////////////////////////// -void exit(Int16 status) -{ + +void exit(Int16 status) {  	// need to change this  	EventType event;  	event.eType = keyDownEvent; diff --git a/backends/PalmOS/Src/missing/stdlib.h b/backends/PalmOS/Src/missing/stdlib.h index 709dbac320..5d0337dac2 100644 --- a/backends/PalmOS/Src/missing/stdlib.h +++ b/backends/PalmOS/Src/missing/stdlib.h @@ -25,7 +25,6 @@  #include <PalmOS.h>  #include "MemGlue.h" -#include "mathlib.h"  #define atoi				StrAToI  #define atol				StrAToI @@ -33,17 +32,17 @@  //#define abs					fabs  #define	malloc(a)			MemGluePtrNew(a)  //#define free				MemPtrFree -#define strtol(a,b,c)		StrAToI(a) +//#define strtol(a,b,c)		StrAToI(a)  #define qsort(a,b,c,d)		SysQSort((a), (b), (c), (CmpFuncPtr)(&d), 0);  #define rand()				SysRandom(0)  #define abort() - -MemPtr realloc(MemPtr oldP, UInt32 size); -MemPtr calloc(UInt32 nelem, UInt32 elsize); -Err free(MemPtr memP); -void exit(Int16 status); -void *bsearch(const void *key, const void *base, UInt32 nmemb,  -				UInt32 size, int (*compar)(const void *, const void *)); - +#define strtoul(a,b,c)		((unsigned long)strtol(a,b,c)) + +void	*bsearch	(const void *key, const void *base, UInt32 nmemb, UInt32 size, int (*compar)(const void *, const void *)); +MemPtr	 calloc		(UInt32 nelem, UInt32 elsize); +void	 exit		(Int16 status); +Err		 free		(MemPtr memP); +MemPtr	 realloc	(MemPtr oldP, UInt32 size); +long	 strtol		(const char *s, char **endptr, int base);  #endif  | 
