Darwin accepts any template, as demonstrated here:
#include <stdio.h>
#include <unistd.h>
int
main(void)
{
char template[] = {'T', '-', 'A', 'A', 'A', 'A', 'A', 'A', '\0'};
char *res = mkdtemp(template);
puts(res ? res : "(null)");
perror("mkdtemp");
}
Outputs:
T-AAAAAA
mkdtemp: Undefined error: 0
This does not match prescribed POSIX behavior, but it is what it is.
* test-suite/tests/filesys.test (skip-on-darwin): New procedure.
("mkdtemp")["invalid template"]: Skip on Darwin.
---
test-suite/tests/filesys.test | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/test-suite/tests/filesys.test b/test-suite/tests/filesys.test
index fa8d6f797..72d778145 100644
--- a/test-suite/tests/filesys.test
+++ b/test-suite/tests/filesys.test
@@ -34,6 +34,9 @@
(define (test-directory2)
(data-file-name "filesys-test-dir2.tmp"))
+(define (skip-on-darwin)
+ (when (string-ci=? "darwin" (vector-ref (uname) 0))
+ (throw 'untested)))
;;;
;;; copy-file
@@ -345,6 +348,8 @@
(= (string-length name) 8)))))
(pass-if-exception "invalid template" exception:system-error
+ ;; MacOS accepts any template and just does no replacements.
+ (skip-on-darwin)
(if (not (defined? 'mkdtemp))
(throw 'unresolved)
(mkdtemp "T-AAAAAA")))
--
2.45.2