aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Tatham <anakin@pobox.com>2017-10-01 13:53:24 +0100
committerSimon Tatham <anakin@pobox.com>2017-10-01 16:34:41 +0100
commitb3243d75043cf1d70beb88d2a36eaebfe85c2c3f (patch)
treeab6151e321465c172582ca064910665f055ceec9
parentde67801b0fd3dfa11777c1ef86cd617baf376b7b (diff)
downloadpuzzles-b3243d75043cf1d70beb88d2a36eaebfe85c2c3f.zip
puzzles-b3243d75043cf1d70beb88d2a36eaebfe85c2c3f.tar.gz
puzzles-b3243d75043cf1d70beb88d2a36eaebfe85c2c3f.tar.bz2
puzzles-b3243d75043cf1d70beb88d2a36eaebfe85c2c3f.tar.xz
Return error messages as 'const char *', not 'char *'.
They're never dynamically allocated, and are almost always string literals, so const is more appropriate.
-rw-r--r--blackbox.c6
-rw-r--r--bridges.c6
-rw-r--r--cube.c6
-rw-r--r--devel.but26
-rw-r--r--dominosa.c6
-rw-r--r--emcc.c6
-rw-r--r--fifteen.c9
-rw-r--r--filling.c6
-rw-r--r--flip.c6
-rw-r--r--flood.c6
-rw-r--r--galaxies.c9
-rw-r--r--gtk.c22
-rw-r--r--guess.c6
-rw-r--r--inertia.c9
-rw-r--r--keen.c9
-rw-r--r--lightup.c9
-rw-r--r--loopy.c11
-rw-r--r--magnets.c9
-rw-r--r--map.c9
-rw-r--r--midend.c37
-rw-r--r--mines.c9
-rw-r--r--nestedvm.c4
-rw-r--r--net.c6
-rw-r--r--netslide.c6
-rw-r--r--nullgame.c6
-rw-r--r--osx.m4
-rw-r--r--palisade.c6
-rw-r--r--pattern.c9
-rw-r--r--pearl.c9
-rw-r--r--pegs.c6
-rw-r--r--puzzles.h25
-rw-r--r--range.c6
-rw-r--r--rect.c6
-rw-r--r--samegame.c6
-rw-r--r--signpost.c14
-rw-r--r--singles.c9
-rw-r--r--sixteen.c6
-rw-r--r--slant.c9
-rw-r--r--solo.c28
-rw-r--r--tents.c9
-rw-r--r--towers.c9
-rw-r--r--tracks.c6
-rw-r--r--twiddle.c6
-rw-r--r--undead.c6
-rw-r--r--unequal.c11
-rw-r--r--unfinished/group.c11
-rw-r--r--unfinished/separate.c6
-rw-r--r--unfinished/slide.c6
-rw-r--r--unfinished/sokoban.c6
-rw-r--r--unruly.c9
-rw-r--r--untangle.c6
-rw-r--r--windows.c19
52 files changed, 266 insertions, 231 deletions
diff --git a/blackbox.c b/blackbox.c
index 7af1316..829aaec 100644
--- a/blackbox.c
+++ b/blackbox.c
@@ -184,7 +184,7 @@ static game_params *custom_params(const config_item *cfg)
return ret;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
if (params->w < 2 || params->h < 2)
return "Width and height must both be at least two";
@@ -247,7 +247,7 @@ static char *new_game_desc(const game_params *params, random_state *rs,
return ret;
}
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
int nballs, dlen = strlen(desc), i;
unsigned char *bmp;
@@ -458,7 +458,7 @@ static void free_game(game_state *state)
}
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *aux, char **error)
+ const char *aux, const char **error)
{
return dupstr("S");
}
diff --git a/bridges.c b/bridges.c
index 0684b36..0a326f2 100644
--- a/bridges.c
+++ b/bridges.c
@@ -795,7 +795,7 @@ static game_params *custom_params(const config_item *cfg)
return ret;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
if (params->w < 3 || params->h < 3)
return "Width and height must be at least 3";
@@ -1989,7 +1989,7 @@ generated:
return ret;
}
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
int i, wh = params->w * params->h;
@@ -2573,7 +2573,7 @@ badmove:
}
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *aux, char **error)
+ const char *aux, const char **error)
{
char *ret;
game_state *solved;
diff --git a/cube.c b/cube.c
index 249d1ba..f09f63d 100644
--- a/cube.c
+++ b/cube.c
@@ -534,7 +534,7 @@ static void count_grid_square_callback(void *ctx, struct grid_square *sq)
classes[thisclass]++;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
int classes[5];
int i;
@@ -842,7 +842,7 @@ static struct solid *transform_poly(const struct solid *solid, int flip,
return ret;
}
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
int area = grid_area(params->d1, params->d2, solids[params->solid]->order);
int i, j;
@@ -1000,7 +1000,7 @@ static void free_game(game_state *state)
}
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *aux, char **error)
+ const char *aux, const char **error)
{
return NULL;
}
diff --git a/devel.but b/devel.but
index 98724b3..c7112bb 100644
--- a/devel.but
+++ b/devel.but
@@ -664,7 +664,8 @@ function is never called and need not do anything at all.
\S{backend-validate-params} \cw{validate_params()}
-\c char *(*validate_params)(const game_params *params, int full);
+\c const char *(*validate_params)(const game_params *params,
+\c int full);
This function takes a \c{game_params} structure as input, and checks
that the parameters described in it fall within sensible limits. (At
@@ -749,7 +750,8 @@ again in the game description.
\S{backend-validate-desc} \cw{validate_desc()}
-\c char *(*validate_desc)(const game_params *params, const char *desc);
+\c const char *(*validate_desc)(const game_params *params,
+\c const char *desc);
This function is given a game description, and its job is to
validate that it describes a puzzle which makes sense.
@@ -1053,7 +1055,7 @@ not even offer the \q{Solve} menu option.
\S{backend-solve} \cw{solve()}
\c char *(*solve)(const game_state *orig, const game_state *curr,
-\c const char *aux, char **error);
+\c const char *aux, const char **error);
This function is called when the user selects the \q{Solve} option
from the menu.
@@ -3154,8 +3156,8 @@ will probably need to pass it to \cw{midend_set_config}.)
\H{midend-set-config} \cw{midend_set_config()}
-\c char *midend_set_config(midend *me, int which,
-\c config_item *cfg);
+\c const char *midend_set_config(midend *me, int which,
+\c config_item *cfg);
Passes the mid-end the results of a configuration dialog box.
\c{which} should have the same value which it had when
@@ -3176,7 +3178,7 @@ using \cw{midend_size()} and eventually perform a refresh using
\H{midend-game-id} \cw{midend_game_id()}
-\c char *midend_game_id(midend *me, char *id);
+\c const char *midend_game_id(midend *me, char *id);
Passes the mid-end a string game ID (of any of the valid forms
\cq{params}, \cq{params:description} or \cq{params#seed}) which the
@@ -3244,7 +3246,7 @@ conversion.
\H{midend-solve} \cw{midend_solve()}
-\c char *midend_solve(midend *me);
+\c const char *midend_solve(midend *me);
Requests the mid-end to perform a Solve operation.
@@ -3316,9 +3318,8 @@ output string.
\H{midend-deserialise} \cw{midend_deserialise()}
-\c char *midend_deserialise(midend *me,
-\c int (*read)(void *ctx, void *buf, int len),
-\c void *rctx);
+\c const char *midend_deserialise(midend *me,
+\c int (*read)(void *ctx, void *buf, int len), void *rctx);
This function is the counterpart to \cw{midend_serialise()}. It
calls the supplied \cw{read} function repeatedly to read a quantity
@@ -3355,9 +3356,8 @@ place.
\H{identify-game} \cw{identify_game()}
-\c char *identify_game(char **name,
-\c int (*read)(void *ctx, void *buf, int len),
-\c void *rctx);
+\c const char *identify_game(char **name,
+\c int (*read)(void *ctx, void *buf, int len), void *rctx);
This function examines a serialised midend stream, of the same kind
used by \cw{midend_serialise()} and \cw{midend_deserialise()}, and
diff --git a/dominosa.c b/dominosa.c
index d26f97a..14d854f 100644
--- a/dominosa.c
+++ b/dominosa.c
@@ -191,7 +191,7 @@ static game_params *custom_params(const config_item *cfg)
return ret;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
if (params->n < 1)
return "Maximum face number must be at least one";
@@ -744,7 +744,7 @@ static char *new_game_desc(const game_params *params, random_state *rs,
return ret;
}
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
int n = params->n, w = n+2, h = n+1, wh = w*h;
int *occurrences;
@@ -871,7 +871,7 @@ static void free_game(game_state *state)
}
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *aux, char **error)
+ const char *aux, const char **error)
{
int n = state->params.n, w = n+2, h = n+1, wh = w*h;
int *placements;
diff --git a/emcc.c b/emcc.c
index c499eef..7a74833 100644
--- a/emcc.c
+++ b/emcc.c
@@ -656,7 +656,7 @@ static void cfg_end(int use_results)
/*
* User hit OK.
*/
- char *err = midend_set_config(me, cfg_which, cfg);
+ const char *err = midend_set_config(me, cfg_which, cfg);
if (err) {
/*
@@ -766,7 +766,7 @@ void command(int n)
break;
case 9: /* Solve */
if (thegame.can_solve) {
- char *msg = midend_solve(me);
+ const char *msg = midend_solve(me);
if (msg)
js_error_box(msg);
}
@@ -863,7 +863,7 @@ void load_game(const char *buffer, int len)
*/
int main(int argc, char **argv)
{
- char *param_err;
+ const char *param_err;
float *colours;
int i;
diff --git a/fifteen.c b/fifteen.c
index 9a985e3..9c83756 100644
--- a/fifteen.c
+++ b/fifteen.c
@@ -134,7 +134,7 @@ static game_params *custom_params(const config_item *cfg)
return ret;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
if (params->w < 2 || params->h < 2)
return "Width and height must both be at least two";
@@ -270,7 +270,7 @@ static char *new_game_desc(const game_params *params, random_state *rs,
return ret;
}
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
const char *p;
char *err;
@@ -379,7 +379,7 @@ static void free_game(game_state *state)
}
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *aux, char **error)
+ const char *aux, const char **error)
{
return dupstr("S");
}
@@ -1126,7 +1126,8 @@ int main(int argc, char **argv)
{
game_params *params;
game_state *state;
- char *id = NULL, *desc, *err;
+ char *id = NULL, *desc;
+ const char *err;
int grade = FALSE;
char *progname = argv[0];
diff --git a/filling.c b/filling.c
index 585b4bd..6f775f4 100644
--- a/filling.c
+++ b/filling.c
@@ -184,7 +184,7 @@ static game_params *custom_params(const config_item *cfg)
return ret;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
if (params->w < 1) return "Width must be at least one";
if (params->h < 1) return "Height must be at least one";
@@ -1266,7 +1266,7 @@ static char *new_game_desc(const game_params *params, random_state *rs,
return sresize(description, j, char);
}
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
const int sz = params->w * params->h;
const char m = '0' + max(max(params->w, params->h), 3);
@@ -1338,7 +1338,7 @@ static void free_game(game_state *state)
}
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *aux, char **error)
+ const char *aux, const char **error)
{
if (aux == NULL) {
const int w = state->shared->params.w;
diff --git a/flip.c b/flip.c
index fc96329..9e5716a 100644
--- a/flip.c
+++ b/flip.c
@@ -178,7 +178,7 @@ static game_params *custom_params(const config_item *cfg)
return ret;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
if (params->w <= 0 || params->h <= 0)
return "Width and height must both be greater than zero";
@@ -592,7 +592,7 @@ static char *new_game_desc(const game_params *params, random_state *rs,
return ret;
}
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
int w = params->w, h = params->h, wh = w * h;
int mlen = (wh*wh+3)/4, glen = (wh+3)/4;
@@ -669,7 +669,7 @@ static void rowxor(unsigned char *row1, unsigned char *row2, int len)
}
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *aux, char **error)
+ const char *aux, const char **error)
{
int w = state->w, h = state->h, wh = w * h;
unsigned char *equations, *solution, *shortest;
diff --git a/flood.c b/flood.c
index 90247fc..a3a2506 100644
--- a/flood.c
+++ b/flood.c
@@ -205,7 +205,7 @@ static game_params *custom_params(const config_item *cfg)
return ret;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
if (params->w < 2 && params->h < 2)
return "Grid must contain at least two squares";
@@ -589,7 +589,7 @@ static char *new_game_desc(const game_params *params, random_state *rs,
return desc;
}
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
int w = params->w, h = params->h, wh = w*h;
int i;
@@ -683,7 +683,7 @@ static void free_game(game_state *state)
}
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *aux, char **error)
+ const char *aux, const char **error)
{
int w = state->w, h = state->h, wh = w*h;
char *moves, *ret, *p;
diff --git a/galaxies.c b/galaxies.c
index 629fb89..d10fc5d 100644
--- a/galaxies.c
+++ b/galaxies.c
@@ -277,7 +277,7 @@ static game_params *custom_params(const config_item *cfg)
return ret;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
if (params->w < 3 || params->h < 3)
return "Width and height must both be at least 3";
@@ -1570,7 +1570,7 @@ fail:
return NULL;
}
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
char *why = NULL;
game_state *dummy = load_game(params, desc, &why);
@@ -2254,7 +2254,7 @@ got_result:
#ifndef EDITOR
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *aux, char **error)
+ const char *aux, const char **error)
{
game_state *tosolve;
char *ret;
@@ -3771,7 +3771,8 @@ static void soak(game_params *p, random_state *rs)
int main(int argc, char **argv)
{
game_params *p;
- char *id = NULL, *desc, *err;
+ char *id = NULL, *desc;
+ const char *err;
game_state *s;
int diff, do_soak = 0, verbose = 0;
random_state *rs;
diff --git a/gtk.c b/gtk.c
index c1e5a66..8c342f5 100644
--- a/gtk.c
+++ b/gtk.c
@@ -1492,8 +1492,8 @@ static void align_label(GtkLabel *label, double x, double y)
}
#if GTK_CHECK_VERSION(3,0,0)
-int message_box(GtkWidget *parent, char *title, char *msg, int centre,
- int type)
+int message_box(GtkWidget *parent, const char *title, const char *msg,
+ int centre, int type)
{
GtkWidget *window;
gint ret;
@@ -1587,7 +1587,7 @@ int message_box(GtkWidget *parent, char *title, char *msg, int centre,
}
#endif /* GTK_CHECK_VERSION(3,0,0) */
-void error_box(GtkWidget *parent, char *msg)
+void error_box(GtkWidget *parent, const char *msg)
{
message_box(parent, "Error", msg, FALSE, MB_OK);
}
@@ -1595,7 +1595,7 @@ void error_box(GtkWidget *parent, char *msg)
static void config_ok_button_clicked(GtkButton *button, gpointer data)
{
frontend *fe = (frontend *)data;
- char *err;
+ const char *err;
err = midend_set_config(fe->me, fe->cfg_which, fe->cfg);
@@ -2298,7 +2298,8 @@ static void menu_save_event(GtkMenuItem *menuitem, gpointer data)
static void menu_load_event(GtkMenuItem *menuitem, gpointer data)
{
frontend *fe = (frontend *)data;
- char *name, *err;
+ char *name;
+ const char *err;
name = file_selector(fe, "Enter name of saved game file to load", FALSE);
@@ -2329,7 +2330,7 @@ static void menu_load_event(GtkMenuItem *menuitem, gpointer data)
static void menu_solve_event(GtkMenuItem *menuitem, gpointer data)
{
frontend *fe = (frontend *)data;
- char *msg;
+ const char *msg;
msg = midend_solve(fe->me);
@@ -2488,7 +2489,7 @@ static frontend *new_window(char *arg, int argtype, char **error)
fe->me = midend_new(fe, &thegame, &gtk_drawing, fe);
if (arg) {
- char *err;
+ const char *err;
FILE *fp;
errbuf[0] = '\0';
@@ -3170,7 +3171,8 @@ int main(int argc, char **argv)
* generated descriptive game IDs.)
*/
while (ngenerate == 0 || i < n) {
- char *pstr, *err, *seed;
+ char *pstr, *seed;
+ const char *err;
struct rusage before, after;
if (ngenerate == 0) {
@@ -3224,7 +3226,7 @@ int main(int argc, char **argv)
* re-entering the same game id, and then try to solve
* it.
*/
- char *game_id, *err;
+ char *game_id;
game_id = midend_get_game_id(me);
err = midend_game_id(me, game_id);
@@ -3269,7 +3271,7 @@ int main(int argc, char **argv)
sprintf(realname, "%s%d%s", savefile, i, savesuffix);
if (soln) {
- char *err = midend_solve(me);
+ const char *err = midend_solve(me);
if (err) {
fprintf(stderr, "%s: unable to show solution: %s\n",
realname, err);
diff --git a/guess.c b/guess.c
index af26edc..14e2d90 100644
--- a/guess.c
+++ b/guess.c
@@ -206,7 +206,7 @@ static game_params *custom_params(const config_item *cfg)
return ret;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
if (params->ncolours < 2 || params->npegs < 2)
return "Trivial solutions are uninteresting";
@@ -280,7 +280,7 @@ newcol:
return ret;
}
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
unsigned char *bmp;
int i;
@@ -360,7 +360,7 @@ static void free_game(game_state *state)
}
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *aux, char **error)
+ const char *aux, const char **error)
{
return dupstr("S");
}
diff --git a/inertia.c b/inertia.c
index f5bf1a1..6c64fc0 100644
--- a/inertia.c
+++ b/inertia.c
@@ -191,7 +191,7 @@ static game_params *custom_params(const config_item *cfg)
return ret;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
/*
* Avoid completely degenerate cases which only have one
@@ -585,7 +585,7 @@ static char *new_game_desc(const game_params *params, random_state *rs,
return gengrid(params->w, params->h, rs);
}
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
int w = params->w, h = params->h, wh = w*h;
int starts = 0, gems = 0, i;
@@ -729,7 +729,7 @@ static int compare_integers(const void *av, const void *bv)
}
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *aux, char **error)
+ const char *aux, const char **error)
{
int w = currstate->p.w, h = currstate->p.h, wh = w*h;
int *nodes, *nodeindex, *edges, *backedges, *edgei, *backedgei, *circuit;
@@ -1733,7 +1733,8 @@ static game_state *execute_move(const game_state *state, const char *move)
assert(ret->solnpos < ret->soln->len); /* or gems == 0 */
assert(!ret->dead); /* or not a solution */
} else {
- char *error = NULL, *soln = solve_game(NULL, ret, NULL, &error);
+ const char *error = NULL;
+ char *soln = solve_game(NULL, ret, NULL, &error);
if (!error) {
install_new_solution(ret, soln);
sfree(soln);
diff --git a/keen.c b/keen.c
index 8a05659..2acbea9 100644
--- a/keen.c
+++ b/keen.c
@@ -211,7 +211,7 @@ static game_params *custom_params(const config_item *cfg)
return ret;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
if (params->w < 3 || params->w > 9)
return "Grid size must be between 3 and 9";
@@ -1203,7 +1203,7 @@ done
* Gameplay.
*/
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
int w = params->w, a = w*w;
int *dsf;
@@ -1345,7 +1345,7 @@ static void free_game(game_state *state)
}
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *aux, char **error)
+ const char *aux, const char **error)
{
int w = state->par.w, a = w*w;
int i, ret;
@@ -2379,7 +2379,8 @@ int main(int argc, char **argv)
{
game_params *p;
game_state *s;
- char *id = NULL, *desc, *err;
+ char *id = NULL, *desc;
+ const char *err;
int grade = FALSE;
int ret, diff, really_show_working = FALSE;
diff --git a/lightup.c b/lightup.c
index c5ee418..fd363e0 100644
--- a/lightup.c
+++ b/lightup.c
@@ -342,7 +342,7 @@ static game_params *custom_params(const config_item *cfg)
return ret;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
if (params->w < 2 || params->h < 2)
return "Width and height must be at least 2";
@@ -1624,7 +1624,7 @@ goodpuzzle:
return ret;
}
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
int i;
for (i = 0; i < params->w*params->h; i++) {
@@ -1695,7 +1695,7 @@ static game_state *new_game(midend *me, const game_params *params,
}
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *aux, char **error)
+ const char *aux, const char **error)
{
game_state *solved;
char *move = NULL, buf[80];
@@ -2326,7 +2326,8 @@ int main(int argc, char **argv)
{
game_params *p;
game_state *s;
- char *id = NULL, *desc, *err, *result;
+ char *id = NULL, *desc, *result;
+ const char *err;
int nsol, diff, really_verbose = 0;
unsigned int sflags;
diff --git a/loopy.c b/loopy.c
index 8af9a30..32f38ce 100644
--- a/loopy.c
+++ b/loopy.c
@@ -232,7 +232,7 @@ struct game_drawstate {
char *clue_satisfied;
};
-static char *validate_desc(const game_params *params, const char *desc);
+static const char *validate_desc(const game_params *params, const char *desc);
static int dot_order(const game_state* state, int i, char line_type);
static int face_order(const game_state* state, int i, char line_type);
static solver_state *solve_game_rec(const solver_state *sstate);
@@ -675,7 +675,7 @@ static game_params *custom_params(const config_item *cfg)
return ret;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
if (params->type < 0 || params->type >= NUM_GRID_TYPES)
return "Illegal grid type";
@@ -756,7 +756,7 @@ static char *extract_grid_desc(const char **desc)
/* We require that the params pass the test in validate_params and that the
* description fills the entire game area */
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
int count = 0;
grid *g;
@@ -2908,7 +2908,7 @@ static solver_state *solve_game_rec(const solver_state *sstate_start)
}
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *aux, char **error)
+ const char *aux, const char **error)
{
char *soln = NULL;
solver_state *sstate, *new_sstate;
@@ -3687,7 +3687,8 @@ int main(int argc, char **argv)
{
game_params *p;
game_state *s;
- char *id = NULL, *desc, *err;
+ char *id = NULL, *desc;
+ const char *err;
int grade = FALSE;
int ret, diff;
#if 0 /* verbose solver not supported here (yet) */
diff --git a/magnets.c b/magnets.c
index 5a6b661..ebb5376 100644
--- a/magnets.c
+++ b/magnets.c
@@ -227,7 +227,7 @@ static game_params *custom_params(const config_item *cfg)
return ret;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
if (params->w < 2) return "Width must be at least one";
if (params->h < 2) return "Height must be at least one";
@@ -534,7 +534,7 @@ done:
return state;
}
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
const char *prob;
game_state *st = new_game_int(params, desc, &prob);
@@ -1450,7 +1450,7 @@ static void solve_from_aux(const game_state *state, const char *aux)
}
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *aux, char **error)
+ const char *aux, const char **error)
{
game_state *solved = dup_game(currstate);
char *move = NULL;
@@ -2535,7 +2535,8 @@ static void start_soak(game_params *p, random_state *rs)
int main(int argc, const char *argv[])
{
int print = 0, soak = 0, solved = 0, ret;
- char *id = NULL, *desc, *desc_gen = NULL, *err, *aux = NULL;
+ char *id = NULL, *desc, *desc_gen = NULL, *aux = NULL;
+ const char *err;
game_state *s = NULL;
game_params *p = NULL;
random_state *rs = NULL;
diff --git a/map.c b/map.c
index 917c525..4796f8e 100644
--- a/map.c
+++ b/map.c
@@ -248,7 +248,7 @@ static game_params *custom_params(const config_item *cfg)
return ret;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
if (params->w < 2 || params->h < 2)
return "Width and height must be at least two";
@@ -1776,7 +1776,7 @@ static char *parse_edge_list(const game_params *params, const char **desc,
return NULL;
}
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
int w = params->w, h = params->h, wh = w*h, n = params->n;
int area;
@@ -2186,7 +2186,7 @@ static void free_game(game_state *state)
}
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *aux, char **error)
+ const char *aux, const char **error)
{
if (!aux) {
/*
@@ -3235,7 +3235,8 @@ int main(int argc, char **argv)
{
game_params *p;
game_state *s;
- char *id = NULL, *desc, *err;
+ char *id = NULL, *desc;
+ const char *err;
int grade = FALSE;
int ret, diff, really_verbose = FALSE;
struct solver_scratch *sc;
diff --git a/midend.c b/midend.c
index 1f5f077..db038bd 100644
--- a/midend.c
+++ b/midend.c
@@ -116,7 +116,7 @@ struct deserialise_data {
/*
* Forward reference.
*/
-static char *midend_deserialise_internal(
+static const char *midend_deserialise_internal(
midend *me, int (*read)(void *ctx, void *buf, int len), void *rctx,
char *(*check)(void *ctx, midend *, const struct deserialise_data *),
void *cctx);
@@ -483,7 +483,8 @@ void midend_new_game(midend *me)
*/
if (me->ourgame->can_solve && me->aux_info) {
game_state *s;
- char *msg, *movestr;
+ const char *msg;
+ char *movestr;
msg = NULL;
movestr = me->ourgame->solve(me->states[0].state,
@@ -600,7 +601,7 @@ static char *newgame_undo_deserialise_check(
static int midend_undo(midend *me)
{
- char *deserialise_error;
+ const char *deserialise_error;
if (me->statepos > 1) {
if (me->ui)
@@ -1392,9 +1393,10 @@ config_item *midend_get_config(midend *me, int which, char **wintitle)
return NULL;
}
-static char *midend_game_id_int(midend *me, char *id, int defmode)
+static const char *midend_game_id_int(midend *me, char *id, int defmode)
{
- char *error, *par, *desc, *seed;
+ const char *error;
+ char *par, *desc, *seed;
game_params *newcurparams, *newparams, *oldparams1, *oldparams2;
int free_params;
@@ -1564,7 +1566,7 @@ static char *midend_game_id_int(midend *me, char *id, int defmode)
return NULL;
}
-char *midend_game_id(midend *me, char *id)
+const char *midend_game_id(midend *me, char *id)
{
return midend_game_id_int(me, id, DEF_PARAMS);
}
@@ -1597,9 +1599,9 @@ char *midend_get_random_seed(midend *me)
return ret;
}
-char *midend_set_config(midend *me, int which, config_item *cfg)
+const char *midend_set_config(midend *me, int which, config_item *cfg)
{
- char *error;
+ const char *error;
game_params *params;
switch (which) {
@@ -1645,10 +1647,11 @@ char *midend_text_format(midend *me)
return NULL;
}
-char *midend_solve(midend *me)
+const char *midend_solve(midend *me)
{
game_state *s;
- char *msg, *movestr;
+ const char *msg;
+ char *movestr;
if (!me->ourgame->can_solve)
return "This game does not support the Solve operation";
@@ -1907,7 +1910,7 @@ void midend_serialise(midend *me,
* Like midend_deserialise proper, this function returns NULL on
* success, or an error message.
*/
-static char *midend_deserialise_internal(
+static const char *midend_deserialise_internal(
midend *me, int (*read)(void *ctx, void *buf, int len), void *rctx,
char *(*check)(void *ctx, midend *, const struct deserialise_data *data),
void *cctx)
@@ -2274,7 +2277,7 @@ static char *midend_deserialise_internal(
return ret;
}
-char *midend_deserialise(
+const char *midend_deserialise(
midend *me, int (*read)(void *ctx, void *buf, int len), void *rctx)
{
return midend_deserialise_internal(me, read, rctx, NULL, NULL);
@@ -2287,8 +2290,9 @@ char *midend_deserialise(
* allocated and should be caller-freed), or an error message on
* failure.
*/
-char *identify_game(char **name, int (*read)(void *ctx, void *buf, int len),
- void *rctx)
+const char *identify_game(char **name,
+ int (*read)(void *ctx, void *buf, int len),
+ void *rctx)
{
int nstates = 0, statepos = -1, gotstates = 0;
int started = FALSE;
@@ -2385,7 +2389,7 @@ char *identify_game(char **name, int (*read)(void *ctx, void *buf, int len),
return ret;
}
-char *midend_print_puzzle(midend *me, document *doc, int with_soln)
+const char *midend_print_puzzle(midend *me, document *doc, int with_soln)
{
game_state *soln = NULL;
@@ -2393,7 +2397,8 @@ char *midend_print_puzzle(midend *me, document *doc, int with_soln)
return "No game set up to print";/* _shouldn't_ happen! */
if (with_soln) {
- char *msg, *movestr;
+ const char *msg;
+ char *movestr;
if (!me->ourgame->can_solve)
return "This game does not support the Solve operation";
diff --git a/mines.c b/mines.c
index 4612da9..6304668 100644
--- a/mines.c
+++ b/mines.c
@@ -239,7 +239,7 @@ static game_params *custom_params(const config_item *cfg)
return ret;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
/*
* Lower limit on grid size: each dimension must be at least 3.
@@ -1988,7 +1988,7 @@ static char *new_game_desc(const game_params *params, random_state *rs,
}
}
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
int wh = params->w * params->h;
int x, y;
@@ -2298,7 +2298,7 @@ static void free_game(game_state *state)
}
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *aux, char **error)
+ const char *aux, const char **error)
{
if (!state->layout->mines) {
*error = "Game has not been started yet";
@@ -3227,7 +3227,8 @@ int main(int argc, char **argv)
{
game_params *p;
game_state *s;
- char *id = NULL, *desc, *err;
+ char *id = NULL, *desc;
+ const char *err;
int y, x;
while (--argc > 0) {
diff --git a/nestedvm.c b/nestedvm.c
index 704f6d1..b778280 100644
--- a/nestedvm.c
+++ b/nestedvm.c
@@ -259,7 +259,7 @@ void activate_timer(frontend *fe)
void jcallback_config_ok()
{
frontend *fe = (frontend *)_fe;
- char *err;
+ const char *err;
err = midend_set_config(fe->me, fe->cfg_which, fe->cfg);
@@ -377,7 +377,7 @@ int jcallback_preset_event(int ptr_game_params)
int jcallback_solve_event()
{
frontend *fe = (frontend *)_fe;
- char *msg;
+ const char *msg;
msg = midend_solve(fe->me);
diff --git a/net.c b/net.c
index 2b8706d..20366a2 100644
--- a/net.c
+++ b/net.c
@@ -306,7 +306,7 @@ static game_params *custom_params(const config_item *cfg)
return ret;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
if (params->width <= 0 || params->height <= 0)
return "Width and height must both be greater than zero";
@@ -1591,7 +1591,7 @@ static char *new_game_desc(const game_params *params, random_state *rs,
return desc;
}
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
int w = params->width, h = params->height;
int i;
@@ -1742,7 +1742,7 @@ static void free_game(game_state *state)
}
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *aux, char **error)
+ const char *aux, const char **error)
{
unsigned char *tiles;
char *ret;
diff --git a/netslide.c b/netslide.c
index 542b571..aee5973 100644
--- a/netslide.c
+++ b/netslide.c
@@ -302,7 +302,7 @@ static game_params *custom_params(const config_item *cfg)
return ret;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
if (params->width <= 1 || params->height <= 1)
return "Width and height must both be greater than one";
@@ -689,7 +689,7 @@ static char *new_game_desc(const game_params *params, random_state *rs,
return desc;
}
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
int w = params->width, h = params->height;
int i;
@@ -879,7 +879,7 @@ static void free_game(game_state *state)
}
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *aux, char **error)
+ const char *aux, const char **error)
{
if (!aux) {
*error = "Solution not known for this puzzle";
diff --git a/nullgame.c b/nullgame.c
index 183b1e3..bc19c1e 100644
--- a/nullgame.c
+++ b/nullgame.c
@@ -78,7 +78,7 @@ static game_params *custom_params(const config_item *cfg)
return NULL;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
return NULL;
}
@@ -89,7 +89,7 @@ static char *new_game_desc(const game_params *params, random_state *rs,
return dupstr("FIXME");
}
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
return NULL;
}
@@ -119,7 +119,7 @@ static void free_game(game_state *state)
}
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *aux, char **error)
+ const char *aux, const char **error)
{
return NULL;
}
diff --git a/osx.m b/osx.m
index 4798e49..64cbb16 100644
--- a/osx.m
+++ b/osx.m
@@ -789,7 +789,7 @@ struct frontend {
const char *name = [[[op filenames] objectAtIndex:0]
cStringUsingEncoding:
[NSString defaultCStringEncoding]];
- char *err;
+ const char *err;
FILE *fp = fopen(name, "r");
@@ -836,7 +836,7 @@ struct frontend {
- (void)solveGame:(id)sender
{
- char *msg;
+ const char *msg;
msg = midend_solve(me);
diff --git a/palisade.c b/palisade.c
index 3b5878b..5227a1d 100644
--- a/palisade.c
+++ b/palisade.c
@@ -155,7 +155,7 @@ static game_params *custom_params(const config_item *cfg)
* +---+ the dominos is horizontal or vertical. +---+---+
*/
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
int w = params->w, h = params->h, k = params->k, wh = w * h;
@@ -701,7 +701,7 @@ static char *new_game_desc(const game_params *params, random_state *rs,
return sresize(numbers, p - numbers, clue);
}
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
int w = params->w, h = params->h, wh = w*h, squares = 0;
@@ -782,7 +782,7 @@ static void free_game(game_state *state)
}
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *aux, char **error)
+ const char *aux, const char **error)
{
int w = state->shared->params.w, h = state->shared->params.h, wh = w*h;
borderflag *move;
diff --git a/pattern.c b/pattern.c
index e680553..45b1b0c 100644
--- a/pattern.c
+++ b/pattern.c
@@ -171,7 +171,7 @@ static game_params *custom_params(const config_item *cfg)
return ret;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
if (params->w <= 0 || params->h <= 0)
return "Width and height must both be greater than zero";
@@ -885,7 +885,7 @@ static char *new_game_desc(const game_params *params, random_state *rs,
return desc;
}
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
int i, n, rowspace;
const char *p;
@@ -1045,7 +1045,7 @@ static void free_game(game_state *state)
}
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *ai, char **error)
+ const char *ai, const char **error)
{
unsigned char *matrix;
int w = state->common->w, h = state->common->h;
@@ -2021,7 +2021,8 @@ int main(int argc, char **argv)
{
game_params *p;
game_state *s;
- char *id = NULL, *desc, *err;
+ char *id = NULL, *desc;
+ const char *err;
while (--argc > 0) {
char *p = *++argv;
diff --git a/pearl.c b/pearl.c
index e3e83c5..4f3be50 100644
--- a/pearl.c
+++ b/pearl.c
@@ -268,7 +268,7 @@ static game_params *custom_params(const config_item *cfg)
return ret;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
if (params->w < 5) return "Width must be at least five";
if (params->h < 5) return "Height must be at least five";
@@ -1387,7 +1387,7 @@ static char *new_game_desc(const game_params *params, random_state *rs,
return desc;
}
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
int i, sizesofar;
const int totalsize = params->w * params->h;
@@ -1721,7 +1721,7 @@ static char *solve_for_diff(game_state *state, char *old_lines, char *new_lines)
}
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *aux, char **error)
+ const char *aux, const char **error)
{
game_state *solved = dup_game(state);
int i, ret, sz = state->shared->sz;
@@ -2707,7 +2707,8 @@ int main(int argc, const char *argv[])
game_params *p = NULL;
random_state *rs = NULL;
time_t seed = time(NULL);
- char *id = NULL, *err;
+ char *id = NULL;
+ const char *err;
setvbuf(stdout, NULL, _IONBF, 0);
diff --git a/pegs.c b/pegs.c
index 35f6624..565ba94 100644
--- a/pegs.c
+++ b/pegs.c
@@ -178,7 +178,7 @@ static game_params *custom_params(const config_item *cfg)
return ret;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
if (full && (params->w <= 3 || params->h <= 3))
return "Width and height must both be greater than three";
@@ -656,7 +656,7 @@ static char *new_game_desc(const game_params *params, random_state *rs,
return ret;
}
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
int len = params->w * params->h;
@@ -707,7 +707,7 @@ static void free_game(game_state *state)
}
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *aux, char **error)
+ const char *aux, const char **error)
{
return NULL;
}
diff --git a/puzzles.h b/puzzles.h
index 0a91e31..662bcfe 100644
--- a/puzzles.h
+++ b/puzzles.h
@@ -311,13 +311,13 @@ int midend_which_preset(midend *me);
int midend_wants_statusbar(midend *me);
enum { CFG_SETTINGS, CFG_SEED, CFG_DESC, CFG_FRONTEND_SPECIFIC };
config_item *midend_get_config(midend *me, int which, char **wintitle);
-char *midend_set_config(midend *me, int which, config_item *cfg);
-char *midend_game_id(midend *me, char *id);
+const char *midend_set_config(midend *me, int which, config_item *cfg);
+const char *midend_game_id(midend *me, char *id);
char *midend_get_game_id(midend *me);
char *midend_get_random_seed(midend *me);
int midend_can_format_as_text_now(midend *me);
char *midend_text_format(midend *me);
-char *midend_solve(midend *me);
+const char *midend_solve(midend *me);
int midend_status(midend *me);
int midend_can_undo(midend *me);
int midend_can_redo(midend *me);
@@ -326,14 +326,15 @@ char *midend_rewrite_statusbar(midend *me, char *text);
void midend_serialise(midend *me,
void (*write)(void *ctx, void *buf, int len),
void *wctx);
-char *midend_deserialise(midend *me,
- int (*read)(void *ctx, void *buf, int len),
- void *rctx);
-char *identify_game(char **name, int (*read)(void *ctx, void *buf, int len),
- void *rctx);
+const char *midend_deserialise(midend *me,
+ int (*read)(void *ctx, void *buf, int len),
+ void *rctx);
+const char *identify_game(char **name,
+ int (*read)(void *ctx, void *buf, int len),
+ void *rctx);
void midend_request_id_changes(midend *me, void (*notify)(void *), void *ctx);
/* Printing functions supplied by the mid-end */
-char *midend_print_puzzle(midend *me, document *doc, int with_soln);
+const char *midend_print_puzzle(midend *me, document *doc, int with_soln);
int midend_tilesize(midend *me);
/*
@@ -589,17 +590,17 @@ struct game {
int can_configure;
config_item *(*configure)(const game_params *params);
game_params *(*custom_params)(const config_item *cfg);
- char *(*validate_params)(const game_params *params, int full);
+ const char *(*validate_params)(const game_params *params, int full);
char *(*new_desc)(const game_params *params, random_state *rs,
char **aux, int interactive);
- char *(*validate_desc)(const game_params *params, const char *desc);
+ const char *(*validate_desc)(const game_params *params, const char *desc);
game_state *(*new_game)(midend *me, const game_params *params,
const char *desc);
game_state *(*dup_game)(const game_state *state);
void (*free_game)(game_state *state);
int can_solve;
char *(*solve)(const game_state *orig, const game_state *curr,
- const char *aux, char **error);
+ const char *aux, const char **error);
int can_format_as_text_ever;
int (*can_format_as_text_now)(const game_params *params);
char *(*text_format)(const game_state *state);
diff --git a/range.c b/range.c
index dd7ecbc..aef7453 100644
--- a/range.c
+++ b/range.c
@@ -308,7 +308,7 @@ enum {
static move *solve_internal(const game_state *state, move *base, int diff);
static char *solve_game(const game_state *orig, const game_state *curpos,
- const char *aux, char **error)
+ const char *aux, const char **error)
{
int const n = orig->params.w * orig->params.h;
move *const base = snewn(n, move);
@@ -906,7 +906,7 @@ static int dfs_count_white(game_state *state, int cell)
return k;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
int const w = params->w, h = params->h;
if (w < 1) return "Error: width is less than 1";
@@ -1073,7 +1073,7 @@ static char *newdesc_encode_game_description(int area, puzzle_size *grid)
return desc;
}
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
int const n = params->w * params->h;
int squares = 0;
diff --git a/rect.c b/rect.c
index b31a84e..0140808 100644
--- a/rect.c
+++ b/rect.c
@@ -214,7 +214,7 @@ static game_params *custom_params(const config_item *cfg)
return ret;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
if (params->w <= 0 || params->h <= 0)
return "Width and height must both be greater than zero";
@@ -1773,7 +1773,7 @@ static char *new_game_desc(const game_params *params_in, random_state *rs,
return desc;
}
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
int area = params->w * params->h;
int squares = 0;
@@ -1974,7 +1974,7 @@ static void free_game(game_state *state)
}
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *ai, char **error)
+ const char *ai, const char **error)
{
unsigned char *vedge, *hedge;
int x, y, len;
diff --git a/samegame.c b/samegame.c
index 4092282..8b31062 100644
--- a/samegame.c
+++ b/samegame.c
@@ -281,7 +281,7 @@ static game_params *custom_params(const config_item *cfg)
return ret;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
if (params->w < 1 || params->h < 1)
return "Width and height must both be positive";
@@ -942,7 +942,7 @@ static char *new_game_desc(const game_params *params, random_state *rs,
return ret;
}
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
int area = params->w * params->h, i;
const char *p = desc;
@@ -1012,7 +1012,7 @@ static void free_game(game_state *state)
}
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *aux, char **error)
+ const char *aux, const char **error)
{
return NULL;
}
diff --git a/signpost.c b/signpost.c
index 61bd3c0..9c1c9ba 100644
--- a/signpost.c
+++ b/signpost.c
@@ -415,7 +415,7 @@ static game_params *custom_params(const config_item *cfg)
return ret;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
if (params->w < 1) return "Width must be at least one";
if (params->h < 1) return "Height must be at least one";
@@ -843,7 +843,7 @@ generate:
return ret;
}
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
char *ret = NULL;
@@ -1337,7 +1337,7 @@ static int solve_state(game_state *state)
}
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *aux, char **error)
+ const char *aux, const char **error)
{
game_state *tosolve;
char *ret = NULL;
@@ -1559,7 +1559,7 @@ static game_state *execute_move(const game_state *state, const char *move)
if (move[0] == 'S') {
game_params p;
game_state *tmp;
- char *valid;
+ const char *valid;
int i;
p.w = state->w; p.h = state->h;
@@ -2328,7 +2328,8 @@ static void start_soak(game_params *p, char *seedstr)
static void process_desc(char *id)
{
- char *desc, *err, *solvestr;
+ char *desc, *solvestr;
+ const char *err;
game_params *p;
game_state *s;
@@ -2372,7 +2373,8 @@ static void process_desc(char *id)
int main(int argc, const char *argv[])
{
- char *id = NULL, *desc, *err, *aux = NULL;
+ char *id = NULL, *desc, *aux = NULL;
+ const char *err;
int soak = 0, verbose = 0, stdin_desc = 0, n = 1, i;
char *seedstr = NULL, newseed[16];
diff --git a/singles.c b/singles.c
index 32d5965..c88c6c5 100644
--- a/singles.c
+++ b/singles.c
@@ -251,7 +251,7 @@ static game_params *custom_params(const config_item *cfg)
return ret;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
if (params->w < 2 || params->h < 2)
return "Width and neight must be at least two";
@@ -1181,7 +1181,7 @@ static int solve_specific(game_state *state, int diff, int sneaky)
}
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *aux, char **error)
+ const char *aux, const char **error)
{
game_state *solved = dup_game(currstate);
char *move = NULL;
@@ -1410,7 +1410,7 @@ randomise:
return ret;
}
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
char *ret = NULL;
@@ -1906,7 +1906,8 @@ static void start_soak(game_params *p, random_state *rs)
int main(int argc, char **argv)
{
- char *id = NULL, *desc, *desc_gen = NULL, *tgame, *err, *aux;
+ char *id = NULL, *desc, *desc_gen = NULL, *tgame, *aux;
+ const char *err;
game_state *s = NULL;
game_params *p = NULL;
int soln, soak = 0, ret = 1;
diff --git a/sixteen.c b/sixteen.c
index 0381edf..74f221a 100644
--- a/sixteen.c
+++ b/sixteen.c
@@ -169,7 +169,7 @@ static game_params *custom_params(const config_item *cfg)
return ret;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
if (params->w < 2 || params->h < 2)
return "Width and height must both be at least two";
@@ -396,7 +396,7 @@ static char *new_game_desc(const game_params *params, random_state *rs,
}
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
const char *p;
char *err;
@@ -504,7 +504,7 @@ static void free_game(game_state *state)
}
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *aux, char **error)
+ const char *aux, const char **error)
{
return dupstr("S");
}
diff --git a/slant.c b/slant.c
index 02f19fc..7fe5a6a 100644
--- a/slant.c
+++ b/slant.c
@@ -213,7 +213,7 @@ static game_params *custom_params(const config_item *cfg)
return ret;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
/*
* (At least at the time of writing this comment) The grid
@@ -1212,7 +1212,7 @@ static char *new_game_desc(const game_params *params, random_state *rs,
return desc;
}
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
int w = params->w, h = params->h, W = w+1, H = h+1;
int area = W*H;
@@ -1456,7 +1456,7 @@ static int check_completion(game_state *state)
}
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *aux, char **error)
+ const char *aux, const char **error)
{
int w = state->p.w, h = state->p.h;
signed char *soln;
@@ -2189,7 +2189,8 @@ int main(int argc, char **argv)
{
game_params *p;
game_state *s;
- char *id = NULL, *desc, *err;
+ char *id = NULL, *desc;
+ const char *err;
int grade = FALSE;
int ret, diff, really_verbose = FALSE;
struct solver_scratch *sc;
diff --git a/solo.c b/solo.c
index 83bc12c..3d1f86d 100644
--- a/solo.c
+++ b/solo.c
@@ -501,7 +501,7 @@ static game_params *custom_params(const config_item *cfg)
return ret;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
if (params->c < 2)
return "Both dimensions must be at least 2";
@@ -3854,7 +3854,8 @@ static const char *spec_to_grid(const char *desc, digit *grid, int area)
* end of the block spec, and return an error string or NULL if everything
* is OK. The DSF is stored in *PDSF.
*/
-static char *spec_to_dsf(const char **pdesc, int **pdsf, int cr, int area)
+static const char *spec_to_dsf(const char **pdesc, int **pdsf,
+ int cr, int area)
{
const char *desc = *pdesc;
int pos = 0;
@@ -3922,7 +3923,7 @@ static char *spec_to_dsf(const char **pdesc, int **pdsf, int cr, int area)
return NULL;
}
-static char *validate_grid_desc(const char **pdesc, int range, int area)
+static const char *validate_grid_desc(const char **pdesc, int range, int area)
{
const char *desc = *pdesc;
int squares = 0;
@@ -3952,11 +3953,11 @@ static char *validate_grid_desc(const char **pdesc, int range, int area)
return NULL;
}
-static char *validate_block_desc(const char **pdesc, int cr, int area,
- int min_nr_blocks, int max_nr_blocks,
- int min_nr_squares, int max_nr_squares)
+static const char *validate_block_desc(const char **pdesc, int cr, int area,
+ int min_nr_blocks, int max_nr_blocks,
+ int min_nr_squares, int max_nr_squares)
{
- char *err;
+ const char *err;
int *dsf;
err = spec_to_dsf(pdesc, &dsf, cr, area);
@@ -4029,10 +4030,10 @@ static char *validate_block_desc(const char **pdesc, int cr, int area,
return NULL;
}
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
int cr = params->c * params->r, area = cr*cr;
- char *err;
+ const char *err;
err = validate_grid_desc(&desc, cr, area);
if (err)
@@ -4109,7 +4110,7 @@ static game_state *new_game(midend *me, const game_params *params,
state->immutable[i] = TRUE;
if (r == 1) {
- char *err;
+ const char *err;
int *dsf;
assert(*desc == ',');
desc++;
@@ -4127,7 +4128,7 @@ static game_state *new_game(midend *me, const game_params *params,
make_blocks_from_whichblock(state->blocks);
if (params->killer) {
- char *err;
+ const char *err;
int *dsf;
assert(*desc == ',');
desc++;
@@ -4227,7 +4228,7 @@ static void free_game(game_state *state)
}
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *ai, char **error)
+ const char *ai, const char **error)
{
int cr = state->cr;
char *ret;
@@ -5577,7 +5578,8 @@ int main(int argc, char **argv)
{
game_params *p;
game_state *s;
- char *id = NULL, *desc, *err;
+ char *id = NULL, *desc;
+ const char *err;
int grade = FALSE;
struct difficulty dlev;
diff --git a/tents.c b/tents.c
index 1d987fa..0057aed 100644
--- a/tents.c
+++ b/tents.c
@@ -400,7 +400,7 @@ static game_params *custom_params(const config_item *cfg)
return ret;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
/*
* Generating anything under 4x4 runs into trouble of one kind
@@ -1186,7 +1186,7 @@ static char *new_game_desc(const game_params *params_in, random_state *rs,
return ret;
}
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
int w = params->w, h = params->h;
int area, i;
@@ -1312,7 +1312,7 @@ static void free_game(game_state *state)
}
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *aux, char **error)
+ const char *aux, const char **error)
{
int w = state->p.w, h = state->p.h;
@@ -2650,7 +2650,8 @@ int main(int argc, char **argv)
{
game_params *p;
game_state *s, *s2;
- char *id = NULL, *desc, *err;
+ char *id = NULL, *desc;
+ const char *err;
int grade = FALSE;
int ret, diff, really_verbose = FALSE;
struct solver_scratch *sc;
diff --git a/towers.c b/towers.c
index 3892d8e..9ccc6ae 100644
--- a/towers.c
+++ b/towers.c
@@ -235,7 +235,7 @@ static game_params *custom_params(const config_item *cfg)
return ret;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
if (params->w < 3 || params->w > 9)
return "Grid size must be between 3 and 9";
@@ -799,7 +799,7 @@ done
* Gameplay.
*/
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
int w = params->w, a = w*w;
const char *p = desc;
@@ -967,7 +967,7 @@ static void free_game(game_state *state)
}
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *aux, char **error)
+ const char *aux, const char **error)
{
int w = state->par.w, a = w*w;
int i, ret;
@@ -2018,7 +2018,8 @@ int main(int argc, char **argv)
{
game_params *p;
game_state *s;
- char *id = NULL, *desc, *err;
+ char *id = NULL, *desc;
+ const char *err;
int grade = FALSE;
int ret, diff, really_show_working = FALSE;
diff --git a/tracks.c b/tracks.c
index 78355cb..b05fbd2 100644
--- a/tracks.c
+++ b/tracks.c
@@ -182,7 +182,7 @@ static game_params *custom_params(const config_item *cfg)
return ret;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
/*
* Generating anything under 4x4 runs into trouble of one kind
@@ -782,7 +782,7 @@ newpath:
return desc;
}
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
int i = 0, w = params->w, h = params->h, in = 0, out = 0;
@@ -1364,7 +1364,7 @@ static char *move_string_diff(const game_state *before, const game_state *after,
}
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *aux, char **error)
+ const char *aux, const char **error)
{
game_state *solved;
int ret;
diff --git a/twiddle.c b/twiddle.c
index 70f768d..fb8f700 100644
--- a/twiddle.c
+++ b/twiddle.c
@@ -201,7 +201,7 @@ static game_params *custom_params(const config_item *cfg)
return ret;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
if (params->n < 2)
return "Rotating block size must be at least two";
@@ -422,7 +422,7 @@ static char *new_game_desc(const game_params *params, random_state *rs,
return ret;
}
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
const char *p;
int w = params->w, h = params->h, wh = w*h;
@@ -533,7 +533,7 @@ static int compare_int(const void *av, const void *bv)
}
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *aux, char **error)
+ const char *aux, const char **error)
{
return dupstr("S");
}
diff --git a/undead.c b/undead.c
index a9343e8..df0735e 100644
--- a/undead.c
+++ b/undead.c
@@ -191,7 +191,7 @@ static game_params *custom_params(const config_item *cfg)
return ret;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
if ((params->w * params->h ) > 54) return "Grid is too big";
if (params->w < 3) return "Width must be at least 3";
@@ -1436,7 +1436,7 @@ static game_state *new_game(midend *me, const game_params *params,
return state;
}
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
int i;
int w = params->w, h = params->h;
@@ -1489,7 +1489,7 @@ static char *validate_desc(const game_params *params, const char *desc)
}
static char *solve_game(const game_state *state_start, const game_state *currstate,
- const char *aux, char **error)
+ const char *aux, const char **error)
{
int p;
int *old_guess;
diff --git a/unequal.c b/unequal.c
index d4441e5..cdea0a0 100644
--- a/unequal.c
+++ b/unequal.c
@@ -248,7 +248,7 @@ static game_params *custom_params(const config_item *cfg)
return ret;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
if (params->order < 3 || params->order > 32)
return "Order must be between 3 and 32";
@@ -1291,7 +1291,7 @@ static game_state *new_game(midend *me, const game_params *params,
return state;
}
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
char *why = NULL;
game_state *dummy = load_game(params, desc, &why);
@@ -1304,7 +1304,7 @@ static char *validate_desc(const game_params *params, const char *desc)
}
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *aux, char **error)
+ const char *aux, const char **error)
{
game_state *solved;
int r;
@@ -2123,7 +2123,7 @@ static int solve(game_params *p, char *desc, int debug)
static void check(game_params *p)
{
- char *msg = validate_params(p, 1);
+ const char *msg = validate_params(p, 1);
if (msg) {
fprintf(stderr, "%s: %s", quis, msg);
exit(1);
@@ -2231,7 +2231,8 @@ int main(int argc, const char *argv[])
int i;
for (i = 0; i < argc; i++) {
const char *id = *argv++;
- char *desc = strchr(id, ':'), *err;
+ char *desc = strchr(id, ':');
+ const char *err;
p = default_params();
if (desc) {
*desc++ = '\0';
diff --git a/unfinished/group.c b/unfinished/group.c
index a9ae704..b812b04 100644
--- a/unfinished/group.c
+++ b/unfinished/group.c
@@ -240,7 +240,7 @@ static game_params *custom_params(const config_item *cfg)
return ret;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
if (params->w < 3 || params->w > 26)
return "Grid size must be between 3 and 26";
@@ -777,7 +777,7 @@ done
* Gameplay.
*/
-static char *validate_grid_desc(const char **pdesc, int range, int area)
+static const char *validate_grid_desc(const char **pdesc, int range, int area)
{
const char *desc = *pdesc;
int squares = 0;
@@ -807,7 +807,7 @@ static char *validate_grid_desc(const char **pdesc, int range, int area)
return NULL;
}
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
int w = params->w, a = w*w;
const char *p = desc;
@@ -907,7 +907,7 @@ static void free_game(game_state *state)
}
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *aux, char **error)
+ const char *aux, const char **error)
{
int w = state->par.w, a = w*w;
int i, ret;
@@ -2106,7 +2106,8 @@ int main(int argc, char **argv)
{
game_params *p;
game_state *s;
- char *id = NULL, *desc, *err;
+ char *id = NULL, *desc;
+ const char *err;
digit *grid;
int grade = FALSE;
int ret, diff, really_show_working = FALSE;
diff --git a/unfinished/separate.c b/unfinished/separate.c
index a7b4fc9..7fd8da8 100644
--- a/unfinished/separate.c
+++ b/unfinished/separate.c
@@ -170,7 +170,7 @@ static game_params *custom_params(const config_item *cfg)
return NULL;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
return NULL;
}
@@ -646,7 +646,7 @@ static char *new_game_desc(const game_params *params, random_state *rs,
return desc;
}
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
return NULL;
}
@@ -676,7 +676,7 @@ static void free_game(game_state *state)
}
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *aux, char **error)
+ const char *aux, const char **error)
{
return NULL;
}
diff --git a/unfinished/slide.c b/unfinished/slide.c
index 05a3f8b..9770013 100644
--- a/unfinished/slide.c
+++ b/unfinished/slide.c
@@ -273,7 +273,7 @@ static game_params *custom_params(const config_item *cfg)
return ret;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
if (params->w > MAXWID)
return "Width must be at most " STR(MAXWID);
@@ -886,7 +886,7 @@ static char *new_game_desc(const game_params *params, random_state *rs,
return ret;
}
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
int w = params->w, h = params->h, wh = w*h;
int *active, *link;
@@ -1121,7 +1121,7 @@ static void free_game(game_state *state)
}
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *aux, char **error)
+ const char *aux, const char **error)
{
int *moves;
int nmoves;
diff --git a/unfinished/sokoban.c b/unfinished/sokoban.c
index edd0f28..1264690 100644
--- a/unfinished/sokoban.c
+++ b/unfinished/sokoban.c
@@ -233,7 +233,7 @@ static game_params *custom_params(const config_item *cfg)
return ret;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
if (params->w < 4 || params->h < 4)
return "Width and height must both be at least 4";
@@ -802,7 +802,7 @@ static char *new_game_desc(const game_params *params, random_state *rs,
return desc;
}
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
int w = params->w, h = params->h;
int area = 0;
@@ -899,7 +899,7 @@ static void free_game(game_state *state)
}
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *aux, char **error)
+ const char *aux, const char **error)
{
return NULL;
}
diff --git a/unruly.c b/unruly.c
index ac5c565..9d2d592 100644
--- a/unruly.c
+++ b/unruly.c
@@ -273,7 +273,7 @@ static game_params *custom_params(const config_item *cfg)
return ret;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
if ((params->w2 & 1) || (params->h2 & 1))
return "Width and height must both be even";
@@ -315,7 +315,7 @@ static char *validate_params(const game_params *params, int full)
return NULL;
}
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
int w2 = params->w2, h2 = params->h2;
int s = w2 * h2;
@@ -1174,7 +1174,7 @@ static int unruly_solve_game(game_state *state,
}
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *aux, char **error)
+ const char *aux, const char **error)
{
game_state *solved = dup_game(state);
struct unruly_scratch *scratch = unruly_new_scratch(solved);
@@ -1972,7 +1972,8 @@ int main(int argc, char *argv[])
game_params *params = NULL;
- char *id = NULL, *desc = NULL, *err;
+ char *id = NULL, *desc = NULL;
+ const char *err;
quis = argv[0];
diff --git a/untangle.c b/untangle.c
index 4dfe208..10114b5 100644
--- a/untangle.c
+++ b/untangle.c
@@ -202,7 +202,7 @@ static game_params *custom_params(const config_item *cfg)
return ret;
}
-static char *validate_params(const game_params *params, int full)
+static const char *validate_params(const game_params *params, int full)
{
if (params->n < 4)
return "Number of points must be at least four";
@@ -731,7 +731,7 @@ static char *new_game_desc(const game_params *params, random_state *rs,
return ret;
}
-static char *validate_desc(const game_params *params, const char *desc)
+static const char *validate_desc(const game_params *params, const char *desc)
{
int a, b;
@@ -878,7 +878,7 @@ static void free_game(game_state *state)
}
static char *solve_game(const game_state *state, const game_state *currstate,
- const char *aux, char **error)
+ const char *aux, const char **error)
{
int n = state->params.n;
int matrix[4];
diff --git a/windows.c b/windows.c
index 5b70285..84cf5ec 100644
--- a/windows.c
+++ b/windows.c
@@ -1002,7 +1002,7 @@ void print(frontend *fe)
document *doc;
midend *nme = NULL; /* non-interactive midend for bulk puzzle generation */
int i;
- char *err = NULL;
+ const char *err = NULL;
/*
* Create our document structure and fill it up with puzzles.
@@ -1586,7 +1586,7 @@ static midend *midend_for_new_game(frontend *fe, const game *cgame,
midend_new_game(me);
} else {
FILE *fp;
- char *err_param, *err_load;
+ const char *err_param, *err_load;
/*
* See if arg is a valid filename of a save game file.
@@ -2103,7 +2103,8 @@ static config_item *frontend_get_config(frontend *fe, int which,
}
}
-static char *frontend_set_config(frontend *fe, int which, config_item *cfg)
+static const char *frontend_set_config(
+ frontend *fe, int which, config_item *cfg)
{
if (which < CFG_FRONTEND_SPECIFIC) {
return midend_set_config(fe->me, which, cfg);
@@ -2276,7 +2277,8 @@ static int CALLBACK ConfigDlgProc(HWND hwnd, UINT msg,
*/
if ((LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)) {
if (LOWORD(wParam) == IDOK) {
- char *err = frontend_set_config(fe, fe->cfg_which, fe->cfg);
+ const char *err = frontend_set_config(
+ fe, fe->cfg_which, fe->cfg);
if (err) {
MessageBox(hwnd, err, "Validation error",
@@ -3015,7 +3017,7 @@ static LRESULT CALLBACK WndProc(HWND hwnd, UINT message,
break;
case IDM_SOLVE:
{
- char *msg = midend_solve(fe->me);
+ const char *msg = midend_solve(fe->me);
if (msg)
MessageBox(hwnd, msg, "Unable to solve",
MB_ICONERROR | MB_OK);
@@ -3107,7 +3109,8 @@ static LRESULT CALLBACK WndProc(HWND hwnd, UINT message,
fclose(fp);
} else {
FILE *fp = fopen(filename, "r");
- char *err = NULL;
+ const char *err = NULL;
+ char *err_w = NULL;
midend *me = fe->me;
#ifdef COMBINED
char *id_name;
@@ -3135,7 +3138,8 @@ static LRESULT CALLBACK WndProc(HWND hwnd, UINT message,
"supported by this program";
} else {
me = midend_for_new_game(fe, gamelist[i], NULL,
- FALSE, FALSE, &err);
+ FALSE, FALSE, &err_w);
+ err = err_w;
rewind(fp); /* for the actual load */
}
sfree(id_name);
@@ -3148,6 +3152,7 @@ static LRESULT CALLBACK WndProc(HWND hwnd, UINT message,
if (err) {
MessageBox(hwnd, err, "Error", MB_ICONERROR|MB_OK);
+ sfree(err_w);
break;
}