diff --git a/src/bbstool.scm b/src/bbstool.scm index cd2e850..9b1415e 100644 --- a/src/bbstool.scm +++ b/src/bbstool.scm @@ -153,10 +153,17 @@ CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. (print "Member id " (-member-id-) " not found!")) mr) (if (-member-nick-) - (let ((mr (find-member-by-nick MB (-member-nick-)))) - (when (not mr) - (print "Member nick " (-member-nick-) " not found!")) - mr) + (let ((mrs (find-members-by-nick MB (-member-nick-)))) + (cond ((null? mrs) + (newline) + (print "Member nick " (-member-nick-) " not found!") + #f) + ((> (length mrs) 1) + (newline) + (print "Found: " (member-records->string mrs)) + #f) + (else + (car mrs)))) #f))) ;; diff --git a/src/members-base.scm b/src/members-base.scm index b9c2aac..b2a73e5 100644 --- a/src/members-base.scm +++ b/src/members-base.scm @@ -31,6 +31,7 @@ load-members find-member-by-id find-member-by-nick + find-members-by-nick list-members-ids filter-members-by-predicate list-members-nicks @@ -113,6 +114,13 @@ 'nick) nick)))) + ;; Returns a list of members whose nick contains pat + (define (find-members-by-nick mb pat) + (filter-members-by-predicate + mb + (lambda (mr) + (substring-index pat (member-nick mr))))) + ;; Returns all ids found in the database (define (list-members-ids mb) (map (lambda (mr) (dict-ref mr 'id)) mb)) diff --git a/src/members-print.scm b/src/members-print.scm index 5fab5af..2c9cbd7 100644 --- a/src/members-print.scm +++ b/src/members-print.scm @@ -32,6 +32,7 @@ print-member-info print-member-table print-member-source + member-records->string print-members-base-info print-members-base-table print-members-base-stats