#include <curses.h>
+#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include "constant.h"
#include "debug.h"
#include "type.h"
char *buffer = NULL;
FILE *fd = fopen (filename, "r");
if (fd) {
- int size = fseek (fd, 0, SEEK_END);
+ fseek (fd, 0, SEEK_END);
+ int size = ftell (fd);
buffer = (char *) calloc (size, 1);
CHECKALLOC (buffer);
- fseek (fd, 0, SEEK_BEGIN);
- fread (buffer, 1, size, fd);
+ fseek (fd, 0, SEEK_SET);
+ int nb = fread (buffer, 1, size, fd);
+ if (nb != size) {
+ VERBOSE (WARNING, printf ("can't fully read file (%s)\n", filename));
+ }
fclose (fd);
}
return ret;
}
-int loaddata (char *str, int *nbplayers, board_t **board, bag_t **bag, play_t *play, draw_t *draw, draw_t **game, int *n, play_t **turn, int *score)
+int restoredata (char *str, int *nbplayers, board_t **board, bag_t **bag, play_t *play, draw_t *draw, draw_t **game, int *n, play_t **turn, int *score)
{
int ret = 1;
} else if (strcmp (name, "game[0]->nbtiles") == 0) {
game[0]->nbtiles = atoi (value);
} else if (strcmp (name, "game[0]->tiles") == 0) {
+ memset (game[0]->tiles, 0, (*board)->length);
strcpy (game[0]->tiles, atos (value));
} else if (strcmp (name, "game[1]->nbtiles") == 0) {
game[1]->nbtiles = atoi (value);
} else if (strcmp (name, "game[1]->tiles") == 0) {
+ memset (game[1]->tiles, 0, (*board)->length);
strcpy (game[1]->tiles, atos (value));
} else if (strcmp (name, "game[2]->nbtiles") == 0) {
game[2]->nbtiles = atoi (value);
} else if (strcmp (name, "game[2]->tiles") == 0) {
+ memset (game[2]->tiles, 0, (*board)->length);
strcpy (game[2]->tiles, atos (value));
} else if (strcmp (name, "game[3]->nbtiles") == 0) {
game[3]->nbtiles = atoi (value);
} else if (strcmp (name, "game[3]->tiles") == 0) {
+ memset (game[3]->tiles, 0, (*board)->length);
strcpy (game[3]->tiles, atos (value));
} else if (strcmp (name, "current") == 0) {
*n = atoi (value);
line = strtok_r (NULL, "\n", &saveptr1);
}
- if (board) {
- play->xsize = board->xsize;
- play->ysize = board->ysize;
+ if (*board) {
+ int i;
+ play->xsize = (*board)->xsize;
+ play->ysize = (*board)->ysize;
for (i = 0; i < MAXNBPLAYERS; i++) {
- turn[i]->xsize = board->xsize;
- turn[i]->ysize = board->ysize;
+ turn[i]->xsize = (*board)->xsize;
+ turn[i]->ysize = (*board)->ysize;
}
} else {
ret = 0;
}
nbplayers = atoi (arg);
break;
+ case 'r':
+ arg = (arg[2]) ? arg + 2 : (--argc > 0) ? *(++argv) : NULL;
+ if (arg == NULL) {
+ VERBOSE (ERROR, fprintf (stderr, "%s: missing file name\n", progname));
+ return usage (1);
+ }
+ file = arg;
+ break;
case 'v':
arg = (arg[2]) ? arg + 2 : (--argc > 0) ? *(++argv) : NULL;
if (arg == NULL) {
int *score = (int *) calloc (MAXNBPLAYERS, sizeof (int));
CHECKALLOC (score);
- for (n = 0; n < nbplayers; n++) {
- drawwindow (game[n], score[n], xdrawwin[n], ydrawwin[n], 0);
- }
n = 0;
if (file) {
}
}
+ int i;
+ for (i = 0; i < nbplayers; i++) {
+ drawwindow (game[i], score[i], xdrawwin[i], ydrawwin[i], 0);
+ }
+
int mode = 0;
showboard (play, board, xoffset, yoffset, mode);