svn-client to read files added by mario-goulart on Sat Jul 18 16:13:47 2026

(import srfi-1 srfi-13 svn-client)
(import big-chicken)

(define qwiki-source-path (make-parameter "/home/mario/tmp/wiki"))
(define qwiki-repos-username (make-parameter "anonymous"))
(define qwiki-repos-password (make-parameter ""))

(define (path->source-filename path)
  (make-pathname (qwiki-source-path) (string-join path "/")))

(define (call-with-file-to-remove filename proc)
  (handle-exceptions exn
      (begin
        (delete-file* filename)
        (signal exn))
    (let ((result (call-with-input-file filename
                    (lambda (f)
                      (handle-exceptions exn
			  (begin (close-input-port f) (signal exn))
                        (proc f))))))
      (delete-file* filename)
      result)))

(define (call-with-input-revision file rev proc)
  (let ((filename (svn-client-cat
                   file (make-svn-opt-revision-number rev)
                   (qwiki-repos-username) (qwiki-repos-password))))
    (unless filename (error "No such file" file))
    (call-with-file-to-remove filename proc)))

(define (read-svn-file path rev)
  (call-with-input-revision (path->source-filename (string-split path "/")) rev
     (lambda (p)
       (with-input-from-port p read-string))))

(for-each
 (lambda (file)
   (fprintf (current-error-port) "~a~%" file)
   (for-each
    (lambda (rev)
      (print (read-svn-file "srfi-support" rev)))
    (iota 3000 40000)))
 '("srfi-support"
   "users/klutometis"
   "users/moe-aboulkheir"
   "users/mario-domenech-goulart"))