From e22a4086ffb12abed2baa4f075825c5c85396b9a Mon Sep 17 00:00:00 2001
From: mfranz <mfranz>
Date: Thu, 10 May 2007 17:33:28 +0000
Subject: [PATCH] "fixed" the "arg bug". (Wasn't really a bug, just old-style
 Nasal code that doesn't work with new nasal. :-)

---
 Nasal/xml.nas | 21 ++++++++++-----------
 1 file changed, 10 insertions(+), 11 deletions(-)

diff --git a/Nasal/xml.nas b/Nasal/xml.nas
index 8e57154db..104074c68 100644
--- a/Nasal/xml.nas
+++ b/Nasal/xml.nas
@@ -91,7 +91,6 @@
 #
 # and would be used as:  xml.process_string("<foo>bar</foo>", do_nothing);
 
-var printf = func { print(call(sprintf, arg)) }
 
 var isspace = func(c) { c == ` ` or c == `\t` or c == `\n` or c == `\r` }
 var isletter = func(c) { c >= `a` and c <= `z` or c >= `A` and c <= `Z` }
@@ -262,8 +261,8 @@ var StringScanner = {
 
 # PARSER ==========================================================================================
 
-var parse_document = func {
-	call(action.begin, caller(0)[0]["arg"]!=nil?arg:[], action);		# FIXME work around nasal bug
+var parse_document = func(arg...) {
+	call(action.begin, arg, action);
 	parse_prolog();
 	if (!parse_element()) {
 		var c = scan.get();
@@ -506,13 +505,13 @@ var dump = {
 
 var process = func {
 	var err = [];
-	var ret = call(parse_document, caller(0)[0]["arg"]!=nil?arg:[], nil, nil, err);		# FIXME work around nasal bug
+	var ret = call(parse_document, caller(0)[0]["arg"]!=nil?arg:[], err);	# FIXME work around nasal bug
 	if (!size(err))
 		return ret;
-	if (substr(err[0], 0, size(error_label)) == error_label)
-		print(err[0]);
-	else
+	if (substr(err[0], 0, size(error_label)) != error_label)
 		die(err[0]);  # rethrow
+
+	print(err[0]);
 	return nil;
 }
 
@@ -523,18 +522,18 @@ var action = nil;
 
 # INTERFACE =======================================================================================
 
-var process_string = func(string, act) {
+var process_string = func(string, act, arg...) {
 	scan = StringScanner.new(string);
 	action = act;
-	return call(process, caller(0)[0]["arg"]!=nil?arg:[]);		# FIXME work around nasal bug
+	return call(process, arg);
 }
 
 
-var process_file = func(file, act) {
+var process_file = func(file, act, arg...) {
 	scan = StringScanner.new(io.readfile(file));
 	scan.source = "\n  in file " ~ file ~ ",";
 	action = act;
-	return call(process, caller(0)[0]["arg"]!=nil?arg:[]);		# FIXME work around nasal bug
+	return call(process, arg);
 }