From: Laurent Mazet Date: Tue, 25 Jun 2024 06:12:16 +0000 (+0200) Subject: split loading process X-Git-Tag: v1.0~12 X-Git-Url: https://secure.softndesign.org/git/?a=commitdiff_plain;h=1c4c5888670f51966dfde889e7d3eccbdd077792;p=gameoflife.git split loading process --- diff --git a/gameoflife.c b/gameoflife.c index a39ed21..c0412c3 100644 --- a/gameoflife.c +++ b/gameoflife.c @@ -65,6 +65,24 @@ int usage (int ret) return ret; } +board_t *processfile (char *filename, char **name) +{ + char *buffer = readdata (filename); + if (buffer == NULL) { + VERBOSE (ERROR, fprintf (stderr, "can't read file (%s)\n", filename)); + return NULL; + } + + board_t *board = loadboard (buffer); + if (board == NULL) { + VERBOSE (ERROR, fprintf (stderr, "incorrect file (%s)\n", filename)); + } + + free (buffer); + + return board; +} + /* main function */ int main (int argc, char *argv[]) { @@ -153,21 +171,12 @@ int main (int argc, char *argv[]) } /* load element */ - char *buffer = NULL; board_t *element = NULL; int xelement = 0; int yelement = 0; if (filename) { - buffer = readdata (filename); - if (buffer) { - element = loadboard (buffer); - if (element == NULL) { - VERBOSE (ERROR, fprintf (stderr, "incorrect file (%s)\n", filename)); - return 1; - } - free (buffer); - } else { - VERBOSE (ERROR, fprintf (stderr, "can't read file (%s)\n", filename)); + element = processfile (filename, NULL); + if (element == NULL) { return 1; } } else { /* mono cell */ @@ -178,16 +187,8 @@ int main (int argc, char *argv[]) /* load playground */ board_t *playground = NULL; if (playname) { - buffer = readdata (playname); - if (buffer) { - playground = loadboard (buffer); - if (playground == NULL) { - VERBOSE (ERROR, fprintf (stderr, "incorrect file (%s)\n", playname)); - return 1; - } - free (buffer); - } else { - VERBOSE (ERROR, fprintf (stderr, "can't read file (%s)\n", playname)); + playground = processfile (playname, NULL); + if (playground == NULL) { return 1; } } @@ -210,7 +211,12 @@ int main (int argc, char *argv[]) if (ysize <= 0) { ysize = ymax - 2 * (yoffset + 1); } - board_t *board = (playground) ? resizeboard (playground, xsize, ysize) : initboard (xsize, ysize); + board_t *board = NULL; + if (playground) { + board = resizeboard (playground, xsize, ysize); + } else { + board = initboard (xsize, ysize); + } /* window positions */ int xboard = xoffset + 1;