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)
 |