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

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to