There is some possibility that this will break one of the sb-posix tests on FreeBSD:
The "rmdir" patch needs some input from FreeBSD users.
"rmdir /" returns EBUSY on NetBSD. Given the recent commit
2a9b33fc45842ec0335fef2988e07337ae8f1fc7 on october, 17. 2011, it looks
like OpenBSD and Darwin return EISDIR, but it's clearly not the case of
NetBSD with a (usual) FFS file system.
In short, either sbcl is currently broken on FreeBSD wrt the rmdir test
and my patch will fix it, or my patch will break it and we need to include
freebsd in the list of OSes producing EISDIR upon "rmdir /".
result)))
(export 'utime :sb-posix)
(defun utime (filename &optional access-time modification-time)
- (let ((fun (extern-alien "utime" (function int (c-string :not-null t)
- (* alien-utimbuf))))
+ (let ((fun (extern-alien #-netbsd "utime" #+netbsd "_utime"
+ (function int (c-string :not-null t)
+ (* alien-utimbuf))))
(name (filename filename)))
(if (not (and access-time modification-time))
(alien-funcall fun name nil)
(typep
(sb-posix:syscall-errno c)
'(member
- #+bsd
+ #+(or darwin openbsd)
#.sb-posix:eisdir
#+win32
#.sb-posix::eacces
#.sb-posix::enotempty
#+sunos
#.sb-posix::einval
- #-(or bsd win32 sunos)
+ #-(or darwin openbsd win32 sunos)
#.sb-posix::ebusy)))) t)
(deftest rmdir.error.4
#include <sys/param.h>
#include <sys/file.h>
#include <unistd.h>
+#include <utime.h>
#include <assert.h>
#include <errno.h>
#include "sbcl.h"
return readdir(dirp);
}
+int
+_utime(const char *file, const struct utimbuf *timep)
+{
+ return utime(file, timep);
+}
+
/* Used in sb-bsd-sockets. */
int
_socket(int domain, int type, int protocol)