]> git.eshelyaron.com Git - emacs.git/commitdiff
(make-temp-file): New function.
authorRichard M. Stallman <rms@gnu.org>
Sat, 11 Sep 1999 01:08:15 +0000 (01:08 +0000)
committerRichard M. Stallman <rms@gnu.org>
Sat, 11 Sep 1999 01:08:15 +0000 (01:08 +0000)
lisp/subr.el

index 7f145861ab3e80da0da81194fc008e57115aeecb..8ade8bc85de78cbfdcf85634eba0a62c6c33d98b 100644 (file)
@@ -1302,4 +1302,28 @@ Return the modified alist."
       (setq tail (cdr tail)))
     alist))
 
+(defun make-temp-file (prefix &optional dir-flag)
+  "Create a temporary file.
+The returned file name (created by appending some random characters at the end
+of PREFIX, and expanding against `temporary-file-directory' if necessary,
+is guaranteed to point to a newly created empty file.
+You can then use `write-region' to write new data into the file.
+
+If DIR-FLAG is non-nil, create a new empty directory instead of a file."
+  (let (file)
+    (while (condition-case ()
+              (progn
+                (setq file
+                      (make-temp-name
+                       (expand-file-name prefix temporary-file-directory)))
+                (if dir-flag
+                    (make-directory file)
+                  (write-region "" nil file nil 'silent nil 'excl))
+                nil)
+           (file-already-exists t))
+      ;; the file was somehow created by someone else between
+      ;; `make-temp-name' and `write-region', let's try again.
+      nil)
+    file))
+
 ;;; subr.el ends here