PROMPT-FOR-DIRECTORY should not always perform PATHNAME-AS-DIRECTORY
authorChris Hanson <org/chris-hanson/cph>
Sat, 2 Jun 2001 21:57:16 +0000 (21:57 +0000)
committerChris Hanson <org/chris-hanson/cph>
Sat, 2 Jun 2001 21:57:16 +0000 (21:57 +0000)
on its result; if the REQUIRE-MATCH? option isn't given, the result
might not be a directory.  For example, Dired uses this prompt, and an
input with a wildcard file part is permissible.

v7/src/edwin/filcom.scm

index 1ad5b6cc3fcd76abbb08ae42094ac1f6150b7ea8..4a204a48e08c15a7a581eb7d5e45828319fafb00 100644 (file)
@@ -1,6 +1,6 @@
 ;;; -*-Scheme-*-
 ;;;
-;;; $Id: filcom.scm,v 1.217 2001/05/12 20:02:19 cph Exp $
+;;; $Id: filcom.scm,v 1.218 2001/06/02 21:57:16 cph Exp $
 ;;;
 ;;; Copyright (c) 1986, 1989-2001 Massachusetts Institute of Technology
 ;;;
@@ -743,8 +743,15 @@ Prefix arg means treat the plaintext file as binary data."
 
 (define (prompt-for-directory prompt default . options)
   (->namestring
-   (pathname-as-directory
-    (prompt-for-pathname* prompt default file-directory-not-wild? options))))
+   (let ((directory
+         (prompt-for-pathname* prompt default file-directory-not-wild?
+                               options)))
+     ;; Don't convert the result to directory form unless it is known
+     ;; to be a directory.  If REQUIRE-MATCH? is false, it is allowed
+     ;; to specify a file part.
+     (if (file-test-no-errors file-directory-not-wild? directory)
+        (pathname-as-directory directory)
+        directory))))
 
 (define (prompt-for-existing-directory prompt default . options)
   (->namestring