Re: CWD and other unresolved issues Marc Feeley 07 Feb 2020 20:14 UTC

> On Feb 7, 2020, at 1:04 PM, John Cowan <> wrote:
> Well, only if you insist on different threads having different working directories.

Yes I insist!  One obvious example is to have different threads traverse different directory trees concurrently.  With a per-thread current-directory this can be done easily without worrying about other threads interfering with the CWD:

  (define (for-each-file proc dir-or-file)

    (define (walk dir-or-file path)
      (let ((here (cons dir-or-file path)))
        (if (eq? (file-info-type (file-info dir-or-file #f)) 'directory)
            (parameterize ((current-directory dir-or-file))
              (for-each (lambda (x) (walk x here))
            (proc here))))

    (walk dir-or-file '()))

  (for-each-file (lambda (x) (write x) (newline)) "/usr/local/share")

So my point is that chdir should not be defined to have an effect on the interpretation of paths for open-input-file, directory-files, etc