X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=contrib%2Fsb-posix%2Fposix-tests.lisp;h=bbd6dd5029519e601971073e486bbe2215ef7734;hb=ae09f8fd7765f6cab6ad317a13e27ff22ab0c11e;hp=92fef5f6ef4fd24fdf4551058aa67b4a2c4ec6a0;hpb=e4d73846ea60ae6cba79c32dde6d9f88b7540146;p=sbcl.git diff --git a/contrib/sb-posix/posix-tests.lisp b/contrib/sb-posix/posix-tests.lisp index 92fef5f..bbd6dd5 100644 --- a/contrib/sb-posix/posix-tests.lisp +++ b/contrib/sb-posix/posix-tests.lisp @@ -405,6 +405,7 @@ (ignore-errors (sb-posix:unlink name)))) nil) +#-hpux ; fix: cant handle c-vargs (deftest open.error.1 (handler-case (sb-posix:open *test-directory* sb-posix::o-wronly) (sb-posix:syscall-error (c) @@ -428,7 +429,7 @@ sb-posix::o-nonblock))) t) -#-win32 +#-(or hpux win32) ; fix: cant handle c-vargs (deftest fcntl.flock.1 (locally (declare (sb-ext:muffle-conditions sb-ext:compiler-note)) (let ((flock (make-instance 'sb-posix:flock @@ -643,6 +644,7 @@ ;; Same thing, but with a very long link target (which doesn't have ;; to exist). This tests the array adjustment in the wrapper, ;; provided that the target's length is long enough. + #-hpux ; arg2 to readlink is 80, and arg0 is larger than that (deftest readlink.2 (let ((target-pathname (make-pathname :name (make-string 255 :initial-element #\a) @@ -765,7 +767,8 @@ (delete-file temp)))) t "mkstemp-1") -#-win32 +#-(or win32 sunos hpux) +;;; mkdtemp is unimplemented on at least Solaris 10 (deftest mkdtemp.1 (let ((pathname (sb-ext:parse-native-namestring @@ -792,3 +795,25 @@ (values (equal "mktemp" (pathname-name pathname)) (not (equal "XXXXXX" (pathname-type pathname))))) t t) + +#-win32 +(deftest mkstemp.null-terminate + (let* ((default (make-pathname :directory '(:absolute "tmp"))) + (filename (namestring (make-pathname :name "mkstemp-1" + :type "XXXXXX" + :defaults default))) + ;; The magic 64 is the filename length that happens to + ;; trigger the no null termination bug at least on my + ;; machine on a certain build. + (n (- 64 (length (sb-ext:string-to-octets filename))))) + (multiple-value-bind (fd temp) + (sb-posix:mkstemp (make-pathname + :name "mkstemp-1" + :type (format nil "~AXXXXXX" + (make-string n :initial-element #\x)) + :defaults default)) + (let ((pathname (sb-ext:parse-native-namestring temp))) + (unwind-protect + (values (integerp fd) (pathname-name pathname)) + (delete-file temp))))) + t "mkstemp-1")