From 3d0c39bbb3f0177b34068a642fa120cbf6e5ef1b Mon Sep 17 00:00:00 2001 From: Laurent MAZET Date: Fri, 14 Jun 2024 18:57:11 +0200 Subject: [PATCH] first try to backup data --- function.c | 39 +++++++++++++++++++++++++++++++++++++-- function.h | 4 ++++ scrabble.c | 7 +++++++ 3 files changed, 48 insertions(+), 2 deletions(-) diff --git a/function.c b/function.c index fff192c..d121f1d 100644 --- a/function.c +++ b/function.c @@ -36,7 +36,7 @@ play_t *initplay (int xsize, int ysize) { play_t *play = (play_t *) malloc (sizeof (play_t)); CHECKALLOC (play); - play->tab = (char *) malloc (xsize * ysize); + play->tab = (char *) calloc (1, xsize * ysize + 1); CHECKALLOC (play->tab); memset (play->tab, ' ', xsize * ysize); play->xsize = xsize; @@ -97,7 +97,7 @@ draw_t *newdraw (int nbtiles) { draw_t *draw = (draw_t *) malloc (sizeof (draw_t)); CHECKALLOC (draw); - draw->tiles = (char *) calloc (1, nbtiles); + draw->tiles = (char *) calloc (1, nbtiles + 1); CHECKALLOC (draw->tiles); draw->nbtiles = nbtiles; return draw; @@ -548,4 +548,39 @@ void checkspellingfromcache (word_t *words, char **listofwords) } } +char *savedata (int nbplayers, char *lang, char *board, play_t *play, draw_t *draw, draw_t **game, int n, play_t **turn, int *score) +{ + int i; + char *buffer = (char *) calloc (10000, 1); + CHECKALLOC (buffer); + + int l = sprintf (buffer, "nbplayers: %d\n", nbplayers); + l += sprintf (buffer + l, "lang: %s\n", lang); + l += sprintf (buffer + l, "board: %s\n", board); + l += sprintf (buffer + l, "play: %s\n", play->tab); + l += sprintf (buffer + l, "draw: %s\n", draw->tiles); + for (i = 0; i < nbplayers; i++) { + l += sprintf (buffer + l, "game[%d]: %s\n", i, game[i]->tiles); + } + l += sprintf (buffer + l, "n: %d\n", n); + l += sprintf (buffer + l, "turn[%d]: %s\n", n, turn[n]->tab); + for (i = 0; i < nbplayers; i++) { + l += sprintf (buffer + l, "score[%d]: %d\n", i, score[i]); + } + + return buffer; +} + +int writedata (char *filename, char *data) +{ + int ret = 0; + FILE *fd = fopen (filename, "w"); + if (fd) { + fwrite (data, strlen (data), 1, fd); + fclose (fd); + ret = 1; + } + return ret; +} + /* vim: set ts=4 sw=4 et: */ diff --git a/function.h b/function.h index fa27ebb..af612d3 100644 --- a/function.h +++ b/function.h @@ -63,6 +63,10 @@ void freecache (char **listofwords); void checkspellingfromcache (word_t *words, char **listofwords); +char *savedata (int nbplayers, char *lang, char *board, play_t *play, draw_t *draw, draw_t **game, int n, play_t **turn, int *score); + +int writedata (char *filename, char *data); + #endif /* __FUNCTION_H__ */ /* vim: set ts=4 sw=4 et: */ diff --git a/scrabble.c b/scrabble.c index 8c1e1d0..e10e942 100644 --- a/scrabble.c +++ b/scrabble.c @@ -292,6 +292,13 @@ int main (int argc, char *argv[]) case 'q': stop = 1; break; + case 's': + { + char *data = savedata (nbplayers, language, boardname, play, draw, game, n, turn, score); + writedata ("data.scr", data); + free (data); + } + break; case 't': mode ^= 1; break; -- 2.30.2