summaryrefslogtreecommitdiff
path: root/MLKRoot.m
diff options
context:
space:
mode:
authorMatthias Benkard <mulk@minimulk.mst-plus>2008-08-28 23:47:50 +0200
committerMatthias Benkard <mulk@minimulk.mst-plus>2008-08-28 23:47:50 +0200
commit6adfde61994c1427dfbd3d1e0ccbee8f3f7e0365 (patch)
treef73484e55c096d91f012ab010d9f21cd9bec3d02 /MLKRoot.m
parent66d555b5963b4ca6f427d417e75c426e65b4058d (diff)
Make ToiletKit self-contained.
Diffstat (limited to 'MLKRoot.m')
-rw-r--r--MLKRoot.m12
1 files changed, 11 insertions, 1 deletions
diff --git a/MLKRoot.m b/MLKRoot.m
index eaff94c..6789ffb 100644
--- a/MLKRoot.m
+++ b/MLKRoot.m
@@ -39,6 +39,7 @@
#import "util.h"
#import <Foundation/NSArray.h>
+#import <Foundation/NSBundle.h>
#import <Foundation/NSException.h>
#import <Foundation/NSInvocation.h>
#import <Foundation/NSMethodSignature.h>
@@ -95,7 +96,6 @@ cons (id _data, id car, id cdr, id _marker)
static id
load (id _data, NSString *fileName, id _marker)
{
- // FIXME
BOOL success;
int l, i;
NSInputStream *input = [NSInputStream inputStreamWithFileAtPath:fileName];
@@ -166,6 +166,15 @@ load (id _data, NSString *fileName, id _marker)
}
static id
+require (id _data, id moduleName, id _marker)
+{
+ NSBundle *toiletKit = [NSBundle bundleForClass:[MLKRoot class]];
+ NSString *path = [[toiletKit resourcePath]
+ stringByAppendingPathComponent:stringify(moduleName)];
+ return load (nil, path, MLKEndOfArgumentsMarker);
+}
+
+static id
eq (id _data, id x, id y, id _marker)
{
return truify (x == y);
@@ -808,6 +817,7 @@ register_sys (NSString *name, id (*function)())
register_sys (@"RPLACD", rplacd);
register_sys (@"CONS", cons);
register_sys (@"LOAD", load);
+ register_sys (@"REQUIRE", require);
register_sys (@"EQ", eq);
register_sys (@"FIXNUM-EQ", fixnum_eq);
register_sys (@"SYMBOLP", symbolp);