Date: Wed, 9 Jun 1999 17:20:51 +0200
   From: Marcus Brinkmann <[EMAIL PROTECTED]>

   On Wed, Jun 09, 1999 at 05:20:48PM +0200, Per Lundberg wrote:
   > 
   > > maybe you want to apply the same changes to the standalone db packages?
   > > You're certainly welcome.
   > 
   > What do mean is the problem in the db packages? AFAIK the dbopen() is a
   > glibc call, and should be fixed in glibc.. but I could be wrong.

   Ah, no, it may well be that you are correct and me is not. I didn't
   look that closely as soon as Mark said he found the problem.

Roland checked in the following patch to libc:

1999-06-07  Roland McGrath  <[EMAIL PROTECTED]>

        * 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 <[EMAIL PROTECTED]>.

Index: os_oflags.c
===================================================================
RCS file: /var/cvsroot/libc/db2/os/os_oflags.c,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 os_oflags.c
--- os_oflags.c 1999/05/22 14:51:08     1.1.1.1
+++ os_oflags.c 1999/06/09 21:01:52
@@ -33,16 +33,21 @@
        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);


If debian has a seperate db2 package that is not based on the db2
sources in glibc, but on the upstream sources instead, this patch
should be applied there too.

Mark

Reply via email to