summaryrefslogtreecommitdiff
path: root/MLKRoot.m
diff options
context:
space:
mode:
authorMatthias Andreas Benkard <matthias@benkard.de>2008-08-07 15:45:58 +0200
committerMatthias Andreas Benkard <matthias@benkard.de>2008-08-07 15:45:58 +0200
commit256438ccf9eaf2f45a50c98349d2ac02f52755af (patch)
treea1e11b17566695c735ac7d150a6f5a2343ce4b59 /MLKRoot.m
parent1b556d9e057c6e3bed4893036d12eed1f3bc238d (diff)
Prettify LOAD output.
Diffstat (limited to 'MLKRoot.m')
-rw-r--r--MLKRoot.m48
1 files changed, 47 insertions, 1 deletions
diff --git a/MLKRoot.m b/MLKRoot.m
index f726841..f295c77 100644
--- a/MLKRoot.m
+++ b/MLKRoot.m
@@ -150,18 +150,64 @@ static id truify (BOOL value)
{
// FIXME
BOOL success;
+ int l, i;
NSString *fileName = denullify ([args objectAtIndex:0]);
NSInputStream *input = [NSInputStream inputStreamWithFileAtPath:fileName];
MLKStream *stream = LAUTORELEASE ([[MLKStream alloc] initWithInputStream:input]);
+ MLKDynamicContext *oldContext = [MLKDynamicContext currentContext];
+ int level = MLKIntWithInteger ([oldContext
+ valueForSymbol:[sys intern:@"*LOAD-LEVEL*"]]);
+ MLKDynamicContext *ctx;
+
+ l = [fileName length];
+ fprintf (stderr, ";\n; ");
+ for (i = 0; i < 68 - 2*level; i++)
+ fprintf (stderr, "_");
+
+ fprintf (stderr, "\n; /");
+ for (i = 0; i < 30 - l/2 - level; i++)
+ fprintf (stderr, "-");
+ fprintf (stderr, " LOAD: %s ", [fileName UTF8String]);
+ for (i = 0; i < 30 - (l+1)/2 - level; i++)
+ fprintf (stderr, "-");
+ fprintf (stderr, "\n; |\n");
//NSLog (@"%d", [input hasBytesAvailable]);
[input open];
//NSLog (@"%d", [input hasBytesAvailable]);
- success = [MLKInterpreter load:stream verbose:YES print:YES];
+ ctx = [[MLKDynamicContext alloc]
+ initWithParent:oldContext
+ variables:nil
+ handlers:nil
+ restarts:nil
+ catchTags:nil
+ activeHandlerEnvironment:nil];
+ [ctx addValue:MLKIntegerWithInt(level + 1)
+ forSymbol:[sys intern:@"*LOAD-LEVEL*"]];
+ [ctx pushContext];
+ NS_DURING
+ {
+ success = [MLKInterpreter load:stream verbose:YES print:YES];
+ }
+ NS_HANDLER
+ {
+ [MLKDynamicContext popContext];
+ LRELEASE (ctx);
+ [input close];
+ }
+ NS_ENDHANDLER;
+
+ [MLKDynamicContext popContext];
+ LRELEASE (ctx);
[input close];
+ fprintf (stderr, "; \\");
+ for (i = 0; i < 68 - 2*level; i++)
+ fprintf (stderr, "_");
+ fprintf (stderr, "\n; \n");
+
RETURN_VALUE (truify (success));
}