Don't pass user-defined strings to printf().
authorJoshua Elsasser <joshua@elsasser.org>
Thu, 22 Nov 2012 19:55:56 +0000 (14:55 -0500)
committerLuís Oliveira <loliveira@common-lisp.net>
Sun, 6 Jan 2013 20:53:17 +0000 (20:53 +0000)
This allows % to be safely used in lisp symbol names which pass
through the groveler, such as the following:

(cvar ("errno" %errno) :int)

grovel/grovel.lisp

index e582fe9..4c2da1a 100644 (file)
@@ -89,7 +89,7 @@ int main(int argc, char**argv) {
 
 (defun c-format (out fmt &rest args)
   (let ((text (unescape-for-c (format nil "~?" fmt args))))
-    (format out "~&  fprintf(output, \"~A\");~%" text)))
+    (format out "~&  fputs(\"~A\", output);~%" text)))
 
 (defun c-printf (out fmt &rest args)
   (flet ((item (item)