From: Dustin Long <dlong@st...> - 2006-02-22 00:13:48
I've made a significant update on my VBECL project. Whatever magic was
recently added to *_safe_eval sure did the trick; my latest build of
ecl.dll from cvs stopped crashing under VB and is now very stable. Also
implemented are gray streams (adapted from Michael's recent matlab
example) to display lisp console output in a MessageBox. I'm still
having trouble capturing errors - they just silently disappear now with
a nil return value, without any output going to standard-output, despite
my attempt to hook error-output - but at least misspelt functions no
longer cause crashes. Unforunately, it still dies on malformed sexprs -
I'm willing to live with this - but out of curiosity, is there any way
from c to safely read a string to test if it contains a valid object?
Neither cl_read nor c_string_to_object seem to do the trick.
The url in case anyone is missing it: http://www.cs.stevens.edu/~dlong/vbecl
On a new topic, I've been using a lot of ecl's pathname system and have
run into a few problems with it, in the directory function to be
specific. It seems that the correct way to enumerate a directory's
content in ecl is with a slash at the end of the path string or with the
entire path in the pathname-directory i.e.
(directory (pathname "c:/code/"))
(directory (make-pathname :device "c" :directory '(:absolute "code")))
which both work fine. However, I can't find a way to enumerate a root
directory, such as "c:/". No matter what I do I get all directory
pathnames that have no :absolute in their :directory and print out as
#P"c:/". I've tested this on WinXP, Win2k, and Debian and got the same
results everywhere. Perhaps related, in Windows I can't seem to use
directory on any drive besides the one I start in - (directory
"d:/blah/") won't work if I start on "c:/", as if directory is ignoring
the :device. Are these known issues?