From: Dmitry Bogatov <kact...@gnu.org>

---
 module/system/foreign/declarative.scm | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/module/system/foreign/declarative.scm 
b/module/system/foreign/declarative.scm
index b0c31a0..62d40b8 100644
--- a/module/system/foreign/declarative.scm
+++ b/module/system/foreign/declarative.scm
@@ -132,9 +132,18 @@
 
 (define (make-c-function-name symbol)
   (define function-name (symbol->string symbol))
+  (define (replace-hyphen c)
+    (if (eqv? c #\-)
+        #\_
+        c))
+  (define (c-identifier-char? c)
+    (or (char-alphabetic? c)
+        (char-numeric? c)
+        (eqv? c #\_)))
   (when (string-prefix? "c-" function-name)
     (set! function-name (string-drop function-name 2)))
-  function-name)
+  (string-map! replace-hyphen function-name)
+  (string-filter c-identifier-char? function-name))
 
 (define *validate-function-name* (make-parameter #f))
 (define *validate-argument-name* (make-parameter #f))
-- 
I may be not subscribed. Please, keep me in carbon copy.


Reply via email to