X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=downloads.cl;h=7b528d4bdde327496463939929a1a03d21395087;hb=8f2c887a5500d1cba7c1e53e18233085de87a783;hp=3889dea3f654924ecda8a84e81b6bfeb5c6ad2ba;hpb=f212998e69e8b67604a1f96faaf1ecacf693c5c3;p=lml.git diff --git a/downloads.cl b/downloads.cl index 3889dea..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.1 2002/09/16 01:13:49 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 ;;;; @@ -43,24 +43,23 @@ (subseq (length bdir) (length fdir) fdir)))))) (defun print-file (file) - (let ((size (round (/ (file-length file) 1024))) + (let ((size 0) (modtime (date-string (file-write-date file))) (basename (namestring (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")))) - (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

") @@ -76,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))))