Raymond Toy pushed to branch issue-375-mkstemp-return-filename at cmucl / cmucl
Commits:
-
e9f2fd2d
by Raymond Toy at 2025-02-07T10:06:23-08:00
2 changed files:
Changes:
| ... | ... | @@ -2904,26 +2904,11 @@ |
| 2904 | 2904 | (function (* char))))
|
| 2905 | 2905 | c-string))
|
| 2906 | 2906 | |
| 2907 | -(defun check-template (template)
|
|
| 2908 | - ;; Make sure the template ends with exactly 6 X's and no more.
|
|
| 2909 | - (let ((last-non-x (position-if-not #'(lambda (c)
|
|
| 2910 | - (char= c #\X))
|
|
| 2911 | - template
|
|
| 2912 | - :from-end t)))
|
|
| 2913 | - (and last-non-x
|
|
| 2914 | - (= last-non-x (- (length template) 7)))))
|
|
| 2915 | - |
|
| 2916 | 2907 | (defun unix-mkstemp (template)
|
| 2917 | 2908 | _N"Generates a unique temporary file name from TEMPLATE, and creates
|
| 2918 | 2909 | and opens the file. On success, the corresponding file descriptor
|
| 2919 | 2910 | and name of the file is returned. Otherwise, NIL and the UNIX error
|
| 2920 | - code is returned.
|
|
| 2921 | - |
|
| 2922 | - The last six characters of the template must be \"XXXXXX\"."
|
|
| 2923 | - ;; Make sure the template is valid.
|
|
| 2924 | - (unless (check-template template)
|
|
| 2925 | - (return-from unix-mkstemp
|
|
| 2926 | - (values nil einval)))
|
|
| 2911 | + code is returned."
|
|
| 2927 | 2912 | (let* ((format (if (eql *filename-encoding* :null)
|
| 2928 | 2913 | :iso8859-1
|
| 2929 | 2914 | *filename-encoding*))
|
| ... | ... | @@ -2955,10 +2940,6 @@ |
| 2955 | 2940 | |
| 2956 | 2941 | If the directory cannot be created NIL and the UNIX error code is
|
| 2957 | 2942 | returned."
|
| 2958 | - ;; Make sure the template is valid.
|
|
| 2959 | - (unless (check-template template)
|
|
| 2960 | - (return-from unix-mkdtemp
|
|
| 2961 | - (values nil einval)))
|
|
| 2962 | 2943 | (let* ((format (if (eql *filename-encoding* :null)
|
| 2963 | 2944 | :iso8859-1
|
| 2964 | 2945 | *filename-encoding*))
|
| ... | ... | @@ -56,6 +56,8 @@ |
| 56 | 56 | (assert-false fd)
|
| 57 | 57 | (assert-true (and (integerp errno) (plusp errno)))))
|
| 58 | 58 | |
| 59 | +;; Darwin allows any number of X's.
|
|
| 60 | +#-darwin
|
|
| 59 | 61 | (define-test mkstemp.bad-template.2
|
| 60 | 62 | (:tag :issues)
|
| 61 | 63 | (multiple-value-bind (fd errno)
|
| ... | ... | @@ -111,6 +113,8 @@ |
| 111 | 113 | (assert-false result)
|
| 112 | 114 | (assert-true (and (integerp errno) (plusp errno)))))
|
| 113 | 115 | |
| 116 | +;; Darwin allows any number of X's.
|
|
| 117 | +#-darwin
|
|
| 114 | 118 | (define-test mkdtemp.bad-template
|
| 115 | 119 | (:tag :issues)
|
| 116 | 120 | (multiple-value-bind (result errno)
|
| ... | ... | @@ -119,6 +123,8 @@ |
| 119 | 123 | (assert-false result)
|
| 120 | 124 | (assert-true (and (integerp errno) (plusp errno)))))
|
| 121 | 125 | |
| 126 | +;; Darwin allows any number of X's.
|
|
| 127 | +#-darwin
|
|
| 122 | 128 | (define-test mkdtemp.bad-template.2
|
| 123 | 129 | (:tag :issues)
|
| 124 | 130 | (multiple-value-bind (result errno)
|