Change GET-MEMOIZED-RESOURCE to accept an optional argument specifying
authorChris Hanson <org/chris-hanson/cph>
Thu, 24 May 2001 03:41:28 +0000 (03:41 +0000)
committerChris Hanson <org/chris-hanson/cph>
Thu, 24 May 2001 03:41:28 +0000 (03:41 +0000)
that it is an error if there is no associated resource.

v7/src/imail/imail-core.scm

index ca929ccd46493d5ab7f812fc6204533676e7dee3..b981f13b42ce7b9e14246a6c2d4a33ba3b81de9c 100644 (file)
@@ -1,6 +1,6 @@
 ;;; -*-Scheme-*-
 ;;;
-;;; $Id: imail-core.scm,v 1.133 2001/05/24 01:19:47 cph Exp $
+;;; $Id: imail-core.scm,v 1.134 2001/05/24 03:41:28 cph Exp $
 ;;;
 ;;; Copyright (c) 1999-2001 Massachusetts Institute of Technology
 ;;;
   (if (not (container? container))
       (error:wrong-type-argument container "IMAIL container" procedure)))
 \f
-(define (get-memoized-resource url)
-  (let ((resource (hash-table/get memoized-resources url #f)))
-    (and resource
-        (let ((resource (weak-car resource)))
-          ;; Delete memoization _only_ if URL-EXISTS? unambiguously
-          ;; states non-existence.  An error is often transitory.
-          (if (and resource (ignore-errors (lambda () (url-exists? url))))
-              resource
-              (begin
-                (hash-table/remove! memoized-resources url)
-                #f))))))
+(define (get-memoized-resource url #!optional error?)
+  (or (let ((resource (hash-table/get memoized-resources url #f)))
+       (and resource
+            (let ((resource (weak-car resource)))
+              ;; Delete memoization _only_ if URL-EXISTS?
+              ;; unambiguously states non-existence.  An error is
+              ;; often transitory.
+              (if (and resource (ignore-errors (lambda () (url-exists? url))))
+                  resource
+                  (begin
+                    (hash-table/remove! memoized-resources url)
+                    #f)))))
+      (and (if (default-object? error?) #f error?)
+          (error "URL has no associated resource:" url))))
 
 (define (memoize-resource resource close)
   (hash-table/put! memoized-resources