~ 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