[armedbear-cvs] r14178 - in trunk/abcl: doc/manual src/org/armedbear/lisp
mevenson at common-lisp.net
mevenson at common-lisp.net
Thu Oct 11 11:33:25 UTC 2012
Author: mevenson
Date: Thu Oct 11 04:33:24 2012
New Revision: 14178
Log:
Merging a "plain file" path on non-Windows gets an :UNSPECIFIC DEVICE.
If the defaults contain a JAR-PATHNAME, and the pathname to be be
merged does not have a specified DEVICE, a specified HOST, and doesn't
contain a relative DIRECTORY, then on non-MSDOG, set its device to
:UNSPECIFIC.
Modified:
trunk/abcl/doc/manual/abcl.tex
trunk/abcl/src/org/armedbear/lisp/Pathname.java
Modified: trunk/abcl/doc/manual/abcl.tex
==============================================================================
--- trunk/abcl/doc/manual/abcl.tex Thu Oct 11 04:33:22 2012 (r14177)
+++ trunk/abcl/doc/manual/abcl.tex Thu Oct 11 04:33:24 2012 (r14178)
@@ -51,6 +51,20 @@
do not match the specification.
\item The \code{TIME} form does not return a proper \code{VALUES}
environment to its caller.
+\item When merging pathnames and the defaults point to a \code{JAR-PATHNAME},
+ we set the \code{DEVICE} of the result to \code{:UNSPECIFIC} if the pathname to be
+ be merged does not contain a specified \code{DEVICE}, does not contain a
+ specified \code{HOST}, does contain a relative \code{DIRECTORY}, and we are
+ not running on a \textsc{MSFT} Windows platform.\footnote{The intent of this
+ rather arcane sounding deviation from conformance is so that the
+ result of a merge won't fill in a DEVICE with the wrong "default
+ device for the host" in the sense of the fourth paragraph in the
+ [CLHS description of MERGE-PATHNAMES][2] (the paragraph beginning
+ "If the PATHNAME explicitly specifies a host and not a device…").
+ A future version of the implementation may return to conformance
+ by using the \code{HOST} value to reflect the type explicitly.
+ }
+
\end{itemize}
Somewhat confusingly, this statement of non-conformance in the
Modified: trunk/abcl/src/org/armedbear/lisp/Pathname.java
==============================================================================
--- trunk/abcl/src/org/armedbear/lisp/Pathname.java Thu Oct 11 04:33:22 2012 (r14177)
+++ trunk/abcl/src/org/armedbear/lisp/Pathname.java Thu Oct 11 04:33:24 2012 (r14178)
@@ -1985,7 +1985,24 @@
result.device = p.device;
} else {
if (!p.isURL()) {
- result.device = d.device;
+ // If the defaults contain a JAR-PATHNAME, and the
+ // pathname to be be merged does not have a specified
+ // DEVICE, a specified HOST, and doesn't contain a
+ // relative DIRECTORY, then on non-MSDOG, set its
+ // device to :UNSPECIFIC.
+ if (pathname.host == NIL
+ && pathname.device == NIL
+ && d.isJar()
+ && !Utilities.isPlatformWindows) {
+ if (pathname.directory != NIL
+ && pathname.directory.car() == Keyword.ABSOLUTE) {
+ result.device = Keyword.UNSPECIFIC;
+ } else {
+ result.device = d.device;
+ }
+ } else {
+ result.device = d.device;
+ }
}
}
More information about the armedbear-cvs
mailing list