|
Boost : |
From: Beman Dawes (bdawes_at_[hidden])
Date: 2003-06-22 11:38:05
At 08:02 AM 6/22/2003, John Maddock wrote:
>I'm having a problem with the filesystem lib and read only files -
>basically
>if I copy a read only file then the result is read only, fair enough.
>However if I then try and overwrite that file with another file copy it
>throws because of the read only status of the target file, still fair
>enough. So then I try and remove the target file with remove first, but
>that throws as well because the file "not accessible" i.e. read only! So
-
>how can I get rid of a read only file? At present it seems to be
>impossible?
Yes, at the moment it is impossible with the filesystem library.
[Warning: half-baked ideas follows. I don't even know if it is spelled
writeable or writable.]
If we can figure out portable behavior that will work on POSIX and Windows,
and is likely safe if not useful on other operating systems, then perhaps
we should add something to <boost/filesystem/operations.hpp> like:
bool is_writeable( const path & );
On Windows, the return would reflect the state of the read-only attribute
bit.
On POSIX, the return would reflect the Write permission bit for the most
restrictive user class which applies.
On O/S's which have no concept which usefully maps into is_writeable,
return true.
Note that a true return from is_writeable() does not guarantee that a file
or directory can actually be written to by the program.
void set_writeable( const path &, bool value = true );
On Windows, would set the read-only attribute bit accordingly. May throw.
On POSIX, would set the write permission bit for the most restrictive user
class which applies. May throw.
On O/S's which have no concept of is_writeable, has no effect. Does not
throw.
Comments?
--Beman
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk