~ chicken-core (chicken-5) 26915785e4043b08ed811800eb9a500b7bfbba09
commit 26915785e4043b08ed811800eb9a500b7bfbba09
Author: felix <felix@call-with-current-continuation.org>
AuthorDate: Fri Dec 17 07:50:58 2010 -0500
Commit: felix <felix@call-with-current-continuation.org>
CommitDate: Fri Dec 17 07:50:58 2010 -0500
allow optional mask arg for file-creation-mode to allow use of parameterize
diff --git a/manual/Unit posix b/manual/Unit posix
index a9c586dc..cf46f22c 100644
--- a/manual/Unit posix
+++ b/manual/Unit posix
@@ -538,6 +538,10 @@ Returns the initial file permissions used for newly created files
(set! (file-creation-mode) MODE)
+or
+
+ (file-creation-mode MODE)
+
where {{MODE}} is a bitwise combination of one or more of
the {{perm/...}} flags.
diff --git a/posix-common.scm b/posix-common.scm
index 4b755a43..aec36d62 100644
--- a/posix-common.scm
+++ b/posix-common.scm
@@ -367,10 +367,12 @@ EOF
(define file-creation-mode
(getter-with-setter
- (lambda ()
- (let ((um (##core#inline "C_umask" 0)))
- (##core#inline "C_umask" um)
- um))
+ (lambda (#!optional um)
+ (when um (##sys#check-exact um 'file-creation-mode))
+ (let ((um2 (##core#inline "C_umask" um)))
+ (unless um (##core#inline "C_umask" um2)
+ um2)))
(lambda (um)
+ (##sys#check-exact um 'file-creation-mode)
(##core#inline "C_umask" um))
"(file-creation-mode mode)"))
Trap