r3327: *** empty log message ***
authorKevin M. Rosenberg <kevin@rosenberg.net>
Thu, 7 Nov 2002 04:08:36 +0000 (04:08 +0000)
committerKevin M. Rosenberg <kevin@rosenberg.net>
Thu, 7 Nov 2002 04:08:36 +0000 (04:08 +0000)
debian/changelog
genutils.lisp

index 276afb7876636ae520a0fef48f9044cacf82d1ff..f85fa4542817e14474c85c741d21d1911c67ff27 100644 (file)
@@ -1,3 +1,10 @@
+cl-kmrcl (1.20-1) unstable; urgency=low
+
+  * Add with-each-stream-line, with-each-file-line
+  * Use gensyms in other functions to avoid variable capture
+
+ -- Kevin M. Rosenberg <kmr@debian.org>  Wed,  6 Nov 2002 13:33:39 -0700
+
 cl-kmrcl (1.19.1-1) unstable; urgency=low
 
   * Made indent-spaces reslient to non-numeric parameter
index 55751ff84fb41faf7ed51fc9cb23b76eb360ae11..6125aba7262e95696eac18ee766088f75f42b406 100644 (file)
@@ -7,7 +7,7 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Apr 2000
 ;;;;
-;;;; $Id: genutils.lisp,v 1.7 2002/11/04 19:19:04 kevin Exp $
+;;;; $Id: genutils.lisp,v 1.8 2002/11/07 04:07:02 kevin Exp $
 ;;;;
 ;;;; This file, part of KMRCL, is Copyright (c) 2002 by Kevin M. Rosenberg
 ;;;;
          ((> ,var ,gstop))
        ,@body)))
 
-
+(defmacro with-each-stream-line ((var stream) &body body)
+  (let ((eof (gensym))
+       (strm (gensym)))
+    `(let ((,strm ,stream))
+       (do ((,var (read-line stream nil ,eof) (read-line stream nil ,eof)))
+          (eq ,var ,eof)
+        ,@body))))
+
+(defmacro with-each-file-line ((var file) &body body)
+  (let ((stream (gensym)))
+    `(with-open-file (,stream file :direction :input)
+         (with-each-stream-line (,var ,stream)
+           ,@body))))
+
+               
 ;;; Keyword functions
 
 (defun remove-keyword (key arglist)
   "Opens a reads a file. Returns the contents as a single string"
   (when (probe-file file)
     (with-open-file (in file :direction :input)
-                   (do ((line (read-line in nil 'eof) 
-                              (read-line in nil 'eof)))
-                       ((eql line 'eof))
-                     (format strm "~A~%" line)))))
+      (let ((eof (gensym)))                
+       (do ((line (read-line in nil eof) 
+                  (read-line in nil eof)))
+           ((eq line eof))
+         (format strm "~A~%" line))))))
 
 (defun read-file-to-string (file)
   "Opens a reads a file. Returns the contents as a single string"
   (with-output-to-string (out)
     (with-open-file (in file :direction :input)
-      (do ((line (read-line in nil 'eof) 
-                (read-line in nil 'eof)))
-         ((eql line 'eof))
-       (format out "~A~%" line)))))
+      (let ((eof (gensym)))                
+       (do ((line (read-line in nil eof) 
+                  (read-line in nil eof)))
+           ((eq line eof))
+         (format out "~A~%" line))))))
 
 (defun read-file-to-strings (file)
   "Opens a reads a file. Returns the contents as a list of strings"
   (let ((lines '()))
     (with-open-file (in file :direction :input)
-      (do ((line (read-line in nil 'eof) 
-                (read-line in nil 'eof)))
-         ((eql line 'eof))
-       (push line lines)))
-    (nreverse lines)))
-
+      (let ((eof (gensym)))                
+       (do ((line (read-line in nil eof) 
+                  (read-line in nil eof)))
+           ((eq line eof))
+         (push line lines)))
+      (nreverse lines))))
 
 
 ;;; Formatting functions