case of DEFINE-ERRNO-SYSCALL. However, this change causes simple errno
syscalls to return 0 values, which blows up I/O methods used in S48's
extensible port system, so I had to hack three or four of those methods
to return a random value (#F).
we do a zombie-reap and then retry the fork. This way, if the fork fails
because the process table filled up, you can clean up and win.
It's not the right answer, but the right answer depends on handling SIGCHLD
interrupts, so we can't implement it now.
2. Hacked the optional arg handling to use the new LET-OPT machinery.
files. These files mostly mediate between the C source (export) and
the corresponding C stub files (import) generated by the Scheme files
calling the C routines.
This provided much better argument type checking that before; lots of
small bugs were caught.
Also added const keywords wherever I could find a reasonable place
to improve error detection and efficiency.
Tuned up the makefile to reflect all of this structure. Its dependencies
were pretty out-of-date as it was. It could probably use further work.
improve the quality of the error messages.
- Fixed file-match so that if a filter procedure raises an error condition,
it is caught and treated as a match failure (as if the procedure returned
#f). This means you no longer get blown out of the water by
(file-match "." #f file-directory?)
if the cwd contains a dangling symlink, for example.
- Added set-file-times (utime).
- Caught a bug in an unused arm of the define-errno-syscall macros (rest arg
case).
- Perhaps one or two other minor tweaks.