shithub: puzzles

Download patch

ref: 0186d78da9e83103eb80b3814d4de8031f29232f
parent: a7e738aceb36e4a70d41cf09a74b2d7a3af6cbe0
author: Ben Harris <bjh21@bjh21.me.uk>
date: Thu Feb 16 16:21:15 EST 2023

Mark many more function (and some objects) static

I noticed commit db3b531e2cab765a00475054d2e9046c9d0437d3 in the history
where Simon added a bunch of "static" qualifiers.  That suggested that
consistently marking internal functions "static" is desirable, so I
tried a build using GCC's -Wmissing-declarations, which requires prior
declaration (presumed to be in a header file) of all global functions.

This commit makes the GTK build clean under GCC's
-Wmissing-declarations.  I've also adding "static" to a few obviously
internal objects, but GCC doesn't complain about those so I certainly
haven't got them all.

--- a/dominosa.c
+++ b/dominosa.c
@@ -930,7 +930,7 @@
     int i;
 };
 
-int parity_neighbour(int vertex, void *vctx)
+static int parity_neighbour(int vertex, void *vctx)
 {
     struct parity_findloop_ctx *ctx = (struct parity_findloop_ctx *)vctx;
     struct solver_placement *p;
--- a/gtk.c
+++ b/gtk.c
@@ -319,7 +319,7 @@
     output[0] = output[1] = output[2] = 0.9F;
 }
 
-void gtk_status_bar(void *handle, const char *text)
+static void gtk_status_bar(void *handle, const char *text)
 {
     frontend *fe = (frontend *)handle;
 
@@ -1154,7 +1154,7 @@
  * The exported drawing functions.
  */
 
-void gtk_start_draw(void *handle)
+static void gtk_start_draw(void *handle)
 {
     frontend *fe = (frontend *)handle;
     fe->bbox_l = fe->w;
@@ -1164,20 +1164,21 @@
     setup_drawing(fe);
 }
 
-void gtk_clip(void *handle, int x, int y, int w, int h)
+static void gtk_clip(void *handle, int x, int y, int w, int h)
 {
     frontend *fe = (frontend *)handle;
     do_clip(fe, x, y, w, h);
 }
 
-void gtk_unclip(void *handle)
+static void gtk_unclip(void *handle)
 {
     frontend *fe = (frontend *)handle;
     do_unclip(fe);
 }
 
-void gtk_draw_text(void *handle, int x, int y, int fonttype, int fontsize,
-		   int align, int colour, const char *text)
+static void gtk_draw_text(void *handle, int x, int y, int fonttype,
+                          int fontsize, int align, int colour,
+                          const char *text)
 {
     frontend *fe = (frontend *)handle;
     int i;
@@ -1209,7 +1210,7 @@
     align_and_draw_text(fe, i, align, x, y, text);
 }
 
-void gtk_draw_rect(void *handle, int x, int y, int w, int h, int colour)
+static void gtk_draw_rect(void *handle, int x, int y, int w, int h, int colour)
 {
     frontend *fe = (frontend *)handle;
     fe->dr_api->set_colour(fe, colour);
@@ -1216,7 +1217,8 @@
     do_draw_rect(fe, x, y, w, h);
 }
 
-void gtk_draw_line(void *handle, int x1, int y1, int x2, int y2, int colour)
+static void gtk_draw_line(void *handle, int x1, int y1, int x2, int y2,
+                          int colour)
 {
     frontend *fe = (frontend *)handle;
     fe->dr_api->set_colour(fe, colour);
@@ -1223,8 +1225,9 @@
     do_draw_line(fe, x1, y1, x2, y2);
 }
 
-void gtk_draw_thick_line(void *handle, float thickness,
-			 float x1, float y1, float x2, float y2, int colour)
+static void gtk_draw_thick_line(void *handle, float thickness,
+                                float x1, float y1, float x2, float y2,
+                                int colour)
 {
     frontend *fe = (frontend *)handle;
     fe->dr_api->set_colour(fe, colour);
@@ -1231,21 +1234,21 @@
     do_draw_thick_line(fe, thickness, x1, y1, x2, y2);
 }
 
-void gtk_draw_poly(void *handle, const int *coords, int npoints,
-		   int fillcolour, int outlinecolour)
+static void gtk_draw_poly(void *handle, const int *coords, int npoints,
+                          int fillcolour, int outlinecolour)
 {
     frontend *fe = (frontend *)handle;
     do_draw_poly(fe, coords, npoints, fillcolour, outlinecolour);
 }
 
-void gtk_draw_circle(void *handle, int cx, int cy, int radius,
-		     int fillcolour, int outlinecolour)
+static void gtk_draw_circle(void *handle, int cx, int cy, int radius,
+                            int fillcolour, int outlinecolour)
 {
     frontend *fe = (frontend *)handle;
     do_draw_circle(fe, cx, cy, radius, fillcolour, outlinecolour);
 }
 
-blitter *gtk_blitter_new(void *handle, int w, int h)
+static blitter *gtk_blitter_new(void *handle, int w, int h)
 {
     blitter *bl = snew(blitter);
     setup_blitter(bl, w, h);
@@ -1254,13 +1257,13 @@
     return bl;
 }
 
-void gtk_blitter_free(void *handle, blitter *bl)
+static void gtk_blitter_free(void *handle, blitter *bl)
 {
     teardown_blitter(bl);
     sfree(bl);
 }
 
-void gtk_blitter_save(void *handle, blitter *bl, int x, int y)
+static void gtk_blitter_save(void *handle, blitter *bl, int x, int y)
 {
     frontend *fe = (frontend *)handle;
     do_blitter_save(fe, bl, x, y);
@@ -1268,7 +1271,7 @@
     bl->y = y;
 }
 
-void gtk_blitter_load(void *handle, blitter *bl, int x, int y)
+static void gtk_blitter_load(void *handle, blitter *bl, int x, int y)
 {
     frontend *fe = (frontend *)handle;
     if (x == BLITTER_FROMSAVED && y == BLITTER_FROMSAVED) {
@@ -1278,7 +1281,7 @@
     do_blitter_load(fe, bl, x, y);
 }
 
-void gtk_draw_update(void *handle, int x, int y, int w, int h)
+static void gtk_draw_update(void *handle, int x, int y, int w, int h)
 {
     frontend *fe = (frontend *)handle;
     if (fe->bbox_l > x  ) fe->bbox_l = x  ;
@@ -1287,7 +1290,7 @@
     if (fe->bbox_d < y+h) fe->bbox_d = y+h;
 }
 
-void gtk_end_draw(void *handle)
+static void gtk_end_draw(void *handle)
 {
     frontend *fe = (frontend *)handle;
 
@@ -1311,7 +1314,8 @@
 }
 
 #ifdef USE_PANGO
-char *gtk_text_fallback(void *handle, const char *const *strings, int nstrings)
+static char *gtk_text_fallback(void *handle, const char *const *strings,
+                               int nstrings)
 {
     /*
      * We assume Pango can cope with any UTF-8 likely to be emitted
@@ -1322,18 +1326,18 @@
 #endif
 
 #ifdef USE_PRINTING
-void gtk_begin_doc(void *handle, int pages)
+static void gtk_begin_doc(void *handle, int pages)
 {
     frontend *fe = (frontend *)handle;
     gtk_print_operation_set_n_pages(fe->printop, pages);
 }
 
-void gtk_begin_page(void *handle, int number)
+static void gtk_begin_page(void *handle, int number)
 {
 }
 
-void gtk_begin_puzzle(void *handle, float xm, float xc,
-                      float ym, float yc, int pw, int ph, float wmm)
+static void gtk_begin_puzzle(void *handle, float xm, float xc,
+                             float ym, float yc, int pw, int ph, float wmm)
 {
     frontend *fe = (frontend *)handle;
     double ppw, pph, pox, poy, dpmmx, dpmmy;
@@ -1371,27 +1375,27 @@
     fe->hatchspace = 1.0 * pw / wmm;
 }
 
-void gtk_end_puzzle(void *handle)
+static void gtk_end_puzzle(void *handle)
 {
     frontend *fe = (frontend *)handle;
     cairo_restore(fe->cr);
 }
 
-void gtk_end_page(void *handle, int number)
+static void gtk_end_page(void *handle, int number)
 {
 }
 
-void gtk_end_doc(void *handle)
+static void gtk_end_doc(void *handle)
 {
 }
 
-void gtk_line_width(void *handle, float width)
+static void gtk_line_width(void *handle, float width)
 {
     frontend *fe = (frontend *)handle;
     cairo_set_line_width(fe->cr, width);
 }
 
-void gtk_line_dotted(void *handle, bool dotted)
+static void gtk_line_dotted(void *handle, bool dotted)
 {
     frontend *fe = (frontend *)handle;
 
@@ -1404,7 +1408,7 @@
 }
 #endif /* USE_PRINTING */
 
-const struct internal_drawing_api internal_drawing = {
+static const struct internal_drawing_api internal_drawing = {
     draw_set_colour,
 #ifdef USE_CAIRO
     do_draw_fill,
@@ -1413,7 +1417,7 @@
 };
 
 #ifdef USE_CAIRO
-const struct internal_drawing_api internal_printing = {
+static const struct internal_drawing_api internal_printing = {
     print_set_colour,
     do_print_fill,
     do_print_fill_preserve,
@@ -1420,7 +1424,7 @@
 };
 #endif
 
-const struct drawing_api gtk_drawing = {
+static const struct drawing_api gtk_drawing = {
     gtk_draw_text,
     gtk_draw_rect,
     gtk_draw_line,
@@ -1798,8 +1802,8 @@
 }
 
 #if GTK_CHECK_VERSION(3,0,0)
-bool message_box(GtkWidget *parent, const char *title, const char *msg,
-                 bool centre, int type)
+static bool message_box(GtkWidget *parent, const char *title, const char *msg,
+                        bool centre, int type)
 {
     GtkWidget *window;
     gint ret;
@@ -1893,7 +1897,7 @@
 }
 #endif /* GTK_CHECK_VERSION(3,0,0) */
 
-void error_box(GtkWidget *parent, const char *msg)
+static void error_box(GtkWidget *parent, const char *msg)
 {
     message_box(parent, "Error", msg, false, MB_OK);
 }
@@ -2414,7 +2418,7 @@
     }
 }
 
-void write_clip(frontend *fe, char *data)
+static void write_clip(frontend *fe, char *data)
 {
     if (fe->paste_data)
 	sfree(fe->paste_data);
@@ -2426,8 +2430,8 @@
     set_selection(fe, GDK_SELECTION_CLIPBOARD);
 }
 
-void selection_get(GtkWidget *widget, GtkSelectionData *seldata,
-		   guint info, guint time_stamp, gpointer data)
+static void selection_get(GtkWidget *widget, GtkSelectionData *seldata,
+                          guint info, guint time_stamp, gpointer data)
 {
     frontend *fe = (frontend *)data;
     gtk_selection_data_set(seldata, gtk_selection_data_get_target(seldata), 8,
@@ -2434,8 +2438,8 @@
 			   fe->paste_data, fe->paste_data_len);
 }
 
-gint selection_clear(GtkWidget *widget, GdkEventSelection *seldata,
-		     gpointer data)
+static gint selection_clear(GtkWidget *widget, GdkEventSelection *seldata,
+                            gpointer data)
 {
     frontend *fe = (frontend *)data;
 
@@ -2533,7 +2537,7 @@
 #endif
 
 #ifdef USE_PRINTING
-GObject *create_print_widget(GtkPrintOperation *print, gpointer data)
+static GObject *create_print_widget(GtkPrintOperation *print, gpointer data)
 {
     GtkLabel *count_label, *width_label, *height_label,
         *scale_llabel, *scale_rlabel;
@@ -2674,8 +2678,8 @@
     return G_OBJECT(grid);
 }
 
-void apply_print_widget(GtkPrintOperation *print,
-                        GtkWidget *widget, gpointer data)
+static void apply_print_widget(GtkPrintOperation *print,
+                               GtkWidget *widget, gpointer data)
 {
     frontend *fe = (frontend *)data;
 
@@ -2698,8 +2702,8 @@
     }
 }
 
-void print_begin(GtkPrintOperation *printop,
-                 GtkPrintContext *context, gpointer data)
+static void print_begin(GtkPrintOperation *printop,
+                        GtkPrintContext *context, gpointer data)
 {
     frontend *fe = (frontend *)data;
     midend *nme = NULL;  /* non-interactive midend for bulk puzzle generation */
@@ -2750,16 +2754,16 @@
     document_begin(fe->doc, fe->print_dr);
 }
 
-void draw_page(GtkPrintOperation *printop,
-               GtkPrintContext *context,
-               gint page_nr, gpointer data)
+static void draw_page(GtkPrintOperation *printop,
+                      GtkPrintContext *context,
+                      gint page_nr, gpointer data)
 {
     frontend *fe = (frontend *)data;
     document_print_page(fe->doc, fe->print_dr, page_nr);
 }
 
-void print_end(GtkPrintOperation *printop,
-               GtkPrintContext *context, gpointer data)
+static void print_end(GtkPrintOperation *printop,
+                      GtkPrintContext *context, gpointer data)
 {
     frontend *fe = (frontend *)data;
 
--- a/latin.c
+++ b/latin.c
@@ -1352,7 +1352,7 @@
     sfree(sq);
 }
 
-void test_soak(int order, random_state *rs)
+static void test_soak(int order, random_state *rs)
 {
     digit *sq;
     int n = 0;
@@ -1375,7 +1375,7 @@
     }
 }
 
-void usage_exit(const char *msg)
+static void usage_exit(const char *msg)
 {
     if (msg)
         fprintf(stderr, "%s: %s\n", quis, msg);
--- a/magnets.c
+++ b/magnets.c
@@ -2492,11 +2492,11 @@
 const char *quis = NULL;
 bool csv = false;
 
-void usage(FILE *out) {
+static void usage(FILE *out) {
     fprintf(out, "usage: %s [-v] [--print] <params>|<game id>\n", quis);
 }
 
-void doprint(game_state *state)
+static void doprint(game_state *state)
 {
     char *fmt = game_text_format(state);
     printf("%s", fmt);
--- a/matching.c
+++ b/matching.c
@@ -368,13 +368,13 @@
 
 #include "tree234.h"
 
-int nl, nr, count;
-int **adjlists, *adjsizes;
-int *adjdata, *outl, *outr, *witness;
-void *scratch;
-random_state *rs;
+static int nl, nr, count;
+static int **adjlists, *adjsizes;
+static int *adjdata, *outl, *outr, *witness;
+static void *scratch;
+static random_state *rs;
 
-void allocate(int nl_, int nr_, int maxedges)
+static void allocate(int nl_, int nr_, int maxedges)
 {
     nl = nl_;
     nr = nr_;
@@ -387,7 +387,7 @@
     scratch = smalloc(matching_scratch_size(nl, nr));
 }
 
-void deallocate(void)
+static void deallocate(void)
 {
     sfree(adjlists);
     sfree(adjsizes);
@@ -398,7 +398,7 @@
     sfree(scratch);
 }
 
-void find_and_check_matching(void)
+static void find_and_check_matching(void)
 {
     int i, j, k;
 
@@ -454,7 +454,7 @@
     int index;
 };
 
-int compare_nodes(void *av, void *bv)
+static int compare_nodes(void *av, void *bv)
 {
     const struct nodename *a = (const struct nodename *)av;
     const struct nodename *b = (const struct nodename *)bv;
@@ -461,7 +461,7 @@
     return strcmp(a->name, b->name);
 }
 
-int node_index(tree234 *n2i, tree234 *i2n, const char *name)
+static int node_index(tree234 *n2i, tree234 *i2n, const char *name)
 {
     struct nodename *nn, *nn_prev;
     char *namedup = dupstr(name);
@@ -485,7 +485,7 @@
     int L, R;
 };
 
-int compare_edges(void *av, void *bv)
+static int compare_edges(void *av, void *bv)
 {
     const struct edge *a = (const struct edge *)av;
     const struct edge *b = (const struct edge *)bv;
@@ -496,7 +496,7 @@
     return 0;
 }
 
-void matching_from_user_input(FILE *fp, const char *filename)
+static void matching_from_user_input(FILE *fp, const char *filename)
 {
     tree234 *Ln2i, *Li2n, *Rn2i, *Ri2n, *edges;
     char *line = NULL;
@@ -576,7 +576,7 @@
     deallocate();
 }
 
-void test_subsets(void)
+static void test_subsets(void)
 {
     int b = 8;
     int n = 1 << b;
--- a/penrose.c
+++ b/penrose.c
@@ -512,7 +512,7 @@
 int show_recursion = 0;
 int ntiles, nfinal;
 
-int test_cb(penrose_state *state, vector *vs, int n, int depth)
+static int test_cb(penrose_state *state, vector *vs, int n, int depth)
 {
     int i, xoff = 0, yoff = 0;
     double l = penrose_side_length(state->start_size, depth);
@@ -542,7 +542,7 @@
     return 0;
 }
 
-void usage_exit(void)
+static void usage_exit(void)
 {
     fprintf(stderr, "Usage: penrose-test [--recursion] P2|P3 SIZE DEPTH\n");
     exit(1);
--- a/signpost.c
+++ b/signpost.c
@@ -2321,7 +2321,7 @@
 const char *quis = NULL;
 int verbose = 0;
 
-void usage(FILE *out) {
+static void usage(FILE *out) {
     fprintf(out, "usage: %s [--stdin] [--soak] [--seed SEED] <params>|<game id>\n", quis);
 }
 
--- a/sort.c
+++ b/sort.c
@@ -93,7 +93,7 @@
 #include <stdlib.h>
 #include <time.h>
 
-int testcmp(const void *av, const void *bv, void *ctx)
+static int testcmp(const void *av, const void *bv, void *ctx)
 {
     int a = *(const int *)av, b = *(const int *)bv;
     const int *keys = (const int *)ctx;
@@ -100,7 +100,7 @@
     return keys[a] < keys[b] ? -1 : keys[a] > keys[b] ? +1 : 0;
 }
 
-int resetcmp(const void *av, const void *bv)
+static int resetcmp(const void *av, const void *bv)
 {
     int a = *(const int *)av, b = *(const int *)bv;
     return a < b ? -1 : a > b ? +1 : 0;
--- a/tree234.c
+++ b/tree234.c
@@ -1491,7 +1491,7 @@
 /*
  * Error reporting function.
  */
-void error(const char *fmt, ...) {
+static void error(const char *fmt, ...) {
     va_list ap;
     printf("ERROR: ");
     va_start(ap, fmt);
@@ -1517,7 +1517,7 @@
     char **levels;
 } dispctx;
 
-int dispnode(node234 *n, int level, dispctx *ctx) {
+static int dispnode(node234 *n, int level, dispctx *ctx) {
     if (level == 0) {
 	int xpos = strlen(ctx->levels[0]);
 	int len;
@@ -1614,7 +1614,7 @@
     }
 }
 
-void disptree(tree234 *t) {
+static void disptree(tree234 *t) {
     dispctx ctx;
     char *leveldata;
     int width = count234(t);
@@ -1646,8 +1646,8 @@
     int elemcount;
 } chkctx;
 
-int chknode(chkctx *ctx, int level, node234 *node,
-	    void *lowbound, void *highbound) {
+static int chknode(chkctx *ctx, int level, node234 *node,
+                   void *lowbound, void *highbound) {
     int nkids, nelems;
     int i;
     int count;
@@ -1756,7 +1756,7 @@
     return count;
 }
 
-void verifytree(tree234 *tree, void **array, int arraylen) {
+static void verifytree(tree234 *tree, void **array, int arraylen) {
     chkctx ctx;
     int i;
     void *p;
@@ -1795,9 +1795,9 @@
 	      ctx.elemcount, i);
     }
 }
-void verify(void) { verifytree(tree, array, arraylen); }
+static void verify(void) { verifytree(tree, array, arraylen); }
 
-void internal_addtest(void *elem, int index, void *realret) {
+static void internal_addtest(void *elem, int index, void *realret) {
     int i, j;
     void *retval;
 
@@ -1822,7 +1822,7 @@
     verify();
 }
 
-void addtest(void *elem) {
+static void addtest(void *elem) {
     int i;
     void *realret;
 
@@ -1840,7 +1840,7 @@
 	internal_addtest(elem, i, realret);
 }
 
-void addpostest(void *elem, int i) {
+static void addpostest(void *elem, int i) {
     void *realret;
 
     realret = addpos234(tree, elem, i);
@@ -1848,7 +1848,7 @@
     internal_addtest(elem, i, realret);
 }
 
-void delpostest(int i) {
+static void delpostest(int i) {
     int index = i;
     void *elem = array[i], *ret;
 
@@ -1871,7 +1871,7 @@
     verify();
 }
 
-void deltest(void *elem) {
+static void deltest(void *elem) {
     int i;
 
     i = 0;
@@ -1890,19 +1890,19 @@
  * given in ANSI C99 draft N869. It assumes `unsigned' is 32 bits;
  * change it if not.
  */
-int randomnumber(unsigned *seed) {
+static int randomnumber(unsigned *seed) {
     *seed *= 1103515245;
     *seed += 12345;
     return ((*seed) / 65536) % 32768;
 }
 
-int mycmp(void *av, void *bv) {
+static int mycmp(void *av, void *bv) {
     char const *a = (char const *)av;
     char const *b = (char const *)bv;
     return strcmp(a, b);
 }
 
-const char *const strings_init[] = {
+static const char *const strings_init[] = {
     "0", "2", "3", "I", "K", "d", "H", "J", "Q", "N", "n", "q", "j", "i",
     "7", "G", "F", "D", "b", "x", "g", "B", "e", "v", "V", "T", "f", "E",
     "S", "8", "A", "k", "X", "p", "C", "R", "a", "o", "r", "O", "Z", "u",
@@ -1924,9 +1924,9 @@
 };
 
 #define NSTR lenof(strings_init)
-char *strings[NSTR];
+static char *strings[NSTR];
 
-void findtest(void) {
+static void findtest(void) {
     static const int rels[] = {
 	REL234_EQ, REL234_GE, REL234_LE, REL234_LT, REL234_GT
     };
@@ -2015,7 +2015,7 @@
     }
 }
 
-void splittest(tree234 *tree, void **array, int arraylen) {
+static void splittest(tree234 *tree, void **array, int arraylen) {
     int i;
     tree234 *tree3, *tree4;
     for (i = 0; i <= arraylen; i++) {
--- a/unfinished/numgame.c
+++ b/unfinished/numgame.c
@@ -987,11 +987,11 @@
 /*
  * Print a text formula for producing a given output.
  */
-void print_recurse(struct sets *s, struct set *ss, int pathindex, int index,
-		   int priority, int assoc, int child);
-void print_recurse_inner(struct sets *s, struct set *ss,
-			 struct ancestor *a, int pathindex, int index,
-			 int priority, int assoc, int child)
+static void print_recurse(struct sets *s, struct set *ss, int pathindex,
+                          int index, int priority, int assoc, int child);
+static void print_recurse_inner(struct sets *s, struct set *ss,
+                                struct ancestor *a, int pathindex, int index,
+                                int priority, int assoc, int child)
 {
     if (a->prev && index != a->pr) {
 	int pi;
@@ -1066,8 +1066,8 @@
 	    printf("/%d", ss->numbers[2*index+1]);
     }
 }
-void print_recurse(struct sets *s, struct set *ss, int pathindex, int index,
-		   int priority, int assoc, int child)
+static void print_recurse(struct sets *s, struct set *ss, int pathindex,
+                          int index, int priority, int assoc, int child)
 {
     if (!ss->a.prev || pathindex < ss->a.prev->npaths) {
 	print_recurse_inner(s, ss, &ss->a, pathindex,
@@ -1085,7 +1085,7 @@
 	}
     }
 }
-void print(int pathindex, struct sets *s, struct output *o)
+static void print(int pathindex, struct sets *s, struct output *o)
 {
     print_recurse(s, o->set, pathindex, o->index, 0, 0, 0);
 }
--- a/unfinished/separate.c
+++ b/unfinished/separate.c
@@ -215,7 +215,7 @@
     int *tmp;
 };
 
-struct solver_scratch *solver_scratch_new(int w, int h, int k)
+static struct solver_scratch *solver_scratch_new(int w, int h, int k)
 {
     int wh = w*h;
     struct solver_scratch *sc = snew(struct solver_scratch);
@@ -233,7 +233,7 @@
     return sc;
 }
 
-void solver_scratch_free(struct solver_scratch *sc)
+static void solver_scratch_free(struct solver_scratch *sc)
 {
     sfree(sc->dsf);
     sfree(sc->size);
@@ -243,7 +243,7 @@
     sfree(sc);
 }
 
-void solver_connect(struct solver_scratch *sc, int yx1, int yx2)
+static void solver_connect(struct solver_scratch *sc, int yx1, int yx2)
 {
     int w = sc->w, h = sc->h, k = sc->k;
     int wh = w*h;
@@ -297,7 +297,7 @@
 				      sc->disconnect[i*wh+yx2]);
 }
 
-void solver_disconnect(struct solver_scratch *sc, int yx1, int yx2)
+static void solver_disconnect(struct solver_scratch *sc, int yx1, int yx2)
 {
     int w = sc->w, h = sc->h;
     int wh = w*h;
@@ -316,7 +316,7 @@
     sc->disconnect[yx2*wh+yx1] = true;
 }
 
-void solver_init(struct solver_scratch *sc)
+static void solver_init(struct solver_scratch *sc)
 {
     int w = sc->w, h = sc->h;
     int wh = w*h;
@@ -332,8 +332,8 @@
     memset(sc->disconnect, 0, wh*wh * sizeof(bool));
 }
 
-int solver_attempt(struct solver_scratch *sc, const unsigned char *grid,
-		   bool *gen_lock)
+static int solver_attempt(struct solver_scratch *sc, const unsigned char *grid,
+                          bool *gen_lock)
 {
     int w = sc->w, h = sc->h, k = sc->k;
     int wh = w*h;
@@ -492,7 +492,7 @@
     return 0;
 }
 
-unsigned char *generate(int w, int h, int k, random_state *rs)
+static unsigned char *generate(int w, int h, int k, random_state *rs)
 {
     int wh = w*h;
     int n = wh/k;
--- a/unfinished/sokoban.c
+++ b/unfinished/sokoban.c
@@ -957,7 +957,7 @@
  * subfunction. move_type() returns -1 for an illegal move, 0 for a
  * movement, and 1 for a push.
  */
-int move_type(const game_state *state, int dx, int dy)
+static int move_type(const game_state *state, int dx, int dy)
 {
     int w = state->p.w, h = state->p.h;
     int px = state->px, py = state->py;