split loading process
authorLaurent Mazet <mazet@softndesign.org>
Tue, 25 Jun 2024 06:12:16 +0000 (08:12 +0200)
committerLaurent Mazet <mazet@softndesign.org>
Tue, 25 Jun 2024 06:12:16 +0000 (08:12 +0200)
gameoflife.c

index a39ed2139d2f3b080fe508f1323366306ebb721a..c0412c37502b697f9effe9d3e1dd8d38d6beb576 100644 (file)
@@ -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;