Hi all,

I've found weird issue with O_RDWR access flag. When you want check
if file is opened for read-only or read-write access you can write
code like:

if (mode & O_WRONLY)
        die();

That piece of code should fail only if file is opened with write-only
access mode.

Main problem is that GNU/Hurd has this O_RDWR flag definition:

#define O_RDWR (O_RDONLY|O_WRONLY)

It looks like bad for me because code written above fails even if file
is opened with read-write access.

Yes, you could use condition like

if (!((mode & O_RDWR) || (mode & O_RDONLY)))
        die();

but it is really not intuitive and will mysteriously break many
programs.

I think O_RDWR definition should be revised, isn't it? That definition
is part of libc but change will affect whole OS.

Regards, Adam

-- 
Adam Tkac


Reply via email to