CLHS says:
19.2.2.1.2.2 Common Case in Pathname Components
For the functions in Figure 19-2, a value of :common for the :case argument that these functions should receive and yield strings in component values according to the following conventions:
* All uppercase means to use a file system's customary case. * All lowercase means to use the opposite of the customary case. * Mixed case represents itself.
Note that these conventions have been chosen in such a way that translation from :local to :common and back to :local is information-preserving.
[pjb@kuiper :0.0 lisp]$ abcl Armed Bear Common Lisp 0.20.0 Java 1.6.0_22 Sun Microsystems Inc. Java HotSpot(TM) Server VM Low-level initialization completed in 0.265 seconds. Startup completed in 0.718 seconds. Type ":help" for a list of available commands. CL-USER(1): (make-pathname :name "TEST" :type "LISP" :case :common) #P"TEST.LISP" CL-USER(2): (namestring (make-pathname :name "TEST" :type "LISP" :case :common)) "TEST.LISP"
I'm on a linux system on a ext3 file system. The customary case is lower case (case significant on this particular file system, but 99.999% of the files on unix are lower case).
Therefore I would expect to get #P"test.lisp"
Notice that:
(make-pathname :name "test" :type "lisp" :case :common) should produce #P"TEST.LISP"
and that:
(make-pathname :name "Test" :type "Lisp" :case :common) should produce #P"Test.Lisp"
And that I understand "yeld strings in component values" to mean that the processing should be done on each parameter independently.