From 9d496f8d6fb3032864df85ef3d8ae0df5167c3bc Mon Sep 17 00:00:00 2001 From: interp Date: Thu, 4 Apr 2002 23:22:28 +0000 Subject: [PATCH] Try to stick to specification of NETRC:PARSE: always return a netrc-record. --- netrc.scm | 51 +++++++++++++++++++++++++++++++-------------------- 1 file changed, 31 insertions(+), 20 deletions(-) diff --git a/netrc.scm b/netrc.scm index e5e03b0..1736ad0 100644 --- a/netrc.scm +++ b/netrc.scm @@ -1,6 +1,6 @@ ;;; netrc.scm -- parse authentication information contained in ~/.netrc ;; -;; $Id: netrc.scm,v 1.6 2002/04/04 22:39:15 interp Exp $ +;; $Id: netrc.scm,v 1.7 2002/04/04 23:22:28 interp Exp $ ;; ;; Please send suggestions and bug reports to @@ -228,33 +228,44 @@ (with-handler (lambda (error more) (if (netrc-refuse? error) - (begin - (format (current-error-port) - "netrc: Warning: ~a~%" - (car (condition-stuff error))) - (exit (local-default-netrc-record))))) + (format (current-error-port) + "netrc: Warning: ~a~%" + (car (condition-stuff error))) + (format (current-error-port) + "netrc: Warning: Unexpected error encountered: ~s~%" + error)) + (exit (local-default-netrc-record))) (lambda () (with-errno-handler* (lambda (errno packet) (if (= errno errno/noent) - (begin - (format (current-error-port) - "netrc: Warning: no such file or directory: ~a~%" - file-name) - (exit (local-default-netrc-record))))) + (format (current-error-port) + "netrc: Warning: no such file or directory: ~a~%" + file-name) + (format (current-error-port) + "netrc: Warning: Error accessing file ~s~%" + file-name)) + (exit (local-default-netrc-record))) (lambda () (let ((netrc-record (netrc:try-parse file-name default-password default-login))) - (if netrc-record - netrc-record + ; If we get a netrc-record, we return it after + ; checking default login and default password settings. + ; Otherwise, we return the default record with + ; file-name stored. + ; This is sub-optimal, as we may throw away badly + ; structured .netrc-files silently. We need an error + ; checking mechanism. + (if (netrc? netrc-record) (begin - (set-netrc:default-password - netrc-record - (or default-password (local-default-password))) - (set-netrc:default-login - netrc-record - (or default-login (local-default-login))) - netrc-record)))))))))))) + (if (eq? (netrc:default-login netrc-record) #f) + (set-netrc:default-login (local-default-login))) + (if (eq? (netrc:default-password netrc-record) #f) + (set-netrc:default-password (local-default-password))) + netrc-record) + (let ((default-netrc-record (local-default-netrc-record))) + (set-netrc:file-name default-netrc-record file-name) + default-netrc-record)))))))))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; nothing exported below