~ chicken-core (chicken-5) 622ec81278ce83a6351dd99ba3c265f6bc5d6225


commit 622ec81278ce83a6351dd99ba3c265f6bc5d6225
Author:     felix <felix@call-with-current-continuation.org>
AuthorDate: Fri Feb 12 16:04:36 2010 +0100
Commit:     felix <felix@call-with-current-continuation.org>
CommitDate: Fri Feb 12 16:04:36 2010 +0100

    forgot to alias some foreign-XXX-lambda[*] forms

diff --git a/chicken-ffi-syntax.scm b/chicken-ffi-syntax.scm
index de1598a6..6c27dd18 100644
--- a/chicken-ffi-syntax.scm
+++ b/chicken-ffi-syntax.scm
@@ -183,5 +183,33 @@
   (lambda (form r c)
     `(##core#foreign-primitive ,@(cdr form)))))
 
+(##sys#extend-macro-environment
+ 'foreign-lambda
+ '()
+ (##sys#er-transformer
+  (lambda (form r c)
+    `(##core#foreign-lambda ,@(cdr form)))))
+
+(##sys#extend-macro-environment
+ 'foreign-lambda*
+ '()
+ (##sys#er-transformer
+  (lambda (form r c)
+    `(##core#foreign-lambda* ,@(cdr form)))))
+
+(##sys#extend-macro-environment
+ 'foreign-safe-lambda
+ '()
+ (##sys#er-transformer
+  (lambda (form r c)
+    `(##core#foreign-safe-lambda ,@(cdr form)))))
+
+(##sys#extend-macro-environment
+ 'foreign-safe-lambda*
+ '()
+ (##sys#er-transformer
+  (lambda (form r c)
+    `(##core#foreign-safe-lambda* ,@(cdr form)))))
+
 
 (##sys#macro-subset me0)))
diff --git a/compiler.scm b/compiler.scm
index bcf62ddd..6ec64faf 100644
--- a/compiler.scm
+++ b/compiler.scm
@@ -127,10 +127,10 @@
 ; (##core#elaborationtimeonly <exp>)
 ; (##core#define-foreign-variable <symbol> <type> [<string>])
 ; (##core#define-foreign-type <symbol> <type> [<proc1> [<proc2>]])
-; (foreign-lambda <type> <string> {<type>})
-; (foreign-lambda* <type> ({(<type> <var>)})) {<string>})
-; (foreign-safe-lambda <type> <string> {<type>})
-; (foreign-safe-lambda* <type> ({(<type> <var>)})) {<string>})
+; (##core#foreign-lambda <type> <string> {<type>})
+; (##core#foreign-lambda* <type> ({(<type> <var>)})) {<string>})
+; (##core#foreign-safe-lambda <type> <string> {<type>})
+; (##core#foreign-safe-lambda* <type> ({(<type> <var>)})) {<string>})
 ; (##core#foreign-primitive <type> ({(<type> <var>)}) {<string>})
 ; (##core#define-inline <name> <exp>)
 ; (define-constant <name> <exp>)
@@ -997,16 +997,16 @@
 				      (cons (walk x e se #f) (fold r)) ) ) ) )
 			     '(##core#undefined) ) )
 
-			((foreign-lambda)
+			((##core#foreign-lambda)
 			 (walk (expand-foreign-lambda x #f) e se dest) )
 
-			((foreign-safe-lambda)
+			((##core#foreign-safe-lambda)
 			 (walk (expand-foreign-lambda x #t) e se dest) )
 
-			((foreign-lambda*)
+			((##core#foreign-lambda*)
 			 (walk (expand-foreign-lambda* x #f) e se dest) )
 
-			((foreign-safe-lambda*)
+			((##core#foreign-safe-lambda*)
 			 (walk (expand-foreign-lambda* x #t) e se dest) )
 
 			((##core#foreign-primitive)
@@ -1488,7 +1488,7 @@
      '(##core#undefined) ) ) )
 
 
-;;; Expand "foreign-lambda"/"foreign-callback-lambda" forms and add item to stub-list:
+;;; Expand "foreign-lambda"/"foreign-safe-lambda" forms and add item to stub-list:
 
 (define-record-type foreign-stub
   (make-foreign-stub id return-type name argument-types argument-names body cps callback)
diff --git a/runtime.c b/runtime.c
index 64fb176c..34dec46d 100644
--- a/runtime.c
+++ b/runtime.c
@@ -8805,7 +8805,9 @@ C_executable_path()
       C_strcat(buffer, "/");
       C_strcat(buffer, fname);
 
-      if(C_access(buffer, F_OK)) return buffer;
+      if(C_access(buffer, F_OK)) 
+	/*XXX resolve symlinks */
+	return buffer;
       
       j = k + 1;
     }
Trap