Moved hash file information to union.
authorAdam Dickmeiss <adam@indexdata.dk>
Fri, 15 Dec 1995 12:36:52 +0000 (12:36 +0000)
committerAdam Dickmeiss <adam@indexdata.dk>
Fri, 15 Dec 1995 12:36:52 +0000 (12:36 +0000)
Renamed commit files.

bfile/cfile.c
bfile/cfile.h
bfile/commit.c

index 57be833..a6390c2 100644 (file)
@@ -4,7 +4,11 @@
  * Sebastian Hammer, Adam Dickmeiss
  *
  * $Log: cfile.c,v $
- * Revision 1.7  1995-12-15 10:35:07  adam
+ * Revision 1.8  1995-12-15 12:36:52  adam
+ * Moved hash file information to union.
+ * Renamed commit files.
+ *
+ * Revision 1.7  1995/12/15  10:35:07  adam
  * Changed names of commit files.
  *
  * Revision 1.6  1995/12/11  09:03:53  adam
@@ -38,7 +42,7 @@
 
 static int write_head (CFile cf)
 {
-    int left = cf->head.hash_size * sizeof(int);
+    int left = cf->head.u.hash.hash_size * sizeof(int);
     int bno = 1;
     const char *tab = (char*) cf->array;
 
@@ -55,7 +59,7 @@ static int write_head (CFile cf)
 
 static int read_head (CFile cf)
 {
-    int left = cf->head.hash_size * sizeof(int);
+    int left = cf->head.u.hash.hash_size * sizeof(int);
     int bno = 1;
     char *tab = (char*) cf->array;
 
@@ -98,16 +102,16 @@ CFile cf_open (MFile mf, MFile_area area, const char *fname,
     {
         *firstp = 1;
         cf->head.state = 1;
-        cf->head.block_size = block_size;
-        cf->head.hash_size = 401;
-        hash_bytes = cf->head.hash_size * sizeof(int);
-        cf->head.next_bucket =
+        cf->head.u.hash.block_size = block_size;
+        cf->head.u.hash.hash_size = 401;
+        hash_bytes = cf->head.u.hash.hash_size * sizeof(int);
+        cf->head.u.hash.next_bucket =
             (hash_bytes+sizeof(cf->head))/HASH_BSIZE + 2;
-        cf->head.next_block = 1;
+        cf->head.u.hash.next_block = 1;
         if (wflag)
             mf_write (cf->hash_mf, 0, 0, sizeof(cf->head), &cf->head);
         cf->array = xmalloc (hash_bytes);
-        for (i = 0; i<cf->head.hash_size; i++)
+        for (i = 0; i<cf->head.u.hash.hash_size; i++)
             cf->array[i] = 0;
         if (wflag)
             write_head (cf);
@@ -115,28 +119,28 @@ CFile cf_open (MFile mf, MFile_area area, const char *fname,
     else
     {
         *firstp = 0;
-        assert (cf->head.block_size == block_size);
-        assert (cf->head.hash_size > 2 && cf->head.hash_size < 200000);
-        hash_bytes = cf->head.hash_size * sizeof(int);
-        assert (cf->head.next_bucket > 0);
+        assert (cf->head.u.hash.block_size == block_size);
+        assert (cf->head.u.hash.hash_size > 2);
+        hash_bytes = cf->head.u.hash.hash_size * sizeof(int);
+        assert (cf->head.u.hash.next_bucket > 0);
         cf->array = xmalloc (hash_bytes);
         read_head (cf);
     }
-    cf->parray = xmalloc (cf->head.hash_size * sizeof(*cf->parray));
-    for (i = 0; i<cf->head.hash_size; i++)
+    cf->parray = xmalloc (cf->head.u.hash.hash_size * sizeof(*cf->parray));
+    for (i = 0; i<cf->head.u.hash.hash_size; i++)
         cf->parray[i] = NULL;
     cf->bucket_lru_front = cf->bucket_lru_back = NULL;
     cf->bucket_in_memory = 0;
     cf->max_bucket_in_memory = 400;
     cf->dirty = 0;
-    cf->iobuf = xmalloc (cf->head.block_size);
-    memset (cf->iobuf, 0, cf->head.block_size);
+    cf->iobuf = xmalloc (cf->head.u.hash.block_size);
+    memset (cf->iobuf, 0, cf->head.u.hash.block_size);
     return cf;
 }
 
 static int cf_hash (CFile cf, int no)
 {
-    return (no>>3) % cf->head.hash_size;
+    return (no>>3) % cf->head.u.hash.hash_size;
 }
 
 static void release_bucket (CFile cf, struct CFile_hash_bucket *p)
@@ -224,7 +228,7 @@ static struct CFile_hash_bucket *new_bucket (CFile cf, int *block_no, int hno)
     struct CFile_hash_bucket *p;
     int i;
 
-    *block_no = cf->head.next_bucket++;
+    *block_no = cf->head.u.hash.next_bucket++;
     p = alloc_bucket (cf, *block_no, hno);
 
     for (i = 0; i<HASH_BUCKET; i++)
@@ -273,7 +277,7 @@ int cf_new (CFile cf, int no)
     struct CFile_hash_bucket *hbprev = NULL, *hb = cf->parray[hno];
     int *bucketpp = &cf->array[hno];
     int i;
-    int vno = (cf->head.next_block)++;
+    int vno = (cf->head.u.hash.next_block)++;
     
     for (hb = cf->parray[hno]; hb; hb = hb->h_next)
         if (!hb->ph.vno[HASH_BUCKET-1])
index 07282ce..8a55788 100644 (file)
@@ -4,7 +4,11 @@
  * Sebastian Hammer, Adam Dickmeiss
  *
  * $Log: cfile.h,v $
- * Revision 1.4  1995-12-11 09:03:54  adam
+ * Revision 1.5  1995-12-15 12:36:52  adam
+ * Moved hash file information to union.
+ * Renamed commit files.
+ *
+ * Revision 1.4  1995/12/11  09:03:54  adam
  * New function: cf_unlink.
  * New member of commit file head: state (0) deleted, (1) hash file.
  *
@@ -42,10 +46,14 @@ typedef struct CFile_struct
 {
     struct CFile_head {
         int state;
-        int hash_size;
-        int next_bucket;
-        int next_block;
-        int block_size;
+        union {
+            struct {
+                int hash_size;
+                int next_bucket;
+                int next_block;
+                int block_size;
+            } hash;
+        } u;
     } head;
     MFile block_mf;
     MFile hash_mf;
index 0c9df27..8c77b80 100644 (file)
@@ -4,7 +4,11 @@
  * Sebastian Hammer, Adam Dickmeiss
  *
  * $Log: commit.c,v $
- * Revision 1.5  1995-12-12 15:57:55  adam
+ * Revision 1.6  1995-12-15 12:36:53  adam
+ * Moved hash file information to union.
+ * Renamed commit files.
+ *
+ * Revision 1.5  1995/12/12  15:57:55  adam
  * Implemented mf_unlink. cf_unlink uses mf_unlink.
  *
  * Revision 1.4  1995/12/11  09:03:55  adam
@@ -54,9 +58,9 @@ void cf_commit (CFile cf)
         exit (1);
     }
     p = xmalloc (sizeof(*p));
-    hash_bytes = cf->head.hash_size * sizeof(int);
+    hash_bytes = cf->head.u.hash.hash_size * sizeof(int);
     bucket_no = (hash_bytes+sizeof(cf->head))/HASH_BSIZE + 2;
-    for (; bucket_no < cf->head.next_bucket; bucket_no++)
+    for (; bucket_no < cf->head.u.hash.next_bucket; bucket_no++)
     {
         if (!mf_read (cf->hash_mf, bucket_no, 0, 0, p))
         {