Rendered the grid in player and also fixed bug in save/load
[wordblah.git] / wordblox.h
index 22963e4..9a5c27c 100644 (file)
@@ -2,6 +2,9 @@
 #define __WORDBLOX_H
 #define _XOPEN_SOURCE
 #include <unistd.h>
+#include <stdbool.h>
+#include <string.h>
+#include <ctype.h>
 #include <gd.h>
 #include <gdfontmb.h>
 #include <gdfontg.h>
@@ -139,7 +142,7 @@ void export_grid_image  (Puzzle *p, const char *filename, bool answerkey)
        }
        
        gdImagePtr img = gdImageCreate (img_size, img_size);
-       int white = gdImageColorAllocate (img, 255,255,255);
+       gdImageColorAllocate (img, 255,255,255);
        int black = gdImageColorAllocate (img, 0, 0, 0);
        int blue = gdImageColorAllocate (img, 0, 0, 216);
        gdFontPtr sm_fnt = gdFontGetMediumBold ();
@@ -233,7 +236,7 @@ bool next_col_blank (Puzzle *p, int r, int c)
        return false;
 }
 
-/* unfreeze the grid - mak editing possible to change words */
+/* unfreeze the grid - make editing possible to change words */
 void unfreeze_puzzle (Puzzle *p)
 {
        for (int i = 0; i < p->grid_size; i ++)
@@ -317,7 +320,7 @@ void init_puzzle (Puzzle *p, int grid_size)
 /* save the puzzle to a file */
 void save_puzzle (Puzzle *puzzle, const char* file) {
        FILE *outfile;
-       /* First output the uncompressed contents to temp file */
+       /* First output the uncompressed contents to temp file */
        outfile = tmpfile ();
        if (outfile == NULL)
        {
@@ -386,25 +389,27 @@ void save_puzzle (Puzzle *puzzle, const char* file) {
        gzip compressed file */
        fflush (outfile);
        fseek (outfile, 0, 0);
-               
+                       
        /* now compress the file and save it to destination file */
        gzFile outdestfile = gzopen (file, "wb");
        if (outdestfile == NULL)
        {
-               fprintf (stderr, ERROR_WRITING_FILE);
+               fprintf (stderr, "%s\n", ERROR_WRITING_FILE);
                fclose (outfile);
                exit (1);
        }
-       char buf[4096];
-       while (fread (buf, sizeof(char), 4096, outfile))
+       char buf[128];
+       int num = fread (buf, sizeof(char), sizeof(char)*128, outfile);
+       while (num > 0)
        {
-               int res = gzwrite (outdestfile, buf, strlen (buf) );
+               int res = gzwrite (outdestfile, buf, num*sizeof(char) );
                if (res == 0)
                {
-                       fprintf (stderr, "%s %s", ERROR_WRITING_FILE, COMPRESSED);
+                       fprintf (stderr, "%s %s\n", ERROR_WRITING_FILE, COMPRESSED);
                        fclose (outfile);
                        exit (1);
                }
+               num = fread (buf, sizeof(char), sizeof(char)*128, outfile);
        }
        gzclose (outdestfile);
        fclose (outfile);
@@ -417,28 +422,31 @@ Puzzle load_puzzle (const char* file) {
        gzFile insourcefile = gzopen (file, "rb");
        if (insourcefile == NULL)
        {
-               fprintf (stderr, "%s %s", ERROR_READING_FILE, COMPRESSED);
+               fprintf (stderr, "%s %s\n", ERROR_READING_FILE, COMPRESSED);
                exit (1);
        }
        /* Open a temporary file to uncompress the contents */
        FILE *infile = tmpfile ();
        if (infile == NULL)
        {
-               fprintf (stderr, ERROR_READING_FILE);
+               fprintf (stderr, "%s\n", ERROR_READING_FILE);
                exit (1);       
        }
        /* Put the uncompressed content to the temp file */
-       char buf[4096];
-       while (gzread (insourcefile, buf, 4096))
+       char buf[128];
+       int num = 0;
+       num = gzread (insourcefile, buf, 128);
+       while (num > 0)
        {
-               int res = fwrite (buf, sizeof(char), strlen (buf), infile);
+               int res = fwrite (buf, 1, num, infile);
                if (res == 0)
                {
-                       fprintf (stderr, ERROR_READING_FILE);
+                       fprintf (stderr, "%s\n", ERROR_READING_FILE);
                        fclose (infile);
                        gzclose (insourcefile);
                        exit (1);
                }
+               num = gzread (insourcefile, buf, 128);
        }
        /* Close the gzip file */
        gzclose (insourcefile);