1999-06-07 Roland McGrath <roland@baalperazim.frob.com>

* db2/os/os_oflags.c (__db_oflags): Fix checking of O_ACCMODE bits to 
be POSIX compliant.  Prior definition was broken for Hurd. 
Reported by Mark Kettenis <kettenis@gnu.org>.
This commit is contained in:
Roland McGrath 1999-06-08 09:07:31 +00:00
parent 54fe45dc7c
commit 8a0e55c3ee

View File

@ -33,16 +33,21 @@ __db_oflags(oflags)
u_int32_t dbflags;
/*
* XXX
* Convert POSIX 1003.1 open(2) flags to DB flags. Not an exact
* science as most POSIX implementations don't have a flag value
* for O_RDONLY, it's simply the lack of a write flag.
* Convert POSIX 1003.1 open(2) flags to DB flags.
*/
dbflags = 0;
switch (oflags & O_ACCMODE) {
case O_RDONLY:
dbflags |= DB_RDONLY;
break;
case O_WRONLY:
case O_RDWR:
break;
default: /* Bogus flags value from user. */
/* XXX no way to return error from here */
}
if (oflags & O_CREAT)
dbflags |= DB_CREATE;
if (!(oflags & (O_RDWR | O_WRONLY)) || oflags & O_RDONLY)
dbflags |= DB_RDONLY;
if (oflags & O_TRUNC)
dbflags |= DB_TRUNCATE;
return (dbflags);