]> git.saurik.com Git - minimal.git/commitdiff
Added some more support for the iphone tools.
authorJay Freeman (saurik) <saurik@saurik.com>
Sat, 27 Oct 2007 09:02:20 +0000 (09:02 +0000)
committerJay Freeman (saurik) <saurik@saurik.com>
Sat, 27 Oct 2007 09:02:20 +0000 (09:02 +0000)
mapping.h
minimal.h

index 6882d0312b28c4a850fb0c4a1153e5c30ba188c4..3f4fc32a7725c3f2ae93698fe9b09a5ecc3c8943 100644 (file)
--- a/mapping.h
+++ b/mapping.h
@@ -7,18 +7,21 @@
 #include <sys/stat.h>
 #include <fcntl.h>
 
-void *Map(const char *path, size_t *size, bool ro) {
+void *Map(const char *path, size_t offset, size_t size, size_t *psize, bool ro) {
     int fd;
     _syscall(fd = open(path, ro ? O_RDONLY : O_RDWR));
 
-    struct stat stat;
-    _syscall(fstat(fd, &stat));
+    if (size == _not(size_t)) {
+        struct stat stat;
+        _syscall(fstat(fd, &stat));
+        size = stat.st_size;
+    }
 
-    if (size != NULL)
-        *size = stat.st_size;
+    if (psize != NULL)
+        *psize = size;
 
     void *base;
-    _syscall(base = mmap(0, stat.st_size, ro ? PROT_READ : PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0));
+    _syscall(base = mmap(NULL, size, ro ? PROT_READ : PROT_READ | PROT_WRITE, MAP_SHARED, fd, offset));
 
     _syscall(close(fd));
     return base;
index 9d3bd201014a370fa3efc1d077ee95857452a1b3..6e26870727f8b277bfcb2e518d8e88242dc1a2ff 100644 (file)
--- a/minimal.h
+++ b/minimal.h
@@ -1,6 +1,6 @@
 #define _assert(expr) \
     do if (!(expr)) { \
-        fprintf(stderr, "_assert(%s)\n", #expr); \
+        fprintf(stderr, "%s(%u): _assert(%u:%s)\n", __FILE__, __LINE__, errno, #expr); \
         exit(1); \
     } while (false)
 
@@ -20,6 +20,9 @@
 #define _trace() \
     printf("_trace(%s:%u)\n", __FILE__, __LINE__)
 
+#define _not(type) \
+    ((type) ~ (type) 0)
+
 #include <stdio.h>
 #include <stdbool.h>
 #include <stdlib.h>