I believe ignoring any possible error return from
"os::remove()" to be unacceptable and would change your
specification to:
At Sunday 2002/08/04 00:04, you wrote:
The conversation on this subject appears to be revolving around the implementation and not the specification.replace the above line with:
In my opinion , remove should be idempotent and therefore the specification ( but not the implementation ) should be :
if ( exists( ph ) )
{
if ( is_directory( ph ) && ! empty( ph ) )
throw
else
os::remove( ph )
}
if ( exists( ph ) )
throw
where exists( ph ) is specified as :
if ph definitely exists
return true ;
else if ph definitely does not exist
return false ;
else
throw ;
This is a valid specification which meets all the objections about wanting to be sure that the file has been deleted while still meeting the ease of use criteria that I believe is important for a portable filesystem. I accept that it may not be possible to efficiently implement this specification on any particular operating system.
Keith Burton