Hello,
     I found that c-write was producing code in a weird style with
parentheses in odd places (yes it still works):
--------------------------------------------------------------------------------------------
(cffi:defcunion (spnav-event :size 40)
  (type :int
)
  (motion (:struct spnav-event-motion)
)
  (button (:struct spnav-event-button)
))
--------------------------------------------------------------------------------------------
instead of the more reasonable:
--------------------------------------------------------------------------------------------
(cffi:defcunion (spnav-event :size 40)
  (type :int)
  (motion (:struct spnav-event-motion))
  (button (:struct spnav-event-button)))
--------------------------------------------------------------------------------------------
The attached patch makes some minor changes to the function c-write
and adds the option of passing no-package to c-print-symbol down the
call stack.
Akshay