From: Roland McGrath Date: Tue, 8 Jun 1999 09:07:31 +0000 (+0000) Subject: 1999-06-07 Roland McGrath X-Git-Tag: cvs/pre-glibc-2_1_3~793 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8a0e55c3ee831ef5d3599ddb9f94bc55fca5f93d;p=platform%2Fupstream%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 388c1c6..976b84d 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);