Portability fixes, mostly from James for Palm purposes. Mostly
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Wed, 4 May 2011 18:41:21 +0000 (18:41 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Wed, 4 May 2011 18:41:21 +0000 (18:41 +0000)
additions of missing 'static' and explicit 'void' in parameter lists,
plus one or two other things like explicitly casting chars in variadic
argument lists to int and using DBL_MAX if HUGE_VAL isn't available.

git-svn-id: svn://svn.tartarus.org/sgt/puzzles@9166 cda61777-01e9-0310-a592-d414129be87e

grid.c
loopy.c
penrose.c
range.c
signpost.c

diff --git a/grid.c b/grid.c
index d7e6442..4ad8c30 100644 (file)
--- a/grid.c
+++ b/grid.c
@@ -12,7 +12,7 @@
 #include <assert.h>
 #include <ctype.h>
 #include <math.h>
-#include <errno.h>
+#include <float.h>
 
 #include "puzzles.h"
 #include "tree234.h"
@@ -52,7 +52,7 @@ void grid_free(grid *g)
 
 /* Used by the other grid generators.  Create a brand new grid with nothing
  * initialised (all lists are NULL) */
-static grid *grid_empty()
+static grid *grid_empty(void)
 {
     grid *g = snew(grid);
     g->faces = NULL;
@@ -225,6 +225,8 @@ xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n\n");
 #endif
 
 #ifdef SVG_GRID
+#include <errno.h>
+
 static void grid_try_svg(grid *g, int which)
 {
     char *svg = getenv("PUZZLES_SVG_GRID");
@@ -1268,7 +1270,15 @@ void grid_find_incentre(grid_face *f)
                     }
 
                     if (in) {
+#ifdef HUGE_VAL
                         double mindist = HUGE_VAL;
+#else
+#ifdef DBL_MAX
+                        double mindist = DBL_MAX;
+#else
+#error No way to get maximum floating-point number.
+#endif
+#endif
                         int e, d;
 
                         /*
@@ -1377,7 +1387,7 @@ void grid_find_incentre(grid_face *f)
 
 #define SQUARE_TILESIZE 20
 
-void grid_size_square(int width, int height,
+static void grid_size_square(int width, int height,
                       int *tilesize, int *xextent, int *yextent)
 {
     int a = SQUARE_TILESIZE;
@@ -1387,7 +1397,7 @@ void grid_size_square(int width, int height,
     *yextent = height * a;
 }
 
-grid *grid_new_square(int width, int height, char *desc)
+static grid *grid_new_square(int width, int height, char *desc)
 {
     int x, y;
     /* Side length */
@@ -1439,7 +1449,7 @@ grid *grid_new_square(int width, int height, char *desc)
 #define HONEY_A 15
 #define HONEY_B 26
 
-void grid_size_honeycomb(int width, int height,
+static void grid_size_honeycomb(int width, int height,
                          int *tilesize, int *xextent, int *yextent)
 {
     int a = HONEY_A;
@@ -1450,7 +1460,7 @@ void grid_size_honeycomb(int width, int height,
     *yextent = (2 * b * (height-1)) + 3*b;
 }
 
-grid *grid_new_honeycomb(int width, int height, char *desc)
+static grid *grid_new_honeycomb(int width, int height, char *desc)
 {
     int x, y;
     int a = HONEY_A;
@@ -1508,7 +1518,7 @@ grid *grid_new_honeycomb(int width, int height, char *desc)
 #define TRIANGLE_VEC_X 15
 #define TRIANGLE_VEC_Y 26
 
-void grid_size_triangular(int width, int height,
+static void grid_size_triangular(int width, int height,
                           int *tilesize, int *xextent, int *yextent)
 {
     int vec_x = TRIANGLE_VEC_X;
@@ -1521,7 +1531,7 @@ void grid_size_triangular(int width, int height,
 
 /* Doesn't use the previous method of generation, it pre-dates it!
  * A triangular grid is just about simple enough to do by "brute force" */
-grid *grid_new_triangular(int width, int height, char *desc)
+static grid *grid_new_triangular(int width, int height, char *desc)
 {
     int x,y;
     
@@ -1603,7 +1613,7 @@ grid *grid_new_triangular(int width, int height, char *desc)
 #define SNUBSQUARE_A 15
 #define SNUBSQUARE_B 26
 
-void grid_size_snubsquare(int width, int height,
+static void grid_size_snubsquare(int width, int height,
                           int *tilesize, int *xextent, int *yextent)
 {
     int a = SNUBSQUARE_A;
@@ -1614,7 +1624,7 @@ void grid_size_snubsquare(int width, int height,
     *yextent = (a+b) * (height-1) + a + b;
 }
 
-grid *grid_new_snubsquare(int width, int height, char *desc)
+static grid *grid_new_snubsquare(int width, int height, char *desc)
 {
     int x, y;
     int a = SNUBSQUARE_A;
@@ -1717,7 +1727,7 @@ grid *grid_new_snubsquare(int width, int height, char *desc)
 #define CAIRO_A 14
 #define CAIRO_B 31
 
-void grid_size_cairo(int width, int height,
+static void grid_size_cairo(int width, int height,
                           int *tilesize, int *xextent, int *yextent)
 {
     int b = CAIRO_B; /* a unused in determining grid size. */
@@ -1727,7 +1737,7 @@ void grid_size_cairo(int width, int height,
     *yextent = 2*b*(height-1) + 2*b;
 }
 
-grid *grid_new_cairo(int width, int height, char *desc)
+static grid *grid_new_cairo(int width, int height, char *desc)
 {
     int x, y;
     int a = CAIRO_A;
@@ -1823,7 +1833,7 @@ grid *grid_new_cairo(int width, int height, char *desc)
 #define GREATHEX_A 15
 #define GREATHEX_B 26
 
-void grid_size_greathexagonal(int width, int height,
+static void grid_size_greathexagonal(int width, int height,
                           int *tilesize, int *xextent, int *yextent)
 {
     int a = GREATHEX_A;
@@ -1834,7 +1844,7 @@ void grid_size_greathexagonal(int width, int height,
     *yextent = (2*a + 2*b) * (height-1) + 3*b + a;
 }
 
-grid *grid_new_greathexagonal(int width, int height, char *desc)
+static grid *grid_new_greathexagonal(int width, int height, char *desc)
 {
     int x, y;
     int a = GREATHEX_A;
@@ -1953,7 +1963,7 @@ grid *grid_new_greathexagonal(int width, int height, char *desc)
 #define OCTAGONAL_A 29
 #define OCTAGONAL_B 41
 
-void grid_size_octagonal(int width, int height,
+static void grid_size_octagonal(int width, int height,
                           int *tilesize, int *xextent, int *yextent)
 {
     int a = OCTAGONAL_A;
@@ -1964,7 +1974,7 @@ void grid_size_octagonal(int width, int height,
     *yextent = (2*a + b) * height;
 }
 
-grid *grid_new_octagonal(int width, int height, char *desc)
+static grid *grid_new_octagonal(int width, int height, char *desc)
 {
     int x, y;
     int a = OCTAGONAL_A;
@@ -2036,7 +2046,7 @@ grid *grid_new_octagonal(int width, int height, char *desc)
 #define KITE_A 15
 #define KITE_B 26
 
-void grid_size_kites(int width, int height,
+static void grid_size_kites(int width, int height,
                      int *tilesize, int *xextent, int *yextent)
 {
     int a = KITE_A;
@@ -2047,7 +2057,7 @@ void grid_size_kites(int width, int height,
     *yextent = 6*a * (height-1) + 8*a;
 }
 
-grid *grid_new_kites(int width, int height, char *desc)
+static grid *grid_new_kites(int width, int height, char *desc)
 {
     int x, y;
     int a = KITE_A;
@@ -2158,7 +2168,7 @@ grid *grid_new_kites(int width, int height, char *desc)
 #define FLORET_PX 75
 #define FLORET_PY -26
 
-void grid_size_floret(int width, int height,
+static void grid_size_floret(int width, int height,
                           int *tilesize, int *xextent, int *yextent)
 {
     int px = FLORET_PX, py = FLORET_PY;         /* |( 75, -26)| = 79.43 */
@@ -2171,7 +2181,7 @@ void grid_size_floret(int width, int height,
     *yextent = (5*qy-4*py) * (height-1) + 4*qy + 2*ry;
 }
 
-grid *grid_new_floret(int width, int height, char *desc)
+static grid *grid_new_floret(int width, int height, char *desc)
 {
     int x, y;
     /* Vectors for sides; weird numbers needed to keep puzzle aligned with window
@@ -2265,7 +2275,7 @@ grid *grid_new_floret(int width, int height, char *desc)
 #define DODEC_A 15
 #define DODEC_B 26
 
-void grid_size_dodecagonal(int width, int height,
+static void grid_size_dodecagonal(int width, int height,
                           int *tilesize, int *xextent, int *yextent)
 {
     int a = DODEC_A;
@@ -2276,7 +2286,7 @@ void grid_size_dodecagonal(int width, int height,
     *yextent = (3*a + 2*b) * (height-1) + 2*(2*a + b);
 }
 
-grid *grid_new_dodecagonal(int width, int height, char *desc)
+static grid *grid_new_dodecagonal(int width, int height, char *desc)
 {
     int x, y;
     int a = DODEC_A;
@@ -2345,7 +2355,7 @@ grid *grid_new_dodecagonal(int width, int height, char *desc)
     return g;
 }
 
-void grid_size_greatdodecagonal(int width, int height,
+static void grid_size_greatdodecagonal(int width, int height,
                           int *tilesize, int *xextent, int *yextent)
 {
     int a = DODEC_A;
@@ -2356,7 +2366,7 @@ void grid_size_greatdodecagonal(int width, int height,
     *yextent = (3*a + 3*b) * (height-1) + 2*(2*a + b);
 }
 
-grid *grid_new_greatdodecagonal(int width, int height, char *desc)
+static grid *grid_new_greatdodecagonal(int width, int height, char *desc)
 {
     int x, y;
     /* Vector for side of triangle - ratio is close to sqrt(3) */
@@ -2468,12 +2478,12 @@ typedef struct setface_ctx
     tree234 *points;
 } setface_ctx;
 
-double round(double r)
+static double round_int_nearest_away(double r)
 {
     return (r > 0.0) ? floor(r + 0.5) : ceil(r - 0.5);
 }
 
-int set_faces(penrose_state *state, vector *vs, int n, int depth)
+static int set_faces(penrose_state *state, vector *vs, int n, int depth)
 {
     setface_ctx *sf_ctx = (setface_ctx *)state->ctx;
     int i;
@@ -2489,8 +2499,8 @@ int set_faces(penrose_state *state, vector *vs, int n, int depth)
     for (i = 0; i < n; i++) {
         double tx = v_x(vs, i), ty = v_y(vs, i);
 
-        xs[i] = (int)round( tx*cosa + ty*sina);
-        ys[i] = (int)round(-tx*sina + ty*cosa);
+        xs[i] = (int)round_int_nearest_away( tx*cosa + ty*sina);
+        ys[i] = (int)round_int_nearest_away(-tx*sina + ty*cosa);
 
         if (xs[i] < sf_ctx->xmin || xs[i] > sf_ctx->xmax) return 0;
         if (ys[i] < sf_ctx->ymin || ys[i] > sf_ctx->ymax) return 0;
@@ -2512,7 +2522,7 @@ int set_faces(penrose_state *state, vector *vs, int n, int depth)
 
 #define PENROSE_TILESIZE 100
 
-void grid_size_penrose(int width, int height,
+static void grid_size_penrose(int width, int height,
                        int *tilesize, int *xextent, int *yextent)
 {
     int l = PENROSE_TILESIZE;
@@ -2669,24 +2679,24 @@ static grid *grid_new_penrose(int width, int height, int which, char *desc)
     return g;
 }
 
-void grid_size_penrose_p2_kite(int width, int height,
+static void grid_size_penrose_p2_kite(int width, int height,
                        int *tilesize, int *xextent, int *yextent)
 {
     grid_size_penrose(width, height, tilesize, xextent, yextent);
 }
 
-void grid_size_penrose_p3_thick(int width, int height,
+static void grid_size_penrose_p3_thick(int width, int height,
                        int *tilesize, int *xextent, int *yextent)
 {
     grid_size_penrose(width, height, tilesize, xextent, yextent);
 }
 
-grid *grid_new_penrose_p2_kite(int width, int height, char *desc)
+static grid *grid_new_penrose_p2_kite(int width, int height, char *desc)
 {
     return grid_new_penrose(width, height, PENROSE_P2, desc);
 }
 
-grid *grid_new_penrose_p3_thick(int width, int height, char *desc)
+static grid *grid_new_penrose_p3_thick(int width, int height, char *desc)
 {
     return grid_new_penrose(width, height, PENROSE_P3, desc);
 }
diff --git a/loopy.c b/loopy.c
index 8617c72..e7fb6cb 100644 (file)
--- a/loopy.c
+++ b/loopy.c
@@ -201,7 +201,7 @@ static char const diffchars[] = DIFFLIST(ENCODE);
 SOLVERLIST(SOLVER_FN_DECL)
 static int (*(solver_fns[]))(solver_state *) = { SOLVERLIST(SOLVER_FN) };
 static int const solver_diffs[] = { SOLVERLIST(SOLVER_DIFF) };
-const int NUM_SOLVERS = sizeof(solver_diffs)/sizeof(*solver_diffs);
+static const int NUM_SOLVERS = sizeof(solver_diffs)/sizeof(*solver_diffs);
 
 struct game_params {
     int w, h;
@@ -1901,7 +1901,7 @@ static char *new_game_desc(game_params *params, random_state *rs,
 
     if (grid_desc) {
         retval = snewn(strlen(grid_desc) + 1 + strlen(game_desc) + 1, char);
-        sprintf(retval, "%s%c%s", grid_desc, GRID_DESC_SEP, game_desc);
+        sprintf(retval, "%s%c%s", grid_desc, (int)GRID_DESC_SEP, game_desc);
         sfree(grid_desc);
         sfree(game_desc);
     } else {
index 18c4258..7adab03 100644 (file)
--- a/penrose.c
+++ b/penrose.c
@@ -96,7 +96,7 @@
 
 struct vector { int a, b, c, d; };
 
-static vector v_origin()
+static vector v_origin(void)
 {
     vector v;
     v.a = v.b = v.c = v.d = 0;
@@ -107,7 +107,7 @@ static vector v_origin()
  * draw an isoceles triangle centred on the X axis. */
 #ifdef TEST_VECTORS
 
-static vector v_unit()
+static vector v_unit(void)
 {
     vector v;
 
@@ -219,7 +219,7 @@ static const char *v_debug(vector v)
  * Tiling routines.
  */
 
-vector xform_coord(vector vo, int shrink, vector vtrans, int ang)
+static vector xform_coord(vector vo, int shrink, vector vtrans, int ang)
 {
     if (shrink < 0)
         vo = v_shrinkphi(vo);
@@ -539,7 +539,7 @@ int test_cb(penrose_state *state, vector *vs, int n, int depth)
     return 0;
 }
 
-void usage_exit()
+void usage_exit(void)
 {
     fprintf(stderr, "Usage: penrose-test [--recursion] P2|P3 SIZE DEPTH\n");
     exit(1);
diff --git a/range.c b/range.c
index 9bc28e6..6bdba76 100644 (file)
--- a/range.c
+++ b/range.c
@@ -49,7 +49,7 @@
 
 #define setmember(obj, field) ( (obj) . field = field )
 
-char *nfmtstr(int n, char *fmt, ...) {
+static char *nfmtstr(int n, char *fmt, ...) {
     va_list va;
     char *ret = snewn(n+1, char);
     va_start(va, fmt);
@@ -83,7 +83,7 @@ struct game_state {
 };
 
 #define DEFAULT_PRESET 0
-static struct game_params presets[] = {{9, 6}, {12, 8}, {13, 9}, {16, 11}};
+static struct game_params range_presets[] = {{9, 6}, {12, 8}, {13, 9}, {16, 11}};
 /* rationale: I want all four combinations of {odd/even, odd/even}, as
  * they play out differently with respect to two-way symmetry.  I also
  * want them to be generated relatively fast yet still be large enough
@@ -95,7 +95,7 @@ static struct game_params presets[] = {{9, 6}, {12, 8}, {13, 9}, {16, 11}};
 static game_params *default_params(void)
 {
     game_params *ret = snew(game_params);
-    *ret = presets[DEFAULT_PRESET]; /* structure copy */
+    *ret = range_presets[DEFAULT_PRESET]; /* structure copy */
     return ret;
 }
 
@@ -108,10 +108,15 @@ static game_params *dup_params(game_params *params)
 
 static int game_fetch_preset(int i, char **name, game_params **params)
 {
-    if (i < 0 || i >= lenof(presets)) return FALSE;
+    game_params *ret;
 
-    *name = nfmtstr(40, "%d x %d", presets[i].w, presets[i].h);
-    *params = dup_params(&presets[i]);
+    if (i < 0 || i >= lenof(range_presets)) return FALSE;
+
+    ret = default_params();
+    *ret = range_presets[i]; /* struct copy */
+    *params = ret;
+
+    *name = nfmtstr(40, "%d x %d", range_presets[i].w, range_presets[i].h);
 
     return TRUE;
 }
@@ -333,19 +338,19 @@ static move *solve_internal(game_state *state, move *base, int diff)
     return moves;
 }
 
+static reasoning *const reasonings[] = {
+    solver_reasoning_not_too_big,
+    solver_reasoning_adjacency,
+    solver_reasoning_connectedness,
+    solver_reasoning_recursion
+};
+
 static move *do_solve(game_state *state,
                       int nclues,
                       const square *clues,
                       move *move_buffer,
                       int difficulty)
 {
-    reasoning *reasonings[] = {
-       solver_reasoning_not_too_big,
-       solver_reasoning_adjacency,
-       solver_reasoning_connectedness,
-       solver_reasoning_recursion
-    };
-
     struct move *buf = move_buffer, *oldbuf;
     int i;
 
index a9c38f5..fdeadba 100644 (file)
@@ -1496,7 +1496,7 @@ static char *interpret_move(game_state *state, game_ui *ui, game_drawstate *ds,
             if (state->prev[si] == -1 && state->next[si] == -1)
                 return "";
             sprintf(buf, "%c%d,%d",
-                    ui->drag_is_from ? 'C' : 'X', ui->sx, ui->sy);
+                    (int)(ui->drag_is_from ? 'C' : 'X'), ui->sx, ui->sy);
             return dupstr(buf);
         }
 
@@ -1515,7 +1515,7 @@ static char *interpret_move(game_state *state, game_ui *ui, game_drawstate *ds,
         if (state->prev[si] == -1 && state->next[si] == -1)
             return "";
         sprintf(buf, "%c%d,%d",
-                (button == 'x') ? 'C' : 'X', ui->cx, ui->cy);
+                (int)((button == 'x') ? 'C' : 'X'), ui->cx, ui->cy);
         return dupstr(buf);
     }