[osicat-cvs] CVS update: src/ffi.lisp src/osicat.lisp

Julian E. C. Squires jsquires at common-lisp.net
Fri Jul 8 14:18:21 UTC 2005


Update of /project/osicat/cvsroot/src
In directory common-lisp.net:/tmp/cvs-serv20175

Modified Files:
	ffi.lisp osicat.lisp 
Log Message:
Updated MAKE-TEMPORARY-FILE to unlink temporary file when not using
tmpfile(3).

Date: Fri Jul  8 16:18:19 2005
Author: jsquires

Index: src/ffi.lisp
diff -u src/ffi.lisp:1.4 src/ffi.lisp:1.5
--- src/ffi.lisp:1.4	Tue Jul  5 18:55:46 2005
+++ src/ffi.lisp	Fri Jul  8 16:18:19 2005
@@ -137,4 +137,8 @@
 
 (def-function "tmpnam" ((template :cstring))
   :module "osicat"
-  :returning :cstring)
\ No newline at end of file
+  :returning :cstring)
+
+(def-function "unlink" ((pathname :cstring))
+  :module "osicat"
+  :returning :int)


Index: src/osicat.lisp
diff -u src/osicat.lisp:1.33 src/osicat.lisp:1.34
--- src/osicat.lisp:1.33	Tue Jul  5 19:48:12 2005
+++ src/osicat.lisp	Fri Jul  8 16:18:19 2005
@@ -148,10 +148,14 @@
 				 :element-type element-type))
   ;; XXX Warn about insecurity?  Or is any platform too dumb to have
   ;; fds, also relatively safe from race conditions through obscurity?
-  ;; XXX Another bug with this: the file doesn't get unlinked.
+  ;; XXX Will unlinking the file after opening the stream work the way
+  ;; we expect?
   #-(or cmu sbcl)
-  (open (convert-from-cstring (tmpnam (make-null-pointer 'cstring)))
-	:direction :io :element-type element-type))
+  (let* ((name (tmpnam (make-null-pointer 'cstring)))
+	 (stream (open (convert-from-cstring name) :direction :io
+		       :element-type element-type)))
+    (unlink name)
+    stream))
 
 
 (defmacro with-temporary-file ((stream &key element-type) &body body)




More information about the Osicat-cvs mailing list