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:
parent
54fe45dc7c
commit
8a0e55c3ee
|
@ -33,16 +33,21 @@ __db_oflags(oflags)
|
||||||
u_int32_t dbflags;
|
u_int32_t dbflags;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* XXX
|
* Convert POSIX 1003.1 open(2) flags to DB flags.
|
||||||
* 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.
|
|
||||||
*/
|
*/
|
||||||
dbflags = 0;
|
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)
|
if (oflags & O_CREAT)
|
||||||
dbflags |= DB_CREATE;
|
dbflags |= DB_CREATE;
|
||||||
if (!(oflags & (O_RDWR | O_WRONLY)) || oflags & O_RDONLY)
|
|
||||||
dbflags |= DB_RDONLY;
|
|
||||||
if (oflags & O_TRUNC)
|
if (oflags & O_TRUNC)
|
||||||
dbflags |= DB_TRUNCATE;
|
dbflags |= DB_TRUNCATE;
|
||||||
return (dbflags);
|
return (dbflags);
|
||||||
|
|
Loading…
Reference in New Issue