please don't add yet another behaviour variant depending on the symbol-macro-variable *ANSI*! Returning a pathname is IMHO within the ANSI specification (keyword: generalized boolean).
> > According the CLHS, on delete-file
> > delete-file filespec => t
> > It is implementation-dependent whether an attempt to delete a
> > nonexistent file is considered to be successful.
> > delete-file returns true if it succeeds, or signals an
> error of type
> > file-error if it does not.
> > as is Clisp [non-conformant] returning the pathname of the deleted file.
> well, the pathname is "true", so this complies with the third
> paragraph you site (but not with the first one).
> I think returning the path of the deleted file is a useful extension
> which cannot possibly break anything, but if you wish you may disable
> it when *ansi* is T.
No! let's stay serious. No more *ANSI* #ifdef. Prevent us from configuration nightmares. Let's keep software usable. Just stick to the third paragraph from CLHS (true means generalized boolean).
The CLHS says http://www.xanalys.com/software_tools/reference/HyperSpec/Body/26_glo_t.htm#true
"true n. any object that is not false and that is used to represent the success of a predicate test. See t."
"generalized boolean n. an object used as a truth value, where the symbol nil represents false and all other objects represent true. See boolean."
> I want CLISP to return the path of the file if it was found and
> deleted (or T if *ansi* is T), T if the file was not found (for any
> reason whatsoever) and signal an error when the file was
> found but could not be deleted.
This "official" CLISP behaviour should then be sanctioned in impnotes so people know what to expect.
"implementation-dependent adj. [...] A conforming implementation is encouraged (but not required) to document its treatment of each item in this specification which is marked implementation-dependent, [...]"
DELETE-FILE is not currently mentioned in the impnotes.