From e26b78b254fa2ed9c1c22270c5423a2e4fcaf9e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Thu, 16 Mar 2023 10:50:29 +0100 Subject: [PATCH] Optional progress in loading the members-base. --- brmsaptool.scm | 2 +- member-file.scm | 6 ++---- members-base.scm | 33 ++++++++++++++++++++++----------- 3 files changed, 25 insertions(+), 16 deletions(-) diff --git a/brmsaptool.scm b/brmsaptool.scm index 1c3c3d0..b4015f4 100644 --- a/brmsaptool.scm +++ b/brmsaptool.scm @@ -62,5 +62,5 @@ (-mfkq () "Member-File invalid Key Quiet" (*member-file-check-syntax* 'quiet)) (-mfec (n) "Member-File parser Error Context (lines)" (*member-file-context* (string->number n)))) -(load-members "members") +(load-members "members" #t) diff --git a/member-file.scm b/member-file.scm index 78f8f0e..23338bd 100644 --- a/member-file.scm +++ b/member-file.scm @@ -215,10 +215,8 @@ ;; Loads lines from given file and parses them. (define (load-member-file ffn) (let* ((f (open-input-file ffn)) - (ls (read-lines f)) - (md (parse-member-lines ls ffn))) - (display ".") - md)) + (ls (read-lines f))) + (parse-member-lines ls ffn))) ;; Performs self-tests of the member-file module. (define (member-file-tests!) diff --git a/members-base.scm b/members-base.scm index 981ae2a..187b9b5 100644 --- a/members-base.scm +++ b/members-base.scm @@ -137,18 +137,29 @@ (load-member-file (make-pathname mdir fname))))) - ;; Loads members database - (define (load-members dn) - (let ((fss (files-dictionary-filter-4digit-symbols - (files+symlinks->files-dictionary - (get-files+symlinks dn))))) - (dict-map - (lambda (symfn symlinks) - (members-base-load-member dn - (symbol->string symfn) - symlinks)) - fss))) + ;; Loads members database, if the second argument is true, shows + ;; progress. + (define (load-members dn . opts) + (let ((progress? (and (not (null? opts)) + (car opts)))) + (when progress? + (display "Loading members ")) + (let* ((fss (files-dictionary-filter-4digit-symbols + (files+symlinks->files-dictionary + (get-files+symlinks dn)))) + (mb (dict-map + (lambda (symfn symlinks) + (when progress? + (display ".")) + (members-base-load-member dn + (symbol->string symfn) + symlinks)) + fss))) + (when progress? + (print " ok.")) + mb))) + ;; Performs self-tests of this module. (define (members-base-tests!) (run-tests members-base