shithub: puzzles

Download patch

ref: fe1b91ac49cc2f4cd07801535dc19103a8ebeb70
parent: acf5c55d355b49fec8fb5376737d606be0cd8d4f
author: Simon Tatham <[email protected]>
date: Sat Sep 13 14:25:19 EDT 2008

Since the lack of this has caused portability issues in the past:
add "-ansi -pedantic" to the main Unix makefile, and clean up a few
minor problems pointed out thereby.

[originally from svn r8175]

--- a/grid.c
+++ b/grid.c
@@ -643,8 +643,14 @@
  * Assumes g->dots has enough capacity allocated */
 static grid_dot *grid_get_dot(grid *g, tree234 *dot_list, int x, int y)
 {
-    grid_dot test = {0, NULL, NULL, x, y};
-    grid_dot *ret = find234(dot_list, &test, NULL);
+    grid_dot test, *ret;
+
+    test.order = 0;
+    test.edges = NULL;
+    test.faces = NULL;
+    test.x = x;
+    test.y = y;
+    ret = find234(dot_list, &test, NULL);
     if (ret)
         return ret;
 
--- a/loopy.c
+++ b/loopy.c
@@ -179,7 +179,7 @@
 static char const *const diffnames[] = { DIFFLIST(TITLE) };
 static char const diffchars[] = DIFFLIST(ENCODE);
 #define DIFFCONFIG DIFFLIST(CONFIG)
-DIFFLIST(SOLVER_FN_DECL);
+DIFFLIST(SOLVER_FN_DECL)
 static int (*(solver_fns[]))(solver_state *) = { DIFFLIST(SOLVER_FN) };
 
 struct game_params {
@@ -3070,7 +3070,7 @@
      * bounding-box around the line, then flag all nearby objects for redraw.
      */
     if (ds->started) {
-        const char redraw_flag = 1<<7;
+        const char redraw_flag = (char)(1<<7);
         for (i = 0; i < g->num_edges; i++) {
             /* If we're changing state, AND
              * the previous state was a coloured line */
@@ -3199,12 +3199,15 @@
              * direction to create a thin rectangle. */
             int dx = (x1 > x2) ? -1 : ((x1 < x2) ? 1 : 0);
             int dy = (y1 > y2) ? -1 : ((y1 < y2) ? 1 : 0);
-            int points[] = {
-                x1 + dy, y1 - dx,
-                x1 - dy, y1 + dx,
-                x2 - dy, y2 + dx,
-                x2 + dy, y2 - dx
-            };
+            int points[8];
+	    points[0] = x1 + dy;
+	    points[1] = y1 - dx;
+	    points[2] = x1 - dy;
+	    points[3] = y1 + dx;
+	    points[4] = x2 - dy;
+	    points[5] = y2 + dx;
+	    points[6] = x2 + dy;
+	    points[7] = y2 - dx;
             draw_polygon(dr, points, 4, line_colour, line_colour);
         }
         if (ds->started) {
--- a/mkfiles.pl
+++ b/mkfiles.pl
@@ -1108,7 +1108,7 @@
     "# to 1.2 if it isn't found.\n".
     "GTK_CONFIG = sh -c 'pkg-config gtk+-2.0 \$\$0 2>/dev/null || gtk-config \$\$0'\n".
     "\n".
-    &splitline("CFLAGS = -O2 -Wall -Werror -g " .
+    &splitline("CFLAGS = -O2 -Wall -Werror -ansi -pedantic -g " .
 	       (join " ", map {"-I$dirpfx$_"} @srcdirs) .
 	       " `\$(GTK_CONFIG) --cflags`")."\n".
     "XLDFLAGS = `\$(GTK_CONFIG) --libs`\n".
--- a/slant.c
+++ b/slant.c
@@ -1835,7 +1835,8 @@
 			      int *x, int *y)
 {
     /* fool the macros */
-    struct dummy { int tilesize; } dummy = { tilesize }, *ds = &dummy;
+    struct dummy { int tilesize; } dummy, *ds = &dummy;
+    dummy.tilesize = tilesize;
 
     *x = 2 * BORDER + params->w * TILESIZE + 1;
     *y = 2 * BORDER + params->h * TILESIZE + 1;
--- a/tents.c
+++ b/tents.c
@@ -1803,7 +1803,8 @@
 			      int *x, int *y)
 {
     /* fool the macros */
-    struct dummy { int tilesize; } dummy = { tilesize }, *ds = &dummy;
+    struct dummy { int tilesize; } dummy, *ds = &dummy;
+    dummy.tilesize = tilesize;
 
     *x = TLBORDER + BRBORDER + TILESIZE * params->w;
     *y = TLBORDER + BRBORDER + TILESIZE * params->h;
--- a/unfinished/slide.c
+++ b/unfinished/slide.c
@@ -1597,7 +1597,8 @@
 			      int *x, int *y)
 {
     /* fool the macros */
-    struct dummy { int tilesize; } dummy = { tilesize }, *ds = &dummy;
+    struct dummy { int tilesize; } dummy, *ds = &dummy;
+    dummy.tilesize = tilesize;
 
     *x = params->w * TILESIZE + 2*BORDER;
     *y = params->h * TILESIZE + 2*BORDER;