aboutsummaryrefslogtreecommitdiff
path: root/backends/PalmOS/Src/missing/_stdlib.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'backends/PalmOS/Src/missing/_stdlib.cpp')
-rw-r--r--backends/PalmOS/Src/missing/_stdlib.cpp42
1 files changed, 27 insertions, 15 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;