From 87d82f5011281f69cddd4f67e407da2e8144208f Mon Sep 17 00:00:00 2001 From: mainzelm Date: Tue, 5 Mar 2002 16:49:58 +0000 Subject: [PATCH] Align cwd and umask. --- scsh/filesys.scm | 55 +++++++++++++++++++++++++----------------------- 1 file changed, 29 insertions(+), 26 deletions(-) diff --git a/scsh/filesys.scm b/scsh/filesys.scm index 74a0e40..9c37c3a 100644 --- a/scsh/filesys.scm +++ b/scsh/filesys.scm @@ -37,27 +37,29 @@ ;;; Abstract out common code for create-{directory,fifo,hard-link,symlink}: (define (create-file-thing fname makeit override? op-name syscall) - (let ((query (lambda () - (y-or-n? (string-append op-name ": " fname - " already exists. Delete"))))) - (let ((result - (let loop ((override? override?)) - (with-errno-handler - ((err data) - ((errno/exist) - (cond ((if (eq? override? 'query) - (query) - override?) - (delete-filesys-object fname) - (loop #t)) + (with-cwd-aligned + (with-umask-aligned + (let ((query (lambda () + (y-or-n? (string-append op-name ": " fname + " already exists. Delete"))))) + (let ((result + (let loop ((override? override?)) + (with-errno-handler + ((err data) + ((errno/exist) + (cond ((if (eq? override? 'query) + (query) + override?) + (delete-filesys-object fname) + (loop #t)) ;;; raising an error here won't work due to S48's ;;; broken exception system - (else (list err syscall fname))))) - (makeit fname) - #f)))) - (if (list? result) - (apply errno-error result) - (if #f #f))))) + (else (list err syscall fname))))) + (makeit fname) + #f)))) + (if (list? result) + (apply errno-error result) + (if #f #f))))))) ;;;;;;; @@ -106,10 +108,11 @@ ;;; us not to. That's life in the food chain. (define (rename-file old-fname new-fname . maybe-override?) - (let ((override? (:optional maybe-override? #f))) - (if (or (and override? (not (eq? override? 'query))) - (file-not-exists? new-fname) - (and override? - (y-or-n? (string-append "rename-file:" new-fname - " already exists. Delete")))) - (%rename-file old-fname new-fname)))) + (with-cwd-aligned + (let ((override? (:optional maybe-override? #f))) + (if (or (and override? (not (eq? override? 'query))) + (file-not-exists? new-fname) + (and override? + (y-or-n? (string-append "rename-file:" new-fname + " already exists. Delete")))) + (%rename-file old-fname new-fname)))))