]> mj.ucw.cz Git - libucw.git/commitdiff
tried parametrized fastbuf for most of indexing I/O
authorPavel Charvat <pavel.charvat@netcentrum.cz>
Tue, 29 May 2007 12:50:48 +0000 (14:50 +0200)
committerPavel Charvat <pavel.charvat@netcentrum.cz>
Tue, 29 May 2007 12:50:48 +0000 (14:50 +0200)
... but there are still bugs, only std I/O passed

lib/fb-mmap.c
lib/fb-param.c

index 13087d6e72aba57313c40466d654dff0e09320d8..cb1fd06be073bc042b754dff8542a40345c7d94b 100644 (file)
@@ -192,8 +192,6 @@ bfmmopen_internal(int fd, byte *name, uns mode)
 struct fastbuf *
 bopen_mm(byte *name, uns mode)
 {
-  if ((mode & O_ACCMODE) == O_WRONLY)
-    mode = (mode & ~O_ACCMODE) | O_RDWR;
   return bopen_file(name, mode, &(struct fb_params){ .type = FB_MMAP });
 }
 
index e97e22930910ab880a8645434061d61fca16dbb7..38cd5801118293e1bdf71c5268c612cb869e7394 100644 (file)
@@ -80,6 +80,8 @@ bopen_file_internal(byte *name, int mode, struct fb_params *params, int try)
 {
   if (params->type == FB_DIRECT && !fbdir_cheat)
     mode |= O_DIRECT;
+  if (params->type == FB_MMAP && (mode & O_ACCMODE) == O_WRONLY)
+    mode = (mode & ~O_ACCMODE) | O_RDWR;
   int fd = sh_open(name, mode, 0666);
   if (fd < 0)
     if (try)