From fd66a01dcdad6bb7cdc7277fca3c193345e25fbd Mon Sep 17 00:00:00 2001 From: simon Date: Wed, 4 May 2011 18:41:21 +0000 Subject: [PATCH] Portability fixes, mostly from James for Palm purposes. Mostly 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 | 76 +++++++++++++++++++++++++++++++++++--------------------------- loopy.c | 4 ++-- penrose.c | 8 +++---- range.c | 31 ++++++++++++++----------- signpost.c | 4 ++-- 5 files changed, 69 insertions(+), 54 deletions(-) diff --git a/grid.c b/grid.c index d7e6442..4ad8c30 100644 --- a/grid.c +++ b/grid.c @@ -12,7 +12,7 @@ #include #include #include -#include +#include #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 + 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 --- 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 { diff --git a/penrose.c b/penrose.c index 18c4258..7adab03 100644 --- 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 --- 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; diff --git a/signpost.c b/signpost.c index a9c38f5..fdeadba 100644 --- a/signpost.c +++ b/signpost.c @@ -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); } -- 2.11.0