X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=downloads.cl;h=7b528d4bdde327496463939929a1a03d21395087;hb=f3088cd6e99688e7bc3d37bb6c5a58e08c958611;hp=bba97ca71f3e3f06c80ef587568a4df8c635565b;hpb=0cd5f00df6e8c3c0ee57fa7b2eba016161b0202f;p=lml.git diff --git a/downloads.cl b/downloads.cl index bba97ca..7b528d4 100644 --- a/downloads.cl +++ b/downloads.cl @@ -7,7 +7,7 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Aug 2002 ;;;; -;;;; $Id: downloads.cl,v 1.2 2002/09/16 03:09:00 kevin Exp $ +;;;; $Id: downloads.cl,v 1.7 2002/09/16 03:43:44 kevin Exp $ ;;;; ;;;; This file, part of LML, is Copyright (c) 2002 by Kevin M. Rosenberg ;;;; @@ -49,20 +49,17 @@ (make-pathname :name (pathname-name file) :type (pathname-type file)))) (ftp-name (strip-ftp-base file)) - (sig-path - (make-pathname :defaults file - :type - (concatenate 'string - (pathname-type file) ".asc")))) - (with-open-file (strm file :direction :input) - (setq size (round (/ (file-length strm) 1024)))) - (lml-print "~A" *ftp-url* ftp-name basename) - (lml-print "") - (lml-print " (~A, ~:D KB)" modtime size) - (when (probe-file sig-path) - (setq *signed* t) - (lml-print " [Signature]" *ftp-url* ftp-name)) - (br))) + (sig-path (concatenate 'string (namestring file) ".asc"))) + (when (plusp (length basename)) + (with-open-file (strm file :direction :input) + (setq size (round (/ (file-length strm) 1024)))) + (lml-print "~A" *ftp-url* ftp-name basename) + (lml-print "") + (lml-print " (~A, ~:D KB)" modtime size) + (when (probe-file sig-path) + (setq *signed* t) + (lml-print " [Signature]" *ftp-url* ftp-name)) + (br)))) (defun display-header (name url) (lml-print "

Download

") @@ -78,23 +75,28 @@ (defun print-sect-title (title) (lml-print "~A" *section-indent* title *section-indent*)) - + +(defun match-base-name? (name) + (let ((len-base-name (length *base-name*))) + (when (>= (length name) len-base-name) + (dotimes (i len-base-name) + (declare (fixnum i)) + (unless (char= (char *base-name* i) + (char name i)) + (return-from match-base-name? nil))))) + t) + (defun filter-against-base (files) (let ((filtered '())) (dolist (f files) (let ((name (pathname-name f))) - (when - (block search - (dotimes (i (length *base-name*)) - (declare (fixnum i)) - (unless (char= (char *base-name* i) - (char name i)) - (return-from search nil))) - t) + (when (match-base-name? name) (push f filtered)))) - (sort filtered #'(lambda (a b) (string< - (namestring a) - (namestring b)))))) + (when filtered + (sort filtered #'(lambda (a b) (when (and a b) + (string< + (namestring a) + (namestring b)))))))) (defun display-one-section (title pat) (let ((files (filter-against-base (directory pat))))