Steven E. Harris <seh@panix.com> wrote:
+---------------
| Mark Wooding <mdw@distorted.org.uk> writes:
| > Is there a sensible way of doing what I want, in Common Lisp?  
| 
| I got the following to work in LispWorks, more through experimentation
| than understanding:
| > (rename-file (make-pathname :directory '(:absolute "temp")
|                               :name "foo" :type "new")
|                (make-pathname :type :unspecific))
| #P"C:/temp/foo"
| #P"C:/temp/foo.new"
| #P"C:/temp/foo"
+---------------
It also works in CMUCL [on Linux or FreeBSD, at least]:
    cmu> (rename-file "foo.new"
		      (make-pathname :name "foo" :type :unspecific))
    #p"/usr/u/rpw3/foo"
    #p"/usr/u/rpw3/foo.new"
    #p"/usr/u/rpw3/foo"
    cmu> 
But as you saw, I'm sure, Pascal B. warned that this use
of :UNSPECIFIC is non-portable. However, CLHS 19.2.2.2.3
*does* say:
    19.2.2.2.3 :UNSPECIFIC as a Component Value
    ....
    However, a conforming program can, if it is careful, successfully
    manipulate user-supplied data which contains or refers to non-portable
    pathname components.
    ...
    When writing the value of any pathname component, the consequences
    are undefined if :unspecific is given for a pathname in a file system
    for which it does not make sense.
But in a file system for which it *DOES* make sense...  ;-}  ;-}
-Rob
-----
Rob Warnock			<rpw3@rpw3.org>
627 26th Avenue			<URL:http://rpw3.org/>
San Mateo, CA 94403		(650)572-2607