From: Mazet Laurent Date: Tue, 18 Jun 2024 05:50:09 +0000 (+0200) Subject: 2nd commit on restore code (not working) X-Git-Tag: v1.0~6 X-Git-Url: https://secure.softndesign.org/git/?a=commitdiff_plain;h=b84e8da08b18c8e35c38c94eabb8cfd451623913;p=scrabble.git 2nd commit on restore code (not working) --- diff --git a/function.c b/function.c index 13e398d..99e78c7 100644 --- a/function.c +++ b/function.c @@ -1,7 +1,9 @@ #include +#include #include #include +#include "constant.h" #include "debug.h" #include "type.h" @@ -590,12 +592,16 @@ char *loaddata (char *filename) 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); } @@ -620,7 +626,7 @@ char *atos (char *str) 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; @@ -651,18 +657,22 @@ int loaddata (char *str, int *nbplayers, board_t **board, bag_t **bag, play_t *p } 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); @@ -689,12 +699,13 @@ int loaddata (char *str, int *nbplayers, board_t **board, bag_t **bag, play_t *p 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; diff --git a/scrabble.c b/scrabble.c index 58199e0..fa3844c 100644 --- a/scrabble.c +++ b/scrabble.c @@ -128,6 +128,14 @@ int main (int argc, char *argv[]) } 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) { @@ -222,9 +230,6 @@ int main (int argc, char *argv[]) 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) { @@ -240,6 +245,11 @@ int main (int argc, char *argv[]) } } + 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);