Raymond Toy pushed to branch issue-364-add-mkstemp-mkdtemp at cmucl / cmucl
Commits:
-
9a9609a4
by Raymond Toy at 2025-01-08T09:34:19-08:00
1 changed file:
Changes:
| ... | ... | @@ -2901,32 +2901,6 @@ |
| 2901 | 2901 | (function (* char))))
|
| 2902 | 2902 | c-string))
|
| 2903 | 2903 | |
| 2904 | -(defun unix-mkstemp (template)
|
|
| 2905 | - _N"Generates a unique temporary file name from TEMPLATE, and creates
|
|
| 2906 | - and opens the file. On success, the corresponding file descriptor
|
|
| 2907 | - and name of the file is returned.
|
|
| 2908 | - |
|
| 2909 | - The last six characters of the template must be \"XXXXXX\"."
|
|
| 2910 | - ;; Hope this buffer is large enough!
|
|
| 2911 | - (let ((octets (%name->file template)))
|
|
| 2912 | - (unless (< (length octets) 8192)
|
|
| 2913 | - (error "Internal buffer is too small for encoded file name of ~D octets"
|
|
| 2914 | - (length octets)))
|
|
| 2915 | - (with-alien ((buf (array c-call:unsigned-char 8192)))
|
|
| 2916 | - ;; Convert the Lisp string and copy it to the alien buffer, being
|
|
| 2917 | - ;; sure to zero-terminate the buffer.
|
|
| 2918 | - (loop for k from 0
|
|
| 2919 | - for c across octets
|
|
| 2920 | - do
|
|
| 2921 | - (setf (deref buf k) (char-code c))
|
|
| 2922 | - finally (setf (deref buf k) 0))
|
|
| 2923 | - |
|
| 2924 | - (syscall ("mkstemp" (* c-call:unsigned-char))
|
|
| 2925 | - (values result
|
|
| 2926 | - ;; Convert the file name back to a Lisp string.
|
|
| 2927 | - (%file->name (cast buf c-call:c-string)))
|
|
| 2928 | - (cast buf (* c-call:unsigned-char))))))
|
|
| 2929 | - |
|
| 2930 | 2904 | (defun unix-mkstemp (template)
|
| 2931 | 2905 | _N"Generates a unique temporary file name from TEMPLATE, and creates
|
| 2932 | 2906 | and opens the file. On success, the corresponding file descriptor
|