From: Roland McGrath Date: Mon, 7 Jun 1999 18:09:37 +0000 (+0000) Subject: 1999-06-07 Roland McGrath X-Git-Tag: cvs/glibc_2-1-2~419 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=31b6743cea3911ec0cb5b10e2133d737c302fbe0;p=thirdparty%2Fglibc.git 1999-06-07 Roland McGrath * 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 . --- diff --git a/db2/os/os_oflags.c b/db2/os/os_oflags.c index 388c1c6faa3..976b84d709a 100644 --- a/db2/os/os_oflags.c +++ b/db2/os/os_oflags.c @@ -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);