Add forgotten files 1.4.70b
[polyglot.git] / book_make.c
index c9500a2..39f99de 100644 (file)
@@ -17,6 +17,7 @@
 #include "pgn.h"
 #include "san.h"
 #include "util.h"
+#include "pgheader.h"
 
 // constants
 
@@ -343,23 +344,39 @@ static void book_save(const char file_name[]) {
 
    FILE * file;
    int pos;
+   char *header, *raw_header;
+   unsigned int size;
+   int i;
 
    ASSERT(file_name!=NULL);
 
    file = fopen(file_name,"wb");
    if (file == NULL) my_fatal("book_save(): can't open file \"%s\" for writing: %s\n",file_name,strerror(errno));
 
+   pgheader_create(&header,"normal","Created by Polyglot.");
+   pgheader_create_raw(&raw_header,header,&size);
+   free(header);
+
+   // write header
+   
+   for(i=0;i<size;i++){
+       fputc(raw_header[i],file);
+   }
+   free(raw_header);
+   
    // entry loop
 
    for (pos = 0; pos < Book->size; pos++) {
 
       ASSERT(keep_entry(pos));
-
-      write_integer(file,8,Book->entry[pos].key);
-      write_integer(file,2,Book->entry[pos].move);
-      write_integer(file,2,entry_score(&Book->entry[pos]));
-      write_integer(file,2,0);
-      write_integer(file,2,0);
+      /* null keys are reserved for the header */
+      if(Book->entry[pos].key!=U64(0x0)){
+         write_integer(file,8,Book->entry[pos].key);
+         write_integer(file,2,Book->entry[pos].move);
+         write_integer(file,2,entry_score(&Book->entry[pos]));
+         write_integer(file,2,0);
+         write_integer(file,2,0);
+      }
    }
 
    fclose(file);
@@ -925,7 +942,7 @@ void book_dump(int argc, char * argv[]) {
         my_fatal("book_dump(): you must specify a color\n");
     }
     if(txt_file==NULL){
-        snprintf(string,StringSize,"book_%s.txt",color?"white":"black");
+        snprintf(string,StringSize,"book_%s.txt",(color==White)?"white":"black");
         my_string_set(&txt_file,string);
     }