Fixed bfx_open so that more_info is set to correct value
authorAdam Dickmeiss <adam@indexdata.dk>
Mon, 19 Sep 2005 09:37:31 +0000 (09:37 +0000)
committerAdam Dickmeiss <adam@indexdata.dk>
Mon, 19 Sep 2005 09:37:31 +0000 (09:37 +0000)
bfile/bfile.c
bfile/tstbfile1.c

index 99b98fc..87c6447 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: bfile.c,v 1.44 2005-06-14 20:28:53 adam Exp $
+/* $Id: bfile.c,v 1.45 2005-09-19 09:37:31 adam Exp $
    Copyright (C) 1995-2005
    Index Data ApS
 
@@ -155,7 +155,7 @@ BFile bf_xopen(BFiles bfs, const char *name, int block_size, int wrflag,
     if (!bf)
        return 0;
      /* HEADER_SIZE is considered enough for our header */
-    if (bf->alloc_buf_size < HEADER_SIZE)
+    if (bf->block_size < HEADER_SIZE)
        bf->alloc_buf_size = HEADER_SIZE;
     else
        bf->alloc_buf_size = bf->block_size;
@@ -211,6 +211,8 @@ BFile bf_xopen(BFiles bfs, const char *name, int block_size, int wrflag,
        bf_close(bf);
        return 0;
     }
+    if (hbuf[l] == ' ')
+       l++;
     if (more_info)
        *more_info = hbuf + l;
     return bf;
index f2a4903..4566566 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: tstbfile1.c,v 1.1 2005-03-30 09:25:23 adam Exp $
+/* $Id: tstbfile1.c,v 1.2 2005-09-19 09:37:31 adam Exp $
    Copyright (C) 1995-2005
    Index Data ApS
 
@@ -22,22 +22,30 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 
 #include <assert.h>
 #include <stdlib.h>
+#include <string.h>
 #include <idzebra/bfile.h>
 
 void tst1(BFiles bfs)
 {
     int version = 1;
     BFile bf;
+    const char *more_info = 0;
 
     bf_reset(bfs);
     bf = bf_xopen(bfs, "tst", /* block size */ 32, 
                  /* wr */ 1, "tstmagic",       &version, 0 /* more_info */);
     
-    bf_xclose(bf, version, 0 /* no more info */);
+    bf_xclose(bf, version, "more info");
     
     bf = bf_xopen(bfs, "tst", /* block size */ 32, 
-                 /* wr */ 1, "tstmagic",       &version, 0 /* more_info */);
-    
+                 /* wr */ 1, "tstmagic",       &version, &more_info);
+
+    if (strcmp(more_info, "more info"))
+    {
+       fprintf(stderr, "tstbfile1: more info data corrupt more_info=%s\n",
+               more_info);
+       exit(1);
+    }
     bf_xclose(bf, version, 0 /* no more info */);
 }