Implement WITH-OPEN-RESOURCE.
authorChris Hanson <org/chris-hanson/cph>
Mon, 4 Jun 2001 17:38:50 +0000 (17:38 +0000)
committerChris Hanson <org/chris-hanson/cph>
Mon, 4 Jun 2001 17:38:50 +0000 (17:38 +0000)
v7/src/imail/imail-core.scm

index 03d9d6b02875265c03a490fdba4df7d0202b3c32..b8b80b457c8ee5f1252ee0069633ef822f4ed79d 100644 (file)
@@ -1,6 +1,6 @@
 ;;; -*-Scheme-*-
 ;;;
-;;; $Id: imail-core.scm,v 1.142 2001/06/03 01:42:28 cph Exp $
+;;; $Id: imail-core.scm,v 1.143 2001/06/04 17:38:50 cph Exp $
 ;;;
 ;;; Copyright (c) 1999-2001 Massachusetts Institute of Technology
 ;;;
 
 (define-generic %open-resource (url))
 
+(define (with-open-resource url procedure)
+  (let ((resource #f))
+    (dynamic-wind (lambda ()
+                   (set! resource (open-resource url))
+                   unspecific)
+                 (lambda () (procedure resource))
+                 (lambda ()
+                   (let ((r resource))
+                     (if r
+                         (begin
+                           (set! resource #f)
+                           (close-resource r #f))))))))
+
 ;; -------------------------------------------------------------------
 ;; Close RESOURCE, freeing up connections, memory, etc.  Subsequent
 ;; use of the resource must work, but may incur a significant time or