From 83b27f4de4f254f83e5fe934e9419c5dd6b57bfe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Wed, 15 Mar 2023 11:51:49 +0100 Subject: [PATCH] Members directory reading. --- brmsaptool.scm | 3 ++- members-base.scm | 30 ++++++++++++++++++++++++++++-- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/brmsaptool.scm b/brmsaptool.scm index d1a9359..1c3c3d0 100644 --- a/brmsaptool.scm +++ b/brmsaptool.scm @@ -62,4 +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-member-file "members/joe") +(load-members "members") + diff --git a/members-base.scm b/members-base.scm index bd6fe86..c3484bc 100644 --- a/members-base.scm +++ b/members-base.scm @@ -34,9 +34,35 @@ (import scheme (chicken base) - testing) + (chicken pathname) + (chicken file posix) + (chicken file) + testing + dictionary) - (define (load-members) + ;; Gets all files and symbolic links from given directory. The + ;; symbolic links are represented by cons cells with car being the + ;; name and cdr the link target. + (define (get-files+symlinks dn) + (let loop ((fns (directory dn)) + (rs '())) + (if (null? fns) + rs + (let* ((fn (car fns)) + (ffn (make-pathname dn fn))) + (loop (cdr fns) + (if (symbolic-link? ffn) + (cons (cons fn (read-symbolic-link ffn)) rs) + (if (regular-file? ffn) + (cons fn rs) + rs))))))) + + (define (load-members dn) + ;; get the directory contents + (print (get-files+symlinks dn)) + ;; filter all ids + ;; resolve links (it might be unknown!) + ;; load member files 1) (define (members-base-tests!)