~ 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