[Resending -- I never received a copy of the first one back from
SourceForge -- maybe because it was in HTML?]
I tried building 1.0.33 on Solaris (specifically, OpenSolaris 2009.06
on AMD64), and found that the contribs didn't quite build cleanly. I
enclose a patch. Most of this is trivial conditionalization of
constants to be grovelled for, but the patch to C-STRING-WRITER in
glue.lisp may deserve a little thought. What was happening was that 0
was being passed for LIMIT, resulting in a LAST-ELT value of -1; I was
then getting "asserted type conflicts with derived type" warnings on
the type declaration of LAST-ELT and the SUBSEQ call at the end. The
reason 0 is being passed for LIMIT is that :DISTRUST-LENGTH T option
is supplied for struct dirent in sb-posix/constants.lisp, which causes
C-FOR-STRUCTURE in sb-grovel/def-to-lisp.lisp to emit a constant 0 for
the length. I toyed with a couple of different fixes, but in the end,
simply preventing LAST-ELT from being negative seemed to be the most
robust. You may prefer a different approach, though.
Prima facie, some things jump out at me as odd about C-STRING-WRITER:
() The number of octets written is given by the length of the original
string, not the length of the result of STRING-TO-OCTETS.
() Although STRING-TO-OCTETS is requested to null-terminate its
result, the null is not written to the destination.
() Seems like, in a case where we can't trust the length of the char
array given in the C declaration, it might make more sense for the
writer to signal an error than to silently refuse to write anything.