From ef1306764e6443d67612542654f252b376c5993e Mon Sep 17 00:00:00 2001 From: Franklin Wei Date: Mon, 23 Oct 2017 17:19:29 -0400 Subject: puzzles: resync with upstream There have been some improvements with regard to small screen sizes, which will be nice to have. Change-Id: I30c740514156258d2818fde325c1a751500f7611 --- apps/plugins/puzzles/help/blackbox.c | 2 +- apps/plugins/puzzles/help/bridges.c | 2 +- apps/plugins/puzzles/help/cube.c | 2 +- apps/plugins/puzzles/help/dominosa.c | 2 +- apps/plugins/puzzles/help/fifteen.c | 2 +- apps/plugins/puzzles/help/filling.c | 2 +- apps/plugins/puzzles/help/flip.c | 2 +- apps/plugins/puzzles/help/flood.c | 2 +- apps/plugins/puzzles/help/galaxies.c | 2 +- apps/plugins/puzzles/help/guess.c | 2 +- apps/plugins/puzzles/help/inertia.c | 2 +- apps/plugins/puzzles/help/keen.c | 2 +- apps/plugins/puzzles/help/lightup.c | 2 +- apps/plugins/puzzles/help/loopy.c | 2 +- apps/plugins/puzzles/help/magnets.c | 2 +- apps/plugins/puzzles/help/map.c | 2 +- apps/plugins/puzzles/help/mines.c | 2 +- apps/plugins/puzzles/help/net.c | 2 +- apps/plugins/puzzles/help/netslide.c | 2 +- apps/plugins/puzzles/help/palisade.c | 2 +- apps/plugins/puzzles/help/pattern.c | 2 +- apps/plugins/puzzles/help/pearl.c | 2 +- apps/plugins/puzzles/help/pegs.c | 2 +- apps/plugins/puzzles/help/range.c | 2 +- apps/plugins/puzzles/help/rect.c | 414 +-- apps/plugins/puzzles/help/samegame.c | 2 +- apps/plugins/puzzles/help/signpost.c | 2 +- apps/plugins/puzzles/help/singles.c | 2 +- apps/plugins/puzzles/help/sixteen.c | 2 +- apps/plugins/puzzles/help/slant.c | 2 +- apps/plugins/puzzles/help/solo.c | 2 +- apps/plugins/puzzles/help/tents.c | 2 +- apps/plugins/puzzles/help/towers.c | 2 +- apps/plugins/puzzles/help/tracks.c | 2 +- apps/plugins/puzzles/help/twiddle.c | 2 +- apps/plugins/puzzles/help/undead.c | 2 +- apps/plugins/puzzles/help/unequal.c | 2 +- apps/plugins/puzzles/help/unruly.c | 2 +- apps/plugins/puzzles/help/untangle.c | 2 +- apps/plugins/puzzles/src/Buildscr | 10 +- apps/plugins/puzzles/src/Makefile | 3312 +++++++++++++++++++----- apps/plugins/puzzles/src/Makefile.in | 4 +- apps/plugins/puzzles/src/aclocal.m4 | 60 +- apps/plugins/puzzles/src/blackbox.c | 38 +- apps/plugins/puzzles/src/bridges.c | 72 +- apps/plugins/puzzles/src/combi.c | 2 +- apps/plugins/puzzles/src/config.log | 340 ++- apps/plugins/puzzles/src/cube.c | 26 +- apps/plugins/puzzles/src/devel.but | 126 +- apps/plugins/puzzles/src/dominosa.c | 24 +- apps/plugins/puzzles/src/drawing.c | 4 +- apps/plugins/puzzles/src/emcc.c | 47 +- apps/plugins/puzzles/src/fifteen.c | 23 +- apps/plugins/puzzles/src/filling.c | 38 +- apps/plugins/puzzles/src/flip.c | 28 +- apps/plugins/puzzles/src/flood.c | 36 +- apps/plugins/puzzles/src/galaxies.c | 52 +- apps/plugins/puzzles/src/grid.c | 15 +- apps/plugins/puzzles/src/grid.h | 4 +- apps/plugins/puzzles/src/gtk.c | 142 +- apps/plugins/puzzles/src/guess.c | 63 +- apps/plugins/puzzles/src/inertia.c | 24 +- apps/plugins/puzzles/src/keen.c | 39 +- apps/plugins/puzzles/src/latin.c | 8 +- apps/plugins/puzzles/src/latin.h | 4 +- apps/plugins/puzzles/src/lightup.c | 40 +- apps/plugins/puzzles/src/loopy.c | 40 +- apps/plugins/puzzles/src/magnets.c | 38 +- apps/plugins/puzzles/src/map.c | 67 +- apps/plugins/puzzles/src/maxflow.c | 2 +- apps/plugins/puzzles/src/midend.c | 507 ++-- apps/plugins/puzzles/src/mines.c | 47 +- apps/plugins/puzzles/src/misc.c | 6 +- apps/plugins/puzzles/src/nestedvm.c | 34 +- apps/plugins/puzzles/src/net.c | 37 +- apps/plugins/puzzles/src/netslide.c | 37 +- apps/plugins/puzzles/src/nullfe.c | 11 +- apps/plugins/puzzles/src/nullgame.c | 6 +- apps/plugins/puzzles/src/osx.m | 47 +- apps/plugins/puzzles/src/palisade.c | 32 +- apps/plugins/puzzles/src/pattern.c | 33 +- apps/plugins/puzzles/src/pearl.c | 56 +- apps/plugins/puzzles/src/pegs.c | 44 +- apps/plugins/puzzles/src/ps.c | 7 +- apps/plugins/puzzles/src/puzzles.h | 106 +- apps/plugins/puzzles/src/range.c | 24 +- apps/plugins/puzzles/src/rect.c | 36 +- apps/plugins/puzzles/src/samegame.c | 39 +- apps/plugins/puzzles/src/signpost.c | 66 +- apps/plugins/puzzles/src/singles.c | 35 +- apps/plugins/puzzles/src/sixteen.c | 36 +- apps/plugins/puzzles/src/slant.c | 35 +- apps/plugins/puzzles/src/solo.c | 99 +- apps/plugins/puzzles/src/tents.c | 42 +- apps/plugins/puzzles/src/towers.c | 30 +- apps/plugins/puzzles/src/tracks.c | 71 +- apps/plugins/puzzles/src/twiddle.c | 46 +- apps/plugins/puzzles/src/undead.c | 46 +- apps/plugins/puzzles/src/unequal.c | 55 +- apps/plugins/puzzles/src/unfinished/group.c | 49 +- apps/plugins/puzzles/src/unfinished/path.c | 2 +- apps/plugins/puzzles/src/unfinished/separate.c | 6 +- apps/plugins/puzzles/src/unfinished/slide.c | 27 +- apps/plugins/puzzles/src/unfinished/sokoban.c | 18 +- apps/plugins/puzzles/src/unruly.c | 33 +- apps/plugins/puzzles/src/untangle.c | 21 +- apps/plugins/puzzles/src/windows.c | 106 +- 107 files changed, 4782 insertions(+), 2368 deletions(-) (limited to 'apps/plugins/puzzles') diff --git a/apps/plugins/puzzles/help/blackbox.c b/apps/plugins/puzzles/help/blackbox.c index d5f5e0ca91..fa194ff4cd 100644 --- a/apps/plugins/puzzles/help/blackbox.c +++ b/apps/plugins/puzzles/help/blackbox.c @@ -1,4 +1,4 @@ -/* auto-generated on Aug 16 2017 by genhelp.sh */ +/* auto-generated on Oct 23 2017 by genhelp.sh */ /* orig 5427 comp 3142 ratio 0.578957 level 11 saved 2285 */ /* DO NOT EDIT! */ diff --git a/apps/plugins/puzzles/help/bridges.c b/apps/plugins/puzzles/help/bridges.c index 93461e48c4..f0e9077662 100644 --- a/apps/plugins/puzzles/help/bridges.c +++ b/apps/plugins/puzzles/help/bridges.c @@ -1,4 +1,4 @@ -/* auto-generated on Aug 16 2017 by genhelp.sh */ +/* auto-generated on Oct 23 2017 by genhelp.sh */ /* orig 5211 comp 3117 ratio 0.598158 level 11 saved 2094 */ /* DO NOT EDIT! */ diff --git a/apps/plugins/puzzles/help/cube.c b/apps/plugins/puzzles/help/cube.c index 71644ef6fa..5111704665 100644 --- a/apps/plugins/puzzles/help/cube.c +++ b/apps/plugins/puzzles/help/cube.c @@ -1,4 +1,4 @@ -/* auto-generated on Aug 16 2017 by genhelp.sh */ +/* auto-generated on Oct 23 2017 by genhelp.sh */ /* orig 2051 comp 1450 ratio 0.706972 level 11 saved 601 */ /* DO NOT EDIT! */ diff --git a/apps/plugins/puzzles/help/dominosa.c b/apps/plugins/puzzles/help/dominosa.c index 49db9a9d43..92e5f285e5 100644 --- a/apps/plugins/puzzles/help/dominosa.c +++ b/apps/plugins/puzzles/help/dominosa.c @@ -1,4 +1,4 @@ -/* auto-generated on Aug 16 2017 by genhelp.sh */ +/* auto-generated on Oct 23 2017 by genhelp.sh */ /* orig 2276 comp 1548 ratio 0.680141 level 11 saved 728 */ /* DO NOT EDIT! */ diff --git a/apps/plugins/puzzles/help/fifteen.c b/apps/plugins/puzzles/help/fifteen.c index fa831f0c77..7ab9daa975 100644 --- a/apps/plugins/puzzles/help/fifteen.c +++ b/apps/plugins/puzzles/help/fifteen.c @@ -1,4 +1,4 @@ -/* auto-generated on Aug 16 2017 by genhelp.sh */ +/* auto-generated on Oct 23 2017 by genhelp.sh */ /* orig 1248 comp 937 ratio 0.750801 level 5 saved 311 */ /* DO NOT EDIT! */ diff --git a/apps/plugins/puzzles/help/filling.c b/apps/plugins/puzzles/help/filling.c index 557d672325..d2caed8c6d 100644 --- a/apps/plugins/puzzles/help/filling.c +++ b/apps/plugins/puzzles/help/filling.c @@ -1,4 +1,4 @@ -/* auto-generated on Aug 16 2017 by genhelp.sh */ +/* auto-generated on Oct 23 2017 by genhelp.sh */ /* orig 1796 comp 1242 ratio 0.691537 level 11 saved 554 */ /* DO NOT EDIT! */ diff --git a/apps/plugins/puzzles/help/flip.c b/apps/plugins/puzzles/help/flip.c index ec4ffad0d2..113ae7975c 100644 --- a/apps/plugins/puzzles/help/flip.c +++ b/apps/plugins/puzzles/help/flip.c @@ -1,4 +1,4 @@ -/* auto-generated on Aug 16 2017 by genhelp.sh */ +/* auto-generated on Oct 23 2017 by genhelp.sh */ /* orig 1521 comp 1101 ratio 0.723866 level 11 saved 420 */ /* DO NOT EDIT! */ diff --git a/apps/plugins/puzzles/help/flood.c b/apps/plugins/puzzles/help/flood.c index c7f813c78a..f2139b23af 100644 --- a/apps/plugins/puzzles/help/flood.c +++ b/apps/plugins/puzzles/help/flood.c @@ -1,4 +1,4 @@ -/* auto-generated on Aug 16 2017 by genhelp.sh */ +/* auto-generated on Oct 23 2017 by genhelp.sh */ /* orig 2375 comp 1591 ratio 0.669895 level 11 saved 784 */ /* DO NOT EDIT! */ diff --git a/apps/plugins/puzzles/help/galaxies.c b/apps/plugins/puzzles/help/galaxies.c index b0d14a6cbb..7358a70ea4 100644 --- a/apps/plugins/puzzles/help/galaxies.c +++ b/apps/plugins/puzzles/help/galaxies.c @@ -1,4 +1,4 @@ -/* auto-generated on Aug 16 2017 by genhelp.sh */ +/* auto-generated on Oct 23 2017 by genhelp.sh */ /* orig 2504 comp 1733 ratio 0.692093 level 11 saved 771 */ /* DO NOT EDIT! */ diff --git a/apps/plugins/puzzles/help/guess.c b/apps/plugins/puzzles/help/guess.c index 48a8a23c44..d59e861737 100644 --- a/apps/plugins/puzzles/help/guess.c +++ b/apps/plugins/puzzles/help/guess.c @@ -1,4 +1,4 @@ -/* auto-generated on Aug 16 2017 by genhelp.sh */ +/* auto-generated on Oct 23 2017 by genhelp.sh */ /* orig 3030 comp 1882 ratio 0.621122 level 11 saved 1148 */ /* DO NOT EDIT! */ diff --git a/apps/plugins/puzzles/help/inertia.c b/apps/plugins/puzzles/help/inertia.c index 080f302837..e92531fbf1 100644 --- a/apps/plugins/puzzles/help/inertia.c +++ b/apps/plugins/puzzles/help/inertia.c @@ -1,4 +1,4 @@ -/* auto-generated on Aug 16 2017 by genhelp.sh */ +/* auto-generated on Oct 23 2017 by genhelp.sh */ /* orig 2265 comp 1577 ratio 0.696247 level 11 saved 688 */ /* DO NOT EDIT! */ diff --git a/apps/plugins/puzzles/help/keen.c b/apps/plugins/puzzles/help/keen.c index e31f9b2c1f..691c23e1f6 100644 --- a/apps/plugins/puzzles/help/keen.c +++ b/apps/plugins/puzzles/help/keen.c @@ -1,4 +1,4 @@ -/* auto-generated on Aug 16 2017 by genhelp.sh */ +/* auto-generated on Oct 23 2017 by genhelp.sh */ /* orig 3936 comp 2381 ratio 0.604929 level 11 saved 1555 */ /* DO NOT EDIT! */ diff --git a/apps/plugins/puzzles/help/lightup.c b/apps/plugins/puzzles/help/lightup.c index df6609f3e3..116e7c7a82 100644 --- a/apps/plugins/puzzles/help/lightup.c +++ b/apps/plugins/puzzles/help/lightup.c @@ -1,4 +1,4 @@ -/* auto-generated on Aug 16 2017 by genhelp.sh */ +/* auto-generated on Oct 23 2017 by genhelp.sh */ /* orig 2314 comp 1548 ratio 0.668971 level 11 saved 766 */ /* DO NOT EDIT! */ diff --git a/apps/plugins/puzzles/help/loopy.c b/apps/plugins/puzzles/help/loopy.c index 5a13c4ed94..87ff5ae42b 100644 --- a/apps/plugins/puzzles/help/loopy.c +++ b/apps/plugins/puzzles/help/loopy.c @@ -1,4 +1,4 @@ -/* auto-generated on Aug 16 2017 by genhelp.sh */ +/* auto-generated on Oct 23 2017 by genhelp.sh */ /* orig 2264 comp 1613 ratio 0.712456 level 11 saved 651 */ /* DO NOT EDIT! */ diff --git a/apps/plugins/puzzles/help/magnets.c b/apps/plugins/puzzles/help/magnets.c index 1d016220e0..0cc3819d83 100644 --- a/apps/plugins/puzzles/help/magnets.c +++ b/apps/plugins/puzzles/help/magnets.c @@ -1,4 +1,4 @@ -/* auto-generated on Aug 16 2017 by genhelp.sh */ +/* auto-generated on Oct 23 2017 by genhelp.sh */ /* orig 2498 comp 1657 ratio 0.663331 level 11 saved 841 */ /* DO NOT EDIT! */ diff --git a/apps/plugins/puzzles/help/map.c b/apps/plugins/puzzles/help/map.c index 6e843207e4..4a48ff9483 100644 --- a/apps/plugins/puzzles/help/map.c +++ b/apps/plugins/puzzles/help/map.c @@ -1,4 +1,4 @@ -/* auto-generated on Aug 16 2017 by genhelp.sh */ +/* auto-generated on Oct 23 2017 by genhelp.sh */ /* orig 3464 comp 2297 ratio 0.663106 level 11 saved 1167 */ /* DO NOT EDIT! */ diff --git a/apps/plugins/puzzles/help/mines.c b/apps/plugins/puzzles/help/mines.c index 1b952f47c7..a568ad8b9f 100644 --- a/apps/plugins/puzzles/help/mines.c +++ b/apps/plugins/puzzles/help/mines.c @@ -1,4 +1,4 @@ -/* auto-generated on Aug 16 2017 by genhelp.sh */ +/* auto-generated on Oct 23 2017 by genhelp.sh */ /* orig 3796 comp 2357 ratio 0.620917 level 11 saved 1439 */ /* DO NOT EDIT! */ diff --git a/apps/plugins/puzzles/help/net.c b/apps/plugins/puzzles/help/net.c index a27792a82a..552f707d0e 100644 --- a/apps/plugins/puzzles/help/net.c +++ b/apps/plugins/puzzles/help/net.c @@ -1,4 +1,4 @@ -/* auto-generated on Aug 16 2017 by genhelp.sh */ +/* auto-generated on Oct 23 2017 by genhelp.sh */ /* orig 3445 comp 2367 ratio 0.687083 level 11 saved 1078 */ /* DO NOT EDIT! */ diff --git a/apps/plugins/puzzles/help/netslide.c b/apps/plugins/puzzles/help/netslide.c index 34ee2eed31..a090d38649 100644 --- a/apps/plugins/puzzles/help/netslide.c +++ b/apps/plugins/puzzles/help/netslide.c @@ -1,4 +1,4 @@ -/* auto-generated on Aug 16 2017 by genhelp.sh */ +/* auto-generated on Oct 23 2017 by genhelp.sh */ /* orig 524 comp 416 ratio 0.793893 level 3 saved 108 */ /* DO NOT EDIT! */ diff --git a/apps/plugins/puzzles/help/palisade.c b/apps/plugins/puzzles/help/palisade.c index 713720ab6a..ea4221551a 100644 --- a/apps/plugins/puzzles/help/palisade.c +++ b/apps/plugins/puzzles/help/palisade.c @@ -1,4 +1,4 @@ -/* auto-generated on Aug 16 2017 by genhelp.sh */ +/* auto-generated on Oct 23 2017 by genhelp.sh */ /* orig 1110 comp 894 ratio 0.805405 level 3 saved 216 */ /* DO NOT EDIT! */ diff --git a/apps/plugins/puzzles/help/pattern.c b/apps/plugins/puzzles/help/pattern.c index 2671ae9c89..9c764038cb 100644 --- a/apps/plugins/puzzles/help/pattern.c +++ b/apps/plugins/puzzles/help/pattern.c @@ -1,4 +1,4 @@ -/* auto-generated on Aug 16 2017 by genhelp.sh */ +/* auto-generated on Oct 23 2017 by genhelp.sh */ /* orig 2123 comp 1468 ratio 0.691474 level 4 saved 655 */ /* DO NOT EDIT! */ diff --git a/apps/plugins/puzzles/help/pearl.c b/apps/plugins/puzzles/help/pearl.c index b444d2c6d1..ba9509f31a 100644 --- a/apps/plugins/puzzles/help/pearl.c +++ b/apps/plugins/puzzles/help/pearl.c @@ -1,4 +1,4 @@ -/* auto-generated on Aug 16 2017 by genhelp.sh */ +/* auto-generated on Oct 23 2017 by genhelp.sh */ /* orig 2565 comp 1606 ratio 0.626121 level 11 saved 959 */ /* DO NOT EDIT! */ diff --git a/apps/plugins/puzzles/help/pegs.c b/apps/plugins/puzzles/help/pegs.c index eefeea99c7..7498601e32 100644 --- a/apps/plugins/puzzles/help/pegs.c +++ b/apps/plugins/puzzles/help/pegs.c @@ -1,4 +1,4 @@ -/* auto-generated on Aug 16 2017 by genhelp.sh */ +/* auto-generated on Oct 23 2017 by genhelp.sh */ /* orig 1686 comp 1254 ratio 0.743772 level 3 saved 432 */ /* DO NOT EDIT! */ diff --git a/apps/plugins/puzzles/help/range.c b/apps/plugins/puzzles/help/range.c index 1b5dc9d661..6ff8adaefe 100644 --- a/apps/plugins/puzzles/help/range.c +++ b/apps/plugins/puzzles/help/range.c @@ -1,4 +1,4 @@ -/* auto-generated on Aug 16 2017 by genhelp.sh */ +/* auto-generated on Oct 23 2017 by genhelp.sh */ /* orig 2029 comp 1393 ratio 0.686545 level 4 saved 636 */ /* DO NOT EDIT! */ diff --git a/apps/plugins/puzzles/help/rect.c b/apps/plugins/puzzles/help/rect.c index 59c31a0c74..f4175e311d 100644 --- a/apps/plugins/puzzles/help/rect.c +++ b/apps/plugins/puzzles/help/rect.c @@ -1,5 +1,5 @@ -/* auto-generated on Aug 16 2017 by genhelp.sh */ -/* orig 3534 comp 2351 ratio 0.665252 level 11 saved 1183 */ +/* auto-generated on Oct 23 2017 by genhelp.sh */ +/* orig 3533 comp 2352 ratio 0.665723 level 11 saved 1181 */ /* DO NOT EDIT! */ const char help_text[] = { @@ -33,212 +33,212 @@ const char help_text[] = { 0x2e, 0x20, 0x0a, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x67, 0x61, 0x6d, 0x65, 0x20, 0x67, 0x6f, 0x65, 0x73, 0x49, 0x00, -0xf0, 0x19, 0x4a, 0x61, 0x70, 0x61, 0x6e, 0x65, 0x73, 0x65, +0xf0, 0x18, 0x4a, 0x61, 0x70, 0x61, 0x6e, 0x65, 0x73, 0x65, 0x20, 0x70, 0x75, 0x7a, 0x7a, 0x6c, 0x65, 0x20, 0x6d, 0x61, 0x67, 0x61, 0x7a, 0x69, 0x6e, 0x65, 0x20, 0x4e, 0x69, 0x6b, -0x6f, 0x6c, 0x69, 0x20, 0x5b, 0x33, 0x5d, 0x20, 0x3b, 0x20, -0x49, 0x27, 0x7e, 0x01, 0xf1, 0x14, 0x6c, 0x73, 0x6f, 0x20, -0x73, 0x65, 0x65, 0x6e, 0x20, 0x61, 0x20, 0x50, 0x61, 0x6c, -0x6d, 0x20, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, -0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x74, 0x20, -0x50, 0x45, 0x00, 0x00, 0x1e, 0x00, 0xfa, 0x00, 0x61, 0x63, -0x65, 0x20, 0x5b, 0x34, 0x5d, 0x2e, 0x20, 0x55, 0x6e, 0x6c, -0x69, 0x6b, 0x65, 0x1a, 0x00, 0x2b, 0x27, 0x73, 0x3c, 0x00, -0x91, 0x2c, 0x20, 0x6d, 0x79, 0x20, 0x76, 0x65, 0x72, 0x73, -0x48, 0x00, 0xf1, 0x0e, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, -0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x67, 0x65, 0x6e, -0x65, 0x72, 0x61, 0x74, 0x65, 0x73, 0x20, 0x72, 0x61, 0x6e, -0x64, 0x6f, 0x6d, 0x99, 0x01, 0x01, 0x8a, 0x01, 0x31, 0x61, -0x6e, 0x79, 0x86, 0x01, 0x50, 0x20, 0x79, 0x6f, 0x75, 0x20, -0x65, 0x00, 0x60, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x27, -0x01, 0x64, 0x69, 0x74, 0x79, 0x20, 0x6f, 0x66, 0xd4, 0x00, -0x61, 0x64, 0x65, 0x73, 0x69, 0x67, 0x6e, 0xe6, 0x01, 0x81, -0x68, 0x65, 0x72, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x16, 0x02, -0xd0, 0x71, 0x75, 0x69, 0x74, 0x65, 0x20, 0x61, 0x73, 0x20, -0x67, 0x6f, 0x6f, 0x64, 0x08, 0x00, 0xc3, 0x68, 0x61, 0x6e, -0x64, 0x2d, 0x63, 0x72, 0x61, 0x66, 0x74, 0x65, 0x64, 0x3d, -0x00, 0xc0, 0x73, 0x20, 0x77, 0x6f, 0x75, 0x6c, 0x64, 0x20, -0x62, 0x65, 0x2c, 0x20, 0x4e, 0x02, 0x21, 0x6f, 0x6e, 0x37, -0x01, 0x21, 0x70, 0x6c, 0x03, 0x02, 0x12, 0x64, 0x7d, 0x00, -0x50, 0x67, 0x65, 0x74, 0x20, 0x61, 0x86, 0x01, 0xf6, 0x02, -0x65, 0x78, 0x68, 0x61, 0x75, 0x73, 0x74, 0x69, 0x62, 0x6c, -0x65, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x87, 0x00, 0x00, -0x73, 0x01, 0x70, 0x61, 0x69, 0x6c, 0x6f, 0x72, 0x65, 0x64, -0x7c, 0x01, 0x10, 0x79, 0x7d, 0x02, 0xc1, 0x6f, 0x77, 0x6e, -0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x08, -0x01, 0x30, 0x2e, 0x20, 0x0a, 0x71, 0x01, 0xc1, 0x68, 0x74, -0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x6e, -0x87, 0x01, 0xa3, 0x2e, 0x63, 0x6f, 0x2e, 0x6a, 0x70, 0x2f, -0x65, 0x6e, 0x2f, 0x4c, 0x00, 0xf0, 0x06, 0x2f, 0x73, 0x68, -0x69, 0x6b, 0x61, 0x6b, 0x75, 0x2e, 0x68, 0x74, 0x6d, 0x6c, -0x20, 0x28, 0x62, 0x65, 0x77, 0x61, 0x72, 0x65, 0x6c, 0x00, -0xa2, 0x46, 0x6c, 0x61, 0x73, 0x68, 0x29, 0x20, 0x0a, 0x5b, -0x34, 0x47, 0x00, 0x10, 0x73, 0x48, 0x00, 0xe0, 0x65, 0x62, -0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x6f, -0x72, 0x67, 0x10, 0x00, 0xf7, 0x01, 0x2f, 0x32, 0x30, 0x30, -0x34, 0x31, 0x30, 0x32, 0x34, 0x30, 0x30, 0x31, 0x34, 0x35, -0x39, 0x2f, 0x72, 0x00, 0x02, 0x62, 0x00, 0x63, 0x2e, 0x67, -0x72, 0x2e, 0x6a, 0x70, 0x6f, 0x00, 0x21, 0x2f, 0x73, 0x6d, -0x00, 0xb1, 0x2f, 0x70, 0x61, 0x6c, 0x6d, 0x2f, 0x69, 0x6e, -0x64, 0x65, 0x78, 0x78, 0x00, 0xa7, 0x2e, 0x65, 0x6e, 0x20, -0x0a, 0x0a, 0x23, 0x38, 0x2e, 0x31, 0xaf, 0x03, 0x01, 0xf4, -0x02, 0x73, 0x72, 0x6f, 0x6c, 0x73, 0x20, 0x0a, 0x54, 0x72, -0x02, 0x01, 0xbf, 0x02, 0x61, 0x70, 0x6c, 0x61, 0x79, 0x65, -0x64, 0xb0, 0x03, 0x01, 0x42, 0x01, 0xf1, 0x12, 0x6d, 0x6f, -0x75, 0x73, 0x65, 0x20, 0x6f, 0x72, 0x20, 0x63, 0x75, 0x72, -0x73, 0x6f, 0x72, 0x20, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x20, -0x0a, 0x4c, 0x65, 0x66, 0x74, 0x2d, 0x63, 0x6c, 0x69, 0x63, -0x6b, 0xe0, 0x01, 0x41, 0x65, 0x64, 0x67, 0x65, 0xab, 0x02, -0x21, 0x6f, 0x67, 0x07, 0x03, 0x00, 0x81, 0x01, 0x00, 0x35, -0x00, 0x40, 0x6f, 0x66, 0x66, 0x2c, 0x08, 0x00, 0x18, 0x6c, -0x2f, 0x00, 0x90, 0x64, 0x20, 0x64, 0x72, 0x61, 0x67, 0x20, -0x74, 0x6f, 0x08, 0x00, 0x10, 0x77, 0x92, 0x01, 0x67, 0x65, -0x6e, 0x74, 0x69, 0x72, 0x65, 0x48, 0x03, 0x10, 0x28, 0x34, -0x00, 0x78, 0x69, 0x6e, 0x65, 0x29, 0x20, 0x6f, 0x6e, 0xe7, -0x03, 0x01, 0x99, 0x03, 0xc2, 0x67, 0x6f, 0x20, 0x28, 0x72, -0x65, 0x6d, 0x6f, 0x76, 0x69, 0x6e, 0x67, 0x7e, 0x00, 0x71, -0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x87, 0x00, 0x11, -0x73, 0xbc, 0x00, 0x21, 0x69, 0x6e, 0xee, 0x03, 0x06, 0x53, -0x00, 0x73, 0x29, 0x2e, 0x20, 0x52, 0x69, 0x67, 0x68, 0x86, -0x00, 0x35, 0x69, 0x6e, 0x67, 0x89, 0x00, 0x10, 0x67, 0x0d, -0x00, 0x40, 0x77, 0x69, 0x6c, 0x6c, 0x7f, 0x04, 0x20, 0x6f, -0x77, 0xf3, 0x01, 0x00, 0x9c, 0x00, 0x40, 0x65, 0x72, 0x61, -0x73, 0x63, 0x04, 0x02, 0x1e, 0x04, 0x32, 0x65, 0x6e, 0x74, -0xcd, 0x02, 0x06, 0x52, 0x00, 0x01, 0x68, 0x00, 0x90, 0x6f, -0x75, 0x74, 0x20, 0x61, 0x66, 0x66, 0x65, 0x63, 0x80, 0x00, -0x00, 0xdd, 0x03, 0x01, 0x84, 0x00, 0x00, 0x22, 0x01, 0xf2, -0x01, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, -0x76, 0x65, 0x6c, 0x79, 0x2c, 0x20, 0x75, 0x4d, 0x00, 0x07, -0x47, 0x01, 0x01, 0xdc, 0x03, 0x42, 0x6d, 0x6f, 0x76, 0x65, -0xaa, 0x02, 0x31, 0x6f, 0x73, 0x69, 0x9f, 0x03, 0x30, 0x69, -0x6e, 0x64, 0x66, 0x02, 0x91, 0x6f, 0x72, 0x20, 0x61, 0x72, -0x6f, 0x75, 0x6e, 0x64, 0x1e, 0x00, 0xc0, 0x62, 0x6f, 0x61, -0x72, 0x64, 0x2e, 0x20, 0x50, 0x72, 0x65, 0x73, 0x73, 0x69, -0x00, 0x20, 0x74, 0x68, 0x2e, 0x01, 0x40, 0x74, 0x75, 0x72, -0x6e, 0x4a, 0x00, 0x00, 0x0f, 0x00, 0x12, 0x6e, 0xbe, 0x00, -0x13, 0x73, 0xbf, 0x00, 0x0f, 0x70, 0x00, 0x04, 0x01, 0xf1, -0x00, 0x09, 0xc5, 0x00, 0x00, 0xc1, 0x00, 0x41, 0x66, 0x72, -0x6f, 0x6d, 0x2f, 0x01, 0x05, 0x86, 0x00, 0x02, 0xed, 0x04, -0x1f, 0x70, 0x6f, 0x00, 0x04, 0x80, 0x61, 0x67, 0x61, 0x69, -0x6e, 0x20, 0x63, 0x6f, 0x1c, 0x04, 0x20, 0x74, 0x65, 0xaf, -0x03, 0x07, 0xbc, 0x01, 0x35, 0x2e, 0x20, 0x55, 0x34, 0x00, -0x20, 0x73, 0x70, 0x60, 0x04, 0xa0, 0x62, 0x61, 0x72, 0x20, -0x69, 0x6e, 0x73, 0x74, 0x65, 0x61, 0x14, 0x06, 0x0b, 0x4d, -0x00, 0x03, 0xb7, 0x00, 0x0f, 0x76, 0x01, 0x32, 0x10, 0x2c, -0x1d, 0x04, 0x57, 0x61, 0x62, 0x6f, 0x76, 0x65, 0x2b, 0x01, -0xf1, 0x01, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x20, 0x63, -0x61, 0x6e, 0x63, 0x65, 0x6c, 0x73, 0x20, 0x61, 0x03, 0x01, -0x7a, 0x2e, 0x20, 0x0a, 0x57, 0x68, 0x65, 0x6e, 0x0a, 0x01, -0x13, 0x66, 0x78, 0x00, 0x10, 0x72, 0x14, 0x00, 0x02, 0xb3, -0x04, 0x25, 0x69, 0x73, 0xe7, 0x00, 0x52, 0x64, 0x2c, 0x20, -0x69, 0x74, 0x28, 0x02, 0xf2, 0x01, 0x62, 0x65, 0x20, 0x73, -0x68, 0x61, 0x64, 0x65, 0x64, 0x2e, 0x20, 0x0a, 0x28, 0x41, -0x6c, 0x6c, 0x12, 0x06, 0x10, 0x63, 0x39, 0x01, 0x10, 0x73, -0xc6, 0x04, 0x61, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64, 0xdf, -0x06, 0x21, 0x65, 0x63, 0xd5, 0x01, 0x63, 0x32, 0x2e, 0x31, -0x20, 0x61, 0x72, 0x9c, 0x05, 0xb2, 0x61, 0x76, 0x61, 0x69, -0x6c, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x29, 0x98, 0x03, 0x18, -0x32, 0x98, 0x03, 0x91, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, -0x74, 0x65, 0x72, 0x9a, 0x03, 0x37, 0x65, 0x73, 0x65, 0x12, -0x00, 0x00, 0x44, 0x00, 0x06, 0x3f, 0x00, 0x04, 0xb8, 0x01, -0xf0, 0x01, 0x65, 0x20, 0x60, 0x43, 0x75, 0x73, 0x74, 0x6f, -0x6d, 0x2e, 0x2e, 0x2e, 0x27, 0x20, 0x6f, 0x70, 0x72, 0x00, -0x04, 0x38, 0x03, 0xf0, 0x0b, 0x60, 0x54, 0x79, 0x70, 0x65, -0x27, 0x20, 0x6d, 0x65, 0x6e, 0x75, 0x2e, 0x20, 0x0a, 0x5f, -0x57, 0x69, 0x64, 0x74, 0x68, 0x5f, 0x2c, 0x20, 0x5f, 0x48, -0x65, 0x0d, 0x03, 0x60, 0x5f, 0x20, 0x0a, 0x53, 0x69, 0x7a, -0xfb, 0x00, 0x00, 0x61, 0x03, 0x00, 0xe2, 0x00, 0x16, 0x6e, -0x78, 0x07, 0x71, 0x0a, 0x5f, 0x45, 0x78, 0x70, 0x61, 0x6e, -0xec, 0x05, 0x73, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, -0x2c, 0x04, 0x10, 0x69, 0x47, 0x01, 0x91, 0x6d, 0x65, 0x63, -0x68, 0x61, 0x6e, 0x69, 0x73, 0x6d, 0xb6, 0x06, 0x00, 0x0c, -0x00, 0x14, 0x67, 0xf7, 0x01, 0x35, 0x74, 0x79, 0x70, 0x54, -0x00, 0x15, 0x73, 0x1a, 0x06, 0x42, 0x64, 0x20, 0x62, 0x79, -0xeb, 0x02, 0x90, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x2e, -0x20, 0x53, 0xfd, 0x07, 0x60, 0x70, 0x65, 0x6f, 0x70, 0x6c, -0x65, 0x6c, 0x02, 0x33, 0x66, 0x65, 0x72, 0x3b, 0x08, 0x04, -0x91, 0x07, 0x01, 0xa7, 0x03, 0x96, 0x20, 0x66, 0x65, 0x77, -0x20, 0x6c, 0x61, 0x72, 0x67, 0x65, 0x02, 0x01, 0x18, 0x07, -0x00, 0x0c, 0x04, 0x08, 0x29, 0x00, 0x11, 0x6d, 0x69, 0x06, -0x70, 0x6d, 0x61, 0x6c, 0x6c, 0x20, 0x6f, 0x6e, 0xc1, 0x00, -0x11, 0x53, 0xbf, 0x05, 0x00, 0xfa, 0x01, 0x10, 0x20, 0x3e, -0x08, 0x19, 0x52, 0x3d, 0x00, 0x30, 0x65, 0x73, 0x73, 0x76, -0x04, 0x08, 0xbc, 0x06, 0x00, 0xb9, 0x08, 0x11, 0x5f, 0x41, -0x00, 0x31, 0x65, 0x72, 0x5f, 0x88, 0x00, 0x00, 0x15, 0x03, -0x01, 0x48, 0x01, 0x05, 0xc1, 0x06, 0x04, 0x08, 0x06, 0x21, -0x65, 0x64, 0x23, 0x03, 0x01, 0x7a, 0x03, 0x01, 0x4f, 0x00, -0x20, 0x78, 0x70, 0x0f, 0x00, 0x20, 0x69, 0x74, 0xe5, 0x00, -0x30, 0x61, 0x64, 0x64, 0x91, 0x00, 0x10, 0x72, 0xd8, 0x02, -0x20, 0x61, 0x6e, 0xce, 0x00, 0x60, 0x6c, 0x75, 0x6d, 0x6e, -0x73, 0x2e, 0x3f, 0x01, 0x00, 0xe7, 0x06, 0x7b, 0x66, 0x61, -0x75, 0x6c, 0x74, 0x20, 0x65, 0x5e, 0x01, 0x00, 0x32, 0x01, -0xa1, 0x7a, 0x65, 0x72, 0x6f, 0x20, 0x6d, 0x65, 0x61, 0x6e, -0x73, 0x90, 0x03, 0x07, 0xb4, 0x00, 0x02, 0x7a, 0x02, 0x46, -0x73, 0x69, 0x6d, 0x70, 0xb1, 0x00, 0x07, 0x6a, 0x09, 0x09, -0xa5, 0x00, 0x00, 0xef, 0x00, 0x00, 0x96, 0x01, 0x12, 0x2c, -0xe4, 0x04, 0x10, 0x6f, 0x46, 0x07, 0x10, 0x68, 0x92, 0x00, -0x30, 0x66, 0x75, 0x72, 0x5b, 0x07, 0x42, 0x2e, 0x20, 0x49, -0x66, 0xcd, 0x00, 0x01, 0x11, 0x07, 0x0f, 0x8a, 0x00, 0x02, -0x90, 0x28, 0x73, 0x61, 0x79, 0x29, 0x20, 0x30, 0x2e, 0x35, -0xf7, 0x02, 0x07, 0x93, 0x00, 0x02, 0xf2, 0x08, 0x42, 0x64, -0x69, 0x6d, 0x65, 0x32, 0x00, 0x25, 0x6f, 0x66, 0xa0, 0x05, -0x04, 0x1d, 0x03, 0x03, 0x0d, 0x01, 0x02, 0x41, 0x07, 0x42, -0x68, 0x61, 0x6c, 0x66, 0x31, 0x04, 0x00, 0x9d, 0x03, 0x40, -0x62, 0x69, 0x67, 0x20, 0xb7, 0x07, 0x12, 0x72, 0xc3, 0x00, -0x03, 0x4d, 0x07, 0x60, 0x49, 0x6e, 0x20, 0x6f, 0x74, 0x68, -0x28, 0x09, 0x51, 0x6f, 0x72, 0x64, 0x73, 0x2c, 0x51, 0x00, -0x30, 0x69, 0x6e, 0x69, 0x9e, 0x01, 0x0a, 0x59, 0x00, 0x36, -0x32, 0x2f, 0x33, 0xe9, 0x00, 0x28, 0x69, 0x6e, 0x8c, 0x00, -0x03, 0xb5, 0x04, 0x0f, 0x85, 0x00, 0x02, 0x01, 0x22, 0x04, -0x21, 0x66, 0x75, 0x40, 0x01, 0x17, 0x7a, 0x42, 0x04, 0x24, -0x64, 0x64, 0x42, 0x06, 0x27, 0x6d, 0x6f, 0x7f, 0x06, 0x01, -0xfd, 0x02, 0x30, 0x53, 0x65, 0x74, 0x5d, 0x04, 0x0f, 0x1f, -0x01, 0x04, 0x03, 0x9c, 0x05, 0x00, 0x20, 0x01, 0x52, 0x20, -0x74, 0x65, 0x6e, 0x64, 0xcc, 0x05, 0x21, 0x61, 0x6b, 0xbb, -0x04, 0x01, 0x4c, 0x07, 0x02, 0x53, 0x00, 0x91, 0x64, 0x69, -0x66, 0x66, 0x69, 0x63, 0x75, 0x6c, 0x74, 0x9c, 0x00, 0x02, -0xff, 0x03, 0x60, 0x28, 0x69, 0x6e, 0x20, 0x6d, 0x79, 0x56, -0x00, 0xa0, 0x65, 0x72, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x29, -0x20, 0x72, 0x18, 0x08, 0x10, 0x64, 0x56, 0x03, 0x30, 0x6c, -0x65, 0x73, 0x43, 0x04, 0x30, 0x64, 0x75, 0x63, 0x39, 0x06, -0x00, 0x35, 0x00, 0x01, 0x49, 0x00, 0x00, 0xe2, 0x0a, 0x20, -0x75, 0x69, 0x13, 0x00, 0x01, 0xa1, 0x07, 0x00, 0x99, 0x00, -0x58, 0x73, 0x74, 0x79, 0x6c, 0x65, 0xca, 0x01, 0x00, 0xa8, -0x01, 0xc0, 0x5f, 0x74, 0x6f, 0x6f, 0x5f, 0x20, 0x68, 0x69, -0x67, 0x68, 0x2c, 0x20, 0xe5, 0x00, 0x35, 0x67, 0x68, 0x2c, -0x92, 0x00, 0x03, 0x3d, 0x02, 0x00, 0x10, 0x03, 0x34, 0x6e, -0x6f, 0x74, 0x81, 0x01, 0x02, 0xa9, 0x00, 0x01, 0xe9, 0x02, -0x02, 0x6b, 0x03, 0x0b, 0x65, 0x03, 0x50, 0x63, 0x6f, 0x76, -0x65, 0x72, 0x44, 0x00, 0x02, 0xa5, 0x07, 0x01, 0xea, 0x01, -0x02, 0xfc, 0x02, 0x06, 0x59, 0x00, 0x50, 0x62, 0x65, 0x63, -0x6f, 0x6d, 0x2f, 0x00, 0x61, 0x72, 0x69, 0x76, 0x69, 0x61, -0x6c, 0x3b, 0x04, 0xf0, 0x02, 0x6e, 0x73, 0x75, 0x72, 0x65, -0x20, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x20, 0x73, 0x6f, -0x6c, 0x75, 0xeb, 0x01, 0x70, 0x5f, 0x20, 0x0a, 0x4e, 0x6f, -0x72, 0x6d, 0x75, 0x03, 0x1c, 0x2c, 0xdc, 0x02, 0x02, 0x3f, -0x01, 0x00, 0x36, 0x00, 0x01, 0x68, 0x02, 0x00, 0x5e, 0x00, -0x05, 0x92, 0x09, 0x21, 0x69, 0x74, 0x8c, 0x06, 0x00, 0x0f, -0x06, 0x02, 0x62, 0x0c, 0x21, 0x6f, 0x6e, 0xa5, 0x0b, 0x06, -0x5a, 0x00, 0x13, 0x2e, 0xba, 0x0a, 0x12, 0x73, 0xba, 0x08, -0x61, 0x61, 0x6d, 0x62, 0x69, 0x67, 0x75, 0x00, 0x0c, 0x12, -0x65, 0x98, 0x05, 0x01, 0x07, 0x04, 0x1c, 0x62, 0x97, 0x01, -0x05, 0x61, 0x01, 0x00, 0x56, 0x0c, 0xa5, 0x74, 0x6c, 0x65, -0x2c, 0x20, 0x73, 0x6f, 0x20, 0x69, 0x66, 0xab, 0x0a, 0x05, -0x41, 0x04, 0x00, 0xaf, 0x06, 0x00, 0xce, 0x08, 0x02, 0x9f, -0x0b, 0x62, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x9f, 0x01, -0x70, 0x72, 0x69, 0x73, 0x6b, 0x20, 0x68, 0x61, 0x8d, 0x08, -0x06, 0x77, 0x00, 0x04, 0xba, 0x00, 0xb1, 0x2e, 0x20, 0x41, -0x6c, 0x73, 0x6f, 0x2c, 0x20, 0x66, 0x69, 0x6e, 0x6c, 0x02, -0x54, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0xf0, 0x07, 0x42, 0x73, -0x69, 0x62, 0x6c, 0xc2, 0x00, 0x09, 0xa2, 0x00, 0x20, 0x61, -0x6e, 0x9a, 0x02, 0x01, 0x87, 0x07, 0x50, 0x61, 0x6c, 0x20, -0x63, 0x68, 0x90, 0x04, 0x30, 0x6e, 0x67, 0x65, 0xd1, 0x03, -0x02, 0x1c, 0x00, 0x10, 0x76, 0xcb, 0x06, 0x11, 0x64, 0x09, -0x02, 0x00, 0xcc, 0x03, 0x30, 0x54, 0x75, 0x72, 0x00, 0x05, -0x05, 0x9e, 0x00, 0x03, 0x02, 0x06, 0x00, 0x4f, 0x00, 0x03, -0x0c, 0x0c, 0x73, 0x70, 0x65, 0x65, 0x64, 0x20, 0x75, 0x70, -0x95, 0x00, 0x06, 0x7b, 0x03, 0x50, 0x6e, 0x2e, 0x20, 0x0a, -0x00, +0x6f, 0x6c, 0x69, 0x20, 0x5b, 0x33, 0x5d, 0x3b, 0x20, 0x49, +0x27, 0x7d, 0x01, 0xf1, 0x14, 0x6c, 0x73, 0x6f, 0x20, 0x73, +0x65, 0x65, 0x6e, 0x20, 0x61, 0x20, 0x50, 0x61, 0x6c, 0x6d, +0x20, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, +0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x74, 0x20, 0x50, +0x44, 0x00, 0x00, 0x1e, 0x00, 0xfa, 0x00, 0x61, 0x63, 0x65, +0x20, 0x5b, 0x34, 0x5d, 0x2e, 0x20, 0x55, 0x6e, 0x6c, 0x69, +0x6b, 0x65, 0x1a, 0x00, 0x2b, 0x27, 0x73, 0x3c, 0x00, 0x91, +0x2c, 0x20, 0x6d, 0x79, 0x20, 0x76, 0x65, 0x72, 0x73, 0x48, +0x00, 0xf1, 0x0e, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, +0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x67, 0x65, 0x6e, 0x65, +0x72, 0x61, 0x74, 0x65, 0x73, 0x20, 0x72, 0x61, 0x6e, 0x64, +0x6f, 0x6d, 0x98, 0x01, 0x01, 0x89, 0x01, 0x31, 0x61, 0x6e, +0x79, 0x85, 0x01, 0x50, 0x20, 0x79, 0x6f, 0x75, 0x20, 0x65, +0x00, 0x60, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x26, 0x01, +0x64, 0x69, 0x74, 0x79, 0x20, 0x6f, 0x66, 0xd3, 0x00, 0x61, +0x64, 0x65, 0x73, 0x69, 0x67, 0x6e, 0xe5, 0x01, 0x81, 0x68, +0x65, 0x72, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x15, 0x02, 0xd0, +0x71, 0x75, 0x69, 0x74, 0x65, 0x20, 0x61, 0x73, 0x20, 0x67, +0x6f, 0x6f, 0x64, 0x08, 0x00, 0xc3, 0x68, 0x61, 0x6e, 0x64, +0x2d, 0x63, 0x72, 0x61, 0x66, 0x74, 0x65, 0x64, 0x3d, 0x00, +0xc0, 0x73, 0x20, 0x77, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, +0x65, 0x2c, 0x20, 0x4d, 0x02, 0x21, 0x6f, 0x6e, 0x36, 0x01, +0x21, 0x70, 0x6c, 0x02, 0x02, 0x12, 0x64, 0x7d, 0x00, 0x50, +0x67, 0x65, 0x74, 0x20, 0x61, 0x85, 0x01, 0xf6, 0x02, 0x65, +0x78, 0x68, 0x61, 0x75, 0x73, 0x74, 0x69, 0x62, 0x6c, 0x65, +0x20, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x87, 0x00, 0x00, 0x72, +0x01, 0x70, 0x61, 0x69, 0x6c, 0x6f, 0x72, 0x65, 0x64, 0x7b, +0x01, 0x10, 0x79, 0x7c, 0x02, 0xc1, 0x6f, 0x77, 0x6e, 0x20, +0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x08, 0x01, +0xf1, 0x04, 0x2e, 0x20, 0x0a, 0x5b, 0x33, 0x5d, 0x20, 0x68, +0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, +0x6e, 0x86, 0x01, 0xa3, 0x2e, 0x63, 0x6f, 0x2e, 0x6a, 0x70, +0x2f, 0x65, 0x6e, 0x2f, 0x4c, 0x00, 0xf0, 0x06, 0x2f, 0x73, +0x68, 0x69, 0x6b, 0x61, 0x6b, 0x75, 0x2e, 0x68, 0x74, 0x6d, +0x6c, 0x20, 0x28, 0x62, 0x65, 0x77, 0x61, 0x72, 0x65, 0x6c, +0x00, 0xa2, 0x46, 0x6c, 0x61, 0x73, 0x68, 0x29, 0x20, 0x0a, +0x5b, 0x34, 0x47, 0x00, 0x10, 0x73, 0x48, 0x00, 0xe0, 0x65, +0x62, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, +0x6f, 0x72, 0x67, 0x10, 0x00, 0xf7, 0x01, 0x2f, 0x32, 0x30, +0x30, 0x34, 0x31, 0x30, 0x32, 0x34, 0x30, 0x30, 0x31, 0x34, +0x35, 0x39, 0x2f, 0x72, 0x00, 0x02, 0x62, 0x00, 0x63, 0x2e, +0x67, 0x72, 0x2e, 0x6a, 0x70, 0x6f, 0x00, 0x21, 0x2f, 0x73, +0x6d, 0x00, 0xb1, 0x2f, 0x70, 0x61, 0x6c, 0x6d, 0x2f, 0x69, +0x6e, 0x64, 0x65, 0x78, 0x78, 0x00, 0xa7, 0x2e, 0x65, 0x6e, +0x20, 0x0a, 0x0a, 0x23, 0x38, 0x2e, 0x31, 0xae, 0x03, 0x01, +0xf3, 0x02, 0x73, 0x72, 0x6f, 0x6c, 0x73, 0x20, 0x0a, 0x54, +0x71, 0x02, 0x01, 0xbe, 0x02, 0x61, 0x70, 0x6c, 0x61, 0x79, +0x65, 0x64, 0xaf, 0x03, 0x01, 0x42, 0x01, 0xf1, 0x12, 0x6d, +0x6f, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x72, 0x20, 0x63, 0x75, +0x72, 0x73, 0x6f, 0x72, 0x20, 0x6b, 0x65, 0x79, 0x73, 0x2e, +0x20, 0x0a, 0x4c, 0x65, 0x66, 0x74, 0x2d, 0x63, 0x6c, 0x69, +0x63, 0x6b, 0xe0, 0x01, 0x41, 0x65, 0x64, 0x67, 0x65, 0xaa, +0x02, 0x21, 0x6f, 0x67, 0x06, 0x03, 0x00, 0x81, 0x01, 0x00, +0x35, 0x00, 0x40, 0x6f, 0x66, 0x66, 0x2c, 0x08, 0x00, 0x18, +0x6c, 0x2f, 0x00, 0x90, 0x64, 0x20, 0x64, 0x72, 0x61, 0x67, +0x20, 0x74, 0x6f, 0x08, 0x00, 0x10, 0x77, 0x92, 0x01, 0x67, +0x65, 0x6e, 0x74, 0x69, 0x72, 0x65, 0x47, 0x03, 0x10, 0x28, +0x34, 0x00, 0x78, 0x69, 0x6e, 0x65, 0x29, 0x20, 0x6f, 0x6e, +0xe6, 0x03, 0x01, 0x98, 0x03, 0xc2, 0x67, 0x6f, 0x20, 0x28, +0x72, 0x65, 0x6d, 0x6f, 0x76, 0x69, 0x6e, 0x67, 0x7e, 0x00, +0x71, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x87, 0x00, +0x11, 0x73, 0xbc, 0x00, 0x21, 0x69, 0x6e, 0xed, 0x03, 0x06, +0x53, 0x00, 0x73, 0x29, 0x2e, 0x20, 0x52, 0x69, 0x67, 0x68, +0x86, 0x00, 0x35, 0x69, 0x6e, 0x67, 0x89, 0x00, 0x10, 0x67, +0x0d, 0x00, 0x40, 0x77, 0x69, 0x6c, 0x6c, 0x7e, 0x04, 0x20, +0x6f, 0x77, 0xf3, 0x01, 0x00, 0x9c, 0x00, 0x40, 0x65, 0x72, +0x61, 0x73, 0x62, 0x04, 0x02, 0x1d, 0x04, 0x32, 0x65, 0x6e, +0x74, 0xcd, 0x02, 0x06, 0x52, 0x00, 0x01, 0x68, 0x00, 0x90, +0x6f, 0x75, 0x74, 0x20, 0x61, 0x66, 0x66, 0x65, 0x63, 0x80, +0x00, 0x00, 0xdc, 0x03, 0x01, 0x84, 0x00, 0x00, 0x22, 0x01, +0xf2, 0x01, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, +0x69, 0x76, 0x65, 0x6c, 0x79, 0x2c, 0x20, 0x75, 0x4d, 0x00, +0x07, 0x47, 0x01, 0x01, 0xdb, 0x03, 0x42, 0x6d, 0x6f, 0x76, +0x65, 0xaa, 0x02, 0x31, 0x6f, 0x73, 0x69, 0x9f, 0x03, 0x30, +0x69, 0x6e, 0x64, 0x66, 0x02, 0x91, 0x6f, 0x72, 0x20, 0x61, +0x72, 0x6f, 0x75, 0x6e, 0x64, 0x1e, 0x00, 0xc0, 0x62, 0x6f, +0x61, 0x72, 0x64, 0x2e, 0x20, 0x50, 0x72, 0x65, 0x73, 0x73, +0x69, 0x00, 0x20, 0x74, 0x68, 0x2e, 0x01, 0x40, 0x74, 0x75, +0x72, 0x6e, 0x4a, 0x00, 0x00, 0x0f, 0x00, 0x12, 0x6e, 0xbe, +0x00, 0x13, 0x73, 0xbf, 0x00, 0x0f, 0x70, 0x00, 0x04, 0x01, +0xf1, 0x00, 0x09, 0xc5, 0x00, 0x00, 0xc1, 0x00, 0x41, 0x66, +0x72, 0x6f, 0x6d, 0x2f, 0x01, 0x05, 0x86, 0x00, 0x02, 0xec, +0x04, 0x1f, 0x70, 0x6f, 0x00, 0x04, 0x80, 0x61, 0x67, 0x61, +0x69, 0x6e, 0x20, 0x63, 0x6f, 0x1c, 0x04, 0x20, 0x74, 0x65, +0xaf, 0x03, 0x07, 0xbc, 0x01, 0x35, 0x2e, 0x20, 0x55, 0x34, +0x00, 0x20, 0x73, 0x70, 0x60, 0x04, 0xa0, 0x62, 0x61, 0x72, +0x20, 0x69, 0x6e, 0x73, 0x74, 0x65, 0x61, 0x13, 0x06, 0x0b, +0x4d, 0x00, 0x03, 0xb7, 0x00, 0x0f, 0x76, 0x01, 0x32, 0x10, +0x2c, 0x1d, 0x04, 0x57, 0x61, 0x62, 0x6f, 0x76, 0x65, 0x2b, +0x01, 0xf1, 0x01, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x20, +0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x73, 0x20, 0x61, 0x03, +0x01, 0x7a, 0x2e, 0x20, 0x0a, 0x57, 0x68, 0x65, 0x6e, 0x0a, +0x01, 0x13, 0x66, 0x78, 0x00, 0x10, 0x72, 0x14, 0x00, 0x02, +0xb3, 0x04, 0x25, 0x69, 0x73, 0xe7, 0x00, 0x52, 0x64, 0x2c, +0x20, 0x69, 0x74, 0x28, 0x02, 0xf2, 0x01, 0x62, 0x65, 0x20, +0x73, 0x68, 0x61, 0x64, 0x65, 0x64, 0x2e, 0x20, 0x0a, 0x28, +0x41, 0x6c, 0x6c, 0x11, 0x06, 0x10, 0x63, 0x39, 0x01, 0x10, +0x73, 0xc6, 0x04, 0x61, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64, +0xde, 0x06, 0x21, 0x65, 0x63, 0xd5, 0x01, 0x63, 0x32, 0x2e, +0x31, 0x20, 0x61, 0x72, 0x9c, 0x05, 0xb2, 0x61, 0x76, 0x61, +0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x29, 0x98, 0x03, +0x18, 0x32, 0x98, 0x03, 0x91, 0x70, 0x61, 0x72, 0x61, 0x6d, +0x65, 0x74, 0x65, 0x72, 0x9a, 0x03, 0x37, 0x65, 0x73, 0x65, +0x12, 0x00, 0x00, 0x44, 0x00, 0x06, 0x3f, 0x00, 0x04, 0xb8, +0x01, 0xf0, 0x01, 0x65, 0x20, 0x60, 0x43, 0x75, 0x73, 0x74, +0x6f, 0x6d, 0x2e, 0x2e, 0x2e, 0x27, 0x20, 0x6f, 0x70, 0x72, +0x00, 0x04, 0x38, 0x03, 0xf0, 0x0b, 0x60, 0x54, 0x79, 0x70, +0x65, 0x27, 0x20, 0x6d, 0x65, 0x6e, 0x75, 0x2e, 0x20, 0x0a, +0x5f, 0x57, 0x69, 0x64, 0x74, 0x68, 0x5f, 0x2c, 0x20, 0x5f, +0x48, 0x65, 0x0d, 0x03, 0x60, 0x5f, 0x20, 0x0a, 0x53, 0x69, +0x7a, 0xfb, 0x00, 0x00, 0x61, 0x03, 0x00, 0xe2, 0x00, 0x16, +0x6e, 0x77, 0x07, 0x71, 0x0a, 0x5f, 0x45, 0x78, 0x70, 0x61, +0x6e, 0xec, 0x05, 0x73, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, +0x5f, 0x2c, 0x04, 0x10, 0x69, 0x47, 0x01, 0x91, 0x6d, 0x65, +0x63, 0x68, 0x61, 0x6e, 0x69, 0x73, 0x6d, 0xb5, 0x06, 0x00, +0x0c, 0x00, 0x14, 0x67, 0xf7, 0x01, 0x35, 0x74, 0x79, 0x70, +0x54, 0x00, 0x15, 0x73, 0x1a, 0x06, 0x42, 0x64, 0x20, 0x62, +0x79, 0xeb, 0x02, 0x90, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, +0x2e, 0x20, 0x53, 0xfc, 0x07, 0x60, 0x70, 0x65, 0x6f, 0x70, +0x6c, 0x65, 0x6c, 0x02, 0x33, 0x66, 0x65, 0x72, 0x3a, 0x08, +0x04, 0x90, 0x07, 0x01, 0xa7, 0x03, 0x96, 0x20, 0x66, 0x65, +0x77, 0x20, 0x6c, 0x61, 0x72, 0x67, 0x65, 0x02, 0x01, 0x17, +0x07, 0x00, 0x0c, 0x04, 0x08, 0x29, 0x00, 0x11, 0x6d, 0x69, +0x06, 0x70, 0x6d, 0x61, 0x6c, 0x6c, 0x20, 0x6f, 0x6e, 0xc1, +0x00, 0x11, 0x53, 0xbf, 0x05, 0x00, 0xfa, 0x01, 0x10, 0x20, +0x3d, 0x08, 0x19, 0x52, 0x3d, 0x00, 0x30, 0x65, 0x73, 0x73, +0x76, 0x04, 0x08, 0xbc, 0x06, 0x00, 0xb8, 0x08, 0x11, 0x5f, +0x41, 0x00, 0x31, 0x65, 0x72, 0x5f, 0x88, 0x00, 0x00, 0x15, +0x03, 0x01, 0x48, 0x01, 0x05, 0xc1, 0x06, 0x04, 0x08, 0x06, +0x21, 0x65, 0x64, 0x23, 0x03, 0x01, 0x7a, 0x03, 0x01, 0x4f, +0x00, 0x20, 0x78, 0x70, 0x0f, 0x00, 0x20, 0x69, 0x74, 0xe5, +0x00, 0x30, 0x61, 0x64, 0x64, 0x91, 0x00, 0x10, 0x72, 0xd8, +0x02, 0x20, 0x61, 0x6e, 0xce, 0x00, 0x60, 0x6c, 0x75, 0x6d, +0x6e, 0x73, 0x2e, 0x3f, 0x01, 0x00, 0xe7, 0x06, 0x7b, 0x66, +0x61, 0x75, 0x6c, 0x74, 0x20, 0x65, 0x5e, 0x01, 0x00, 0x32, +0x01, 0xa1, 0x7a, 0x65, 0x72, 0x6f, 0x20, 0x6d, 0x65, 0x61, +0x6e, 0x73, 0x90, 0x03, 0x07, 0xb4, 0x00, 0x02, 0x7a, 0x02, +0x46, 0x73, 0x69, 0x6d, 0x70, 0xb1, 0x00, 0x07, 0x69, 0x09, +0x09, 0xa5, 0x00, 0x00, 0xef, 0x00, 0x00, 0x96, 0x01, 0x12, +0x2c, 0xe4, 0x04, 0x10, 0x6f, 0x46, 0x07, 0x10, 0x68, 0x92, +0x00, 0x30, 0x66, 0x75, 0x72, 0x5b, 0x07, 0x42, 0x2e, 0x20, +0x49, 0x66, 0xcd, 0x00, 0x01, 0x11, 0x07, 0x0f, 0x8a, 0x00, +0x02, 0x90, 0x28, 0x73, 0x61, 0x79, 0x29, 0x20, 0x30, 0x2e, +0x35, 0xf7, 0x02, 0x07, 0x93, 0x00, 0x02, 0xf1, 0x08, 0x42, +0x64, 0x69, 0x6d, 0x65, 0x32, 0x00, 0x25, 0x6f, 0x66, 0xa0, +0x05, 0x04, 0x1d, 0x03, 0x03, 0x0d, 0x01, 0x02, 0x41, 0x07, +0x42, 0x68, 0x61, 0x6c, 0x66, 0x31, 0x04, 0x00, 0x9d, 0x03, +0x40, 0x62, 0x69, 0x67, 0x20, 0xb7, 0x07, 0x12, 0x72, 0xc3, +0x00, 0x03, 0x4d, 0x07, 0x60, 0x49, 0x6e, 0x20, 0x6f, 0x74, +0x68, 0x27, 0x09, 0x51, 0x6f, 0x72, 0x64, 0x73, 0x2c, 0x51, +0x00, 0x30, 0x69, 0x6e, 0x69, 0x9e, 0x01, 0x0a, 0x59, 0x00, +0x36, 0x32, 0x2f, 0x33, 0xe9, 0x00, 0x28, 0x69, 0x6e, 0x8c, +0x00, 0x03, 0xb5, 0x04, 0x0f, 0x85, 0x00, 0x02, 0x01, 0x22, +0x04, 0x21, 0x66, 0x75, 0x40, 0x01, 0x17, 0x7a, 0x42, 0x04, +0x24, 0x64, 0x64, 0x42, 0x06, 0x27, 0x6d, 0x6f, 0x7f, 0x06, +0x01, 0xfd, 0x02, 0x30, 0x53, 0x65, 0x74, 0x5d, 0x04, 0x0f, +0x1f, 0x01, 0x04, 0x03, 0x9c, 0x05, 0x00, 0x20, 0x01, 0x52, +0x20, 0x74, 0x65, 0x6e, 0x64, 0xcc, 0x05, 0x21, 0x61, 0x6b, +0xbb, 0x04, 0x01, 0x4c, 0x07, 0x02, 0x53, 0x00, 0x91, 0x64, +0x69, 0x66, 0x66, 0x69, 0x63, 0x75, 0x6c, 0x74, 0x9c, 0x00, +0x02, 0xff, 0x03, 0x60, 0x28, 0x69, 0x6e, 0x20, 0x6d, 0x79, +0x56, 0x00, 0xa0, 0x65, 0x72, 0x69, 0x65, 0x6e, 0x63, 0x65, +0x29, 0x20, 0x72, 0x18, 0x08, 0x10, 0x64, 0x56, 0x03, 0x30, +0x6c, 0x65, 0x73, 0x43, 0x04, 0x30, 0x64, 0x75, 0x63, 0x39, +0x06, 0x00, 0x35, 0x00, 0x01, 0x49, 0x00, 0x00, 0xe1, 0x0a, +0x20, 0x75, 0x69, 0x13, 0x00, 0x01, 0xa1, 0x07, 0x00, 0x99, +0x00, 0x58, 0x73, 0x74, 0x79, 0x6c, 0x65, 0xca, 0x01, 0x00, +0xa8, 0x01, 0xc0, 0x5f, 0x74, 0x6f, 0x6f, 0x5f, 0x20, 0x68, +0x69, 0x67, 0x68, 0x2c, 0x20, 0xe5, 0x00, 0x35, 0x67, 0x68, +0x2c, 0x92, 0x00, 0x03, 0x3d, 0x02, 0x00, 0x10, 0x03, 0x34, +0x6e, 0x6f, 0x74, 0x81, 0x01, 0x02, 0xa9, 0x00, 0x01, 0xe9, +0x02, 0x02, 0x6b, 0x03, 0x0b, 0x65, 0x03, 0x50, 0x63, 0x6f, +0x76, 0x65, 0x72, 0x44, 0x00, 0x02, 0xa5, 0x07, 0x01, 0xea, +0x01, 0x02, 0xfc, 0x02, 0x06, 0x59, 0x00, 0x50, 0x62, 0x65, +0x63, 0x6f, 0x6d, 0x2f, 0x00, 0x61, 0x72, 0x69, 0x76, 0x69, +0x61, 0x6c, 0x3b, 0x04, 0xf0, 0x02, 0x6e, 0x73, 0x75, 0x72, +0x65, 0x20, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x20, 0x73, +0x6f, 0x6c, 0x75, 0xeb, 0x01, 0x70, 0x5f, 0x20, 0x0a, 0x4e, +0x6f, 0x72, 0x6d, 0x75, 0x03, 0x1c, 0x2c, 0xdc, 0x02, 0x02, +0x3f, 0x01, 0x00, 0x36, 0x00, 0x01, 0x68, 0x02, 0x00, 0x5e, +0x00, 0x05, 0x92, 0x09, 0x21, 0x69, 0x74, 0x8c, 0x06, 0x00, +0x0f, 0x06, 0x02, 0x61, 0x0c, 0x21, 0x6f, 0x6e, 0xa4, 0x0b, +0x06, 0x5a, 0x00, 0x13, 0x2e, 0xba, 0x0a, 0x12, 0x73, 0xba, +0x08, 0x61, 0x61, 0x6d, 0x62, 0x69, 0x67, 0x75, 0xff, 0x0b, +0x12, 0x65, 0x98, 0x05, 0x01, 0x07, 0x04, 0x1c, 0x62, 0x97, +0x01, 0x05, 0x61, 0x01, 0x00, 0x55, 0x0c, 0xa5, 0x74, 0x6c, +0x65, 0x2c, 0x20, 0x73, 0x6f, 0x20, 0x69, 0x66, 0xab, 0x0a, +0x05, 0x41, 0x04, 0x00, 0xaf, 0x06, 0x00, 0xce, 0x08, 0x02, +0x9e, 0x0b, 0x62, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x9f, +0x01, 0x70, 0x72, 0x69, 0x73, 0x6b, 0x20, 0x68, 0x61, 0x8d, +0x08, 0x06, 0x77, 0x00, 0x04, 0xba, 0x00, 0xb1, 0x2e, 0x20, +0x41, 0x6c, 0x73, 0x6f, 0x2c, 0x20, 0x66, 0x69, 0x6e, 0x6c, +0x02, 0x54, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0xf0, 0x07, 0x42, +0x73, 0x69, 0x62, 0x6c, 0xc2, 0x00, 0x09, 0xa2, 0x00, 0x20, +0x61, 0x6e, 0x9a, 0x02, 0x01, 0x87, 0x07, 0x50, 0x61, 0x6c, +0x20, 0x63, 0x68, 0x90, 0x04, 0x30, 0x6e, 0x67, 0x65, 0xd1, +0x03, 0x02, 0x1c, 0x00, 0x10, 0x76, 0xcb, 0x06, 0x11, 0x64, +0x09, 0x02, 0x00, 0xcc, 0x03, 0x30, 0x54, 0x75, 0x72, 0x00, +0x05, 0x05, 0x9e, 0x00, 0x03, 0x02, 0x06, 0x00, 0x4f, 0x00, +0x03, 0x0c, 0x0c, 0x73, 0x70, 0x65, 0x65, 0x64, 0x20, 0x75, +0x70, 0x95, 0x00, 0x06, 0x7b, 0x03, 0x50, 0x6e, 0x2e, 0x20, +0x0a, 0x00, }; -const unsigned short help_text_len = 3534; +const unsigned short help_text_len = 3533; const char quick_help_text[] = "Divide the grid into rectangles with areas equal to the numbers."; diff --git a/apps/plugins/puzzles/help/samegame.c b/apps/plugins/puzzles/help/samegame.c index e9cac91bde..6f45c4b1e9 100644 --- a/apps/plugins/puzzles/help/samegame.c +++ b/apps/plugins/puzzles/help/samegame.c @@ -1,4 +1,4 @@ -/* auto-generated on Aug 16 2017 by genhelp.sh */ +/* auto-generated on Oct 23 2017 by genhelp.sh */ /* orig 2464 comp 1626 ratio 0.659903 level 11 saved 838 */ /* DO NOT EDIT! */ diff --git a/apps/plugins/puzzles/help/signpost.c b/apps/plugins/puzzles/help/signpost.c index 8e5cffdf27..d57da481de 100644 --- a/apps/plugins/puzzles/help/signpost.c +++ b/apps/plugins/puzzles/help/signpost.c @@ -1,4 +1,4 @@ -/* auto-generated on Aug 16 2017 by genhelp.sh */ +/* auto-generated on Oct 23 2017 by genhelp.sh */ /* orig 3045 comp 1899 ratio 0.623645 level 11 saved 1146 */ /* DO NOT EDIT! */ diff --git a/apps/plugins/puzzles/help/singles.c b/apps/plugins/puzzles/help/singles.c index 9dfeb2132a..81de65dd67 100644 --- a/apps/plugins/puzzles/help/singles.c +++ b/apps/plugins/puzzles/help/singles.c @@ -1,4 +1,4 @@ -/* auto-generated on Aug 16 2017 by genhelp.sh */ +/* auto-generated on Oct 23 2017 by genhelp.sh */ /* orig 1385 comp 1059 ratio 0.764621 level 11 saved 326 */ /* DO NOT EDIT! */ diff --git a/apps/plugins/puzzles/help/sixteen.c b/apps/plugins/puzzles/help/sixteen.c index e0b5981f64..cd2d9ebfc0 100644 --- a/apps/plugins/puzzles/help/sixteen.c +++ b/apps/plugins/puzzles/help/sixteen.c @@ -1,4 +1,4 @@ -/* auto-generated on Aug 16 2017 by genhelp.sh */ +/* auto-generated on Oct 23 2017 by genhelp.sh */ /* orig 2533 comp 1760 ratio 0.694828 level 11 saved 773 */ /* DO NOT EDIT! */ diff --git a/apps/plugins/puzzles/help/slant.c b/apps/plugins/puzzles/help/slant.c index c1531381dc..8814960d2d 100644 --- a/apps/plugins/puzzles/help/slant.c +++ b/apps/plugins/puzzles/help/slant.c @@ -1,4 +1,4 @@ -/* auto-generated on Aug 16 2017 by genhelp.sh */ +/* auto-generated on Oct 23 2017 by genhelp.sh */ /* orig 2374 comp 1659 ratio 0.698821 level 11 saved 715 */ /* DO NOT EDIT! */ diff --git a/apps/plugins/puzzles/help/solo.c b/apps/plugins/puzzles/help/solo.c index 12ca46862d..8efb2a9308 100644 --- a/apps/plugins/puzzles/help/solo.c +++ b/apps/plugins/puzzles/help/solo.c @@ -1,4 +1,4 @@ -/* auto-generated on Aug 16 2017 by genhelp.sh */ +/* auto-generated on Oct 23 2017 by genhelp.sh */ /* orig 6245 comp 3641 ratio 0.583026 level 11 saved 2604 */ /* DO NOT EDIT! */ diff --git a/apps/plugins/puzzles/help/tents.c b/apps/plugins/puzzles/help/tents.c index cb4b288d3e..3631abdeac 100644 --- a/apps/plugins/puzzles/help/tents.c +++ b/apps/plugins/puzzles/help/tents.c @@ -1,4 +1,4 @@ -/* auto-generated on Aug 16 2017 by genhelp.sh */ +/* auto-generated on Oct 23 2017 by genhelp.sh */ /* orig 2139 comp 1397 ratio 0.653109 level 11 saved 742 */ /* DO NOT EDIT! */ diff --git a/apps/plugins/puzzles/help/towers.c b/apps/plugins/puzzles/help/towers.c index f3812bc409..98a26949bf 100644 --- a/apps/plugins/puzzles/help/towers.c +++ b/apps/plugins/puzzles/help/towers.c @@ -1,4 +1,4 @@ -/* auto-generated on Aug 16 2017 by genhelp.sh */ +/* auto-generated on Oct 23 2017 by genhelp.sh */ /* orig 3527 comp 2209 ratio 0.626311 level 11 saved 1318 */ /* DO NOT EDIT! */ diff --git a/apps/plugins/puzzles/help/tracks.c b/apps/plugins/puzzles/help/tracks.c index df192e3b59..400c02bbf1 100644 --- a/apps/plugins/puzzles/help/tracks.c +++ b/apps/plugins/puzzles/help/tracks.c @@ -1,4 +1,4 @@ -/* auto-generated on Aug 16 2017 by genhelp.sh */ +/* auto-generated on Oct 23 2017 by genhelp.sh */ /* orig 1858 comp 1275 ratio 0.686222 level 11 saved 583 */ /* DO NOT EDIT! */ diff --git a/apps/plugins/puzzles/help/twiddle.c b/apps/plugins/puzzles/help/twiddle.c index a9aaf4182f..3132a59c23 100644 --- a/apps/plugins/puzzles/help/twiddle.c +++ b/apps/plugins/puzzles/help/twiddle.c @@ -1,4 +1,4 @@ -/* auto-generated on Aug 16 2017 by genhelp.sh */ +/* auto-generated on Oct 23 2017 by genhelp.sh */ /* orig 2914 comp 1863 ratio 0.639327 level 11 saved 1051 */ /* DO NOT EDIT! */ diff --git a/apps/plugins/puzzles/help/undead.c b/apps/plugins/puzzles/help/undead.c index d3590996f1..b0ad6e4d71 100644 --- a/apps/plugins/puzzles/help/undead.c +++ b/apps/plugins/puzzles/help/undead.c @@ -1,4 +1,4 @@ -/* auto-generated on Aug 16 2017 by genhelp.sh */ +/* auto-generated on Oct 23 2017 by genhelp.sh */ /* orig 3275 comp 2117 ratio 0.646412 level 11 saved 1158 */ /* DO NOT EDIT! */ diff --git a/apps/plugins/puzzles/help/unequal.c b/apps/plugins/puzzles/help/unequal.c index 9d5712c073..a6b1c4a6b6 100644 --- a/apps/plugins/puzzles/help/unequal.c +++ b/apps/plugins/puzzles/help/unequal.c @@ -1,4 +1,4 @@ -/* auto-generated on Aug 16 2017 by genhelp.sh */ +/* auto-generated on Oct 23 2017 by genhelp.sh */ /* orig 3917 comp 2359 ratio 0.602247 level 11 saved 1558 */ /* DO NOT EDIT! */ diff --git a/apps/plugins/puzzles/help/unruly.c b/apps/plugins/puzzles/help/unruly.c index 07355e56db..baa0bfe6d4 100644 --- a/apps/plugins/puzzles/help/unruly.c +++ b/apps/plugins/puzzles/help/unruly.c @@ -1,4 +1,4 @@ -/* auto-generated on Aug 16 2017 by genhelp.sh */ +/* auto-generated on Oct 23 2017 by genhelp.sh */ /* orig 1684 comp 1231 ratio 0.730998 level 11 saved 453 */ /* DO NOT EDIT! */ diff --git a/apps/plugins/puzzles/help/untangle.c b/apps/plugins/puzzles/help/untangle.c index b6b398c65b..c75520a021 100644 --- a/apps/plugins/puzzles/help/untangle.c +++ b/apps/plugins/puzzles/help/untangle.c @@ -1,4 +1,4 @@ -/* auto-generated on Aug 16 2017 by genhelp.sh */ +/* auto-generated on Oct 23 2017 by genhelp.sh */ /* orig 747 comp 620 ratio 0.829987 level 4 saved 127 */ /* DO NOT EDIT! */ diff --git a/apps/plugins/puzzles/src/Buildscr b/apps/plugins/puzzles/src/Buildscr index b8a585b43e..4a54d277ff 100644 --- a/apps/plugins/puzzles/src/Buildscr +++ b/apps/plugins/puzzles/src/Buildscr @@ -25,7 +25,7 @@ in puzzles do echo '$#define VER "Version $(Version)"' >> version.h in puzzles do perl -i -pe 's/Unidentified build/$(Version)/' osx-info.plist # First build some local binaries, to run the icon build. -in puzzles do perl mkfiles.pl -U +in puzzles do perl mkfiles.pl -U CFLAGS='-Wwrite-strings -Werror' in puzzles do make # Now build the screenshots and icons. @@ -45,7 +45,7 @@ in puzzles do ./mkauto.sh # Build the OS X .dmg archive. delegate osx in puzzles do make -f Makefile.osx clean - in puzzles do make -f Makefile.osx release VER=-DVER=$(Version) + in puzzles do make -f Makefile.osx release VER=-DVER=$(Version) XFLAGS='-Wwrite-strings -Werror' return puzzles/Puzzles.dmg enddelegate @@ -56,7 +56,7 @@ in puzzles do mason.pl --args '{"version":"$(Version)","descfile":"gamedesc.txt" in puzzles do perl winiss.pl $(Version) gamedesc.txt > puzzles.iss ifneq "$(VISUAL_STUDIO)" "yes" then in puzzles with clangcl64 do Platform=x64 make -f Makefile.clangcl clean - in puzzles with clangcl64 do Platform=x64 make -f Makefile.clangcl VER=-DVER=$(Version) + in puzzles with clangcl64 do Platform=x64 make -f Makefile.clangcl VER=-DVER=$(Version) XFLAGS='-Wwrite-strings -Werror' # Code-sign the binaries, if the local bob config provides a script # to do so. We assume here that the script accepts an -i option to # provide a 'more info' URL, and an optional -n option to provide a @@ -144,7 +144,7 @@ ifneq "$(JAVA_UNFINISHED)" "" in puzzles do perl mkfiles.pl # Build the Java applets. delegate nestedvm - in puzzles do make -f Makefile.nestedvm NESTEDVM="$$NESTEDVM" VER=-DVER=$(Version) + in puzzles do make -f Makefile.nestedvm NESTEDVM="$$NESTEDVM" VER=-DVER=$(Version) XFLAGS="-Wwrite-strings -Werror" return puzzles/*.jar enddelegate @@ -154,7 +154,7 @@ enddelegate in puzzles do mkdir js # so we can tell output .js files from emcc*.js delegate emscripten in puzzles do make -f Makefile.emcc OUTPREFIX=js/ clean - in puzzles do make -f Makefile.emcc OUTPREFIX=js/ + in puzzles do make -f Makefile.emcc OUTPREFIX=js/ XFLAGS="-Wwrite-strings -Werror" return puzzles/js/*.js enddelegate diff --git a/apps/plugins/puzzles/src/Makefile b/apps/plugins/puzzles/src/Makefile index 09acd2dd39..a0fc6c5e74 100644 --- a/apps/plugins/puzzles/src/Makefile +++ b/apps/plugins/puzzles/src/Makefile @@ -1,719 +1,2603 @@ -# Makefile for puzzles under X/GTK and Unix. +# Makefile.in generated by automake 1.15.1 from Makefile.am. +# Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2017 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + +# Makefile.am for puzzles under Unix with Autoconf/Automake. # # This file was created by `mkfiles.pl' from the `Recipe' file. # DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead. -# You can define this path to point at your tools if you need to -# TOOLPATH = /opt/gcc/bin -CC := $(TOOLPATH)$(CC) -# You can manually set this to `gtk-config' or `pkg-config gtk+-1.2' -# (depending on what works on your system) if you want to enforce -# building with GTK 1.2, or you can set it to `pkg-config gtk+-2.0' -# if you want to enforce 2.0. The default is to try 2.0 and fall back -# to 1.2 if it isn't found. -GTK_CONFIG = sh -c 'pkg-config gtk+-2.0 $$0 2>/dev/null || gtk-config $$0' - -CFLAGS := -O2 -Wall -ansi -pedantic -g -I./ -Iicons/ `$(GTK_CONFIG) \ - --cflags` $(CFLAGS) -XLIBS = `$(GTK_CONFIG) --libs` -lm -ULIBS = -lm# -INSTALL=install -INSTALL_PROGRAM=$(INSTALL) -INSTALL_DATA=$(INSTALL) -prefix=/usr/local -exec_prefix=$(prefix) -bindir=$(exec_prefix)/bin -gamesdir=$(exec_prefix)/games -mandir=$(prefix)/man -man1dir=$(mandir)/man1 - -all: $(BINPREFIX)blackbox $(BINPREFIX)bridges $(BINPREFIX)cube \ - $(BINPREFIX)dominosa $(BINPREFIX)fifteen \ - $(BINPREFIX)fifteensolver $(BINPREFIX)filling \ - $(BINPREFIX)fillingsolver $(BINPREFIX)flip $(BINPREFIX)flood \ - $(BINPREFIX)galaxies $(BINPREFIX)galaxiespicture \ - $(BINPREFIX)galaxiessolver $(BINPREFIX)guess \ - $(BINPREFIX)inertia $(BINPREFIX)keen $(BINPREFIX)keensolver \ - $(BINPREFIX)latincheck $(BINPREFIX)lightup \ - $(BINPREFIX)lightupsolver $(BINPREFIX)loopy \ - $(BINPREFIX)loopysolver $(BINPREFIX)magnets \ - $(BINPREFIX)magnetssolver $(BINPREFIX)map \ - $(BINPREFIX)mapsolver $(BINPREFIX)mineobfusc \ - $(BINPREFIX)mines $(BINPREFIX)net $(BINPREFIX)netslide \ - $(BINPREFIX)nullgame $(BINPREFIX)obfusc $(BINPREFIX)palisade \ - $(BINPREFIX)pattern $(BINPREFIX)patternpicture \ - $(BINPREFIX)patternsolver $(BINPREFIX)pearl \ - $(BINPREFIX)pearlbench $(BINPREFIX)pegs $(BINPREFIX)range \ - $(BINPREFIX)rect $(BINPREFIX)samegame $(BINPREFIX)signpost \ - $(BINPREFIX)signpostsolver $(BINPREFIX)singles \ - $(BINPREFIX)singlessolver $(BINPREFIX)sixteen \ - $(BINPREFIX)slant $(BINPREFIX)slantsolver $(BINPREFIX)solo \ - $(BINPREFIX)solosolver $(BINPREFIX)tents \ - $(BINPREFIX)tentssolver $(BINPREFIX)towers \ - $(BINPREFIX)towerssolver $(BINPREFIX)tracks \ - $(BINPREFIX)twiddle $(BINPREFIX)undead $(BINPREFIX)unequal \ - $(BINPREFIX)unequalsolver $(BINPREFIX)unruly \ - $(BINPREFIX)unrulysolver $(BINPREFIX)untangle - -$(BINPREFIX)blackbox: blackbox.o drawing.o gtk.o malloc.o midend.o misc.o \ - no-icon.o printing.o ps.o random.o version.o - $(CC) -o $@ blackbox.o drawing.o gtk.o malloc.o midend.o misc.o \ - no-icon.o printing.o ps.o random.o version.o $(XLFLAGS) \ - $(XLIBS) - -$(BINPREFIX)bridges: bridges.o drawing.o dsf.o findloop.o gtk.o malloc.o \ - midend.o misc.o no-icon.o printing.o ps.o random.o version.o - $(CC) -o $@ bridges.o drawing.o dsf.o findloop.o gtk.o malloc.o \ - midend.o misc.o no-icon.o printing.o ps.o random.o version.o \ - $(XLFLAGS) $(XLIBS) - -$(BINPREFIX)cube: cube.o drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \ - printing.o ps.o random.o version.o - $(CC) -o $@ cube.o drawing.o gtk.o malloc.o midend.o misc.o \ - no-icon.o printing.o ps.o random.o version.o $(XLFLAGS) \ - $(XLIBS) - -$(BINPREFIX)dominosa: dominosa.o drawing.o gtk.o laydomino.o malloc.o \ - midend.o misc.o no-icon.o printing.o ps.o random.o version.o - $(CC) -o $@ dominosa.o drawing.o gtk.o laydomino.o malloc.o midend.o \ - misc.o no-icon.o printing.o ps.o random.o version.o \ - $(XLFLAGS) $(XLIBS) - -$(BINPREFIX)fifteen: drawing.o fifteen.o gtk.o malloc.o midend.o misc.o \ - no-icon.o printing.o ps.o random.o version.o - $(CC) -o $@ drawing.o fifteen.o gtk.o malloc.o midend.o misc.o \ - no-icon.o printing.o ps.o random.o version.o $(XLFLAGS) \ - $(XLIBS) - -$(BINPREFIX)fifteensolver: fifteen2.o malloc.o misc.o nullfe.o random.o - $(CC) -o $@ fifteen2.o malloc.o misc.o nullfe.o random.o $(XLFLAGS) \ - $(ULIBS) - -$(BINPREFIX)filling: drawing.o dsf.o filling.o gtk.o malloc.o midend.o \ - misc.o no-icon.o printing.o ps.o random.o version.o - $(CC) -o $@ drawing.o dsf.o filling.o gtk.o malloc.o midend.o misc.o \ - no-icon.o printing.o ps.o random.o version.o $(XLFLAGS) \ - $(XLIBS) - -$(BINPREFIX)fillingsolver: dsf.o filling2.o malloc.o misc.o nullfe.o \ - random.o - $(CC) -o $@ dsf.o filling2.o malloc.o misc.o nullfe.o random.o \ - $(XLFLAGS) $(ULIBS) - -$(BINPREFIX)flip: drawing.o flip.o gtk.o malloc.o midend.o misc.o no-icon.o \ - printing.o ps.o random.o tree234.o version.o - $(CC) -o $@ drawing.o flip.o gtk.o malloc.o midend.o misc.o \ - no-icon.o printing.o ps.o random.o tree234.o version.o \ - $(XLFLAGS) $(XLIBS) - -$(BINPREFIX)flood: drawing.o flood.o gtk.o malloc.o midend.o misc.o \ - no-icon.o printing.o ps.o random.o version.o - $(CC) -o $@ drawing.o flood.o gtk.o malloc.o midend.o misc.o \ - no-icon.o printing.o ps.o random.o version.o $(XLFLAGS) \ - $(XLIBS) - -$(BINPREFIX)galaxies: drawing.o dsf.o galaxies.o gtk.o malloc.o midend.o \ - misc.o no-icon.o printing.o ps.o random.o version.o - $(CC) -o $@ drawing.o dsf.o galaxies.o gtk.o malloc.o midend.o \ - misc.o no-icon.o printing.o ps.o random.o version.o \ - $(XLFLAGS) $(XLIBS) - -$(BINPREFIX)galaxiespicture: dsf.o galaxie4.o malloc.o misc.o nullfe.o \ - random.o - $(CC) -o $@ dsf.o galaxie4.o malloc.o misc.o nullfe.o random.o -lm \ - $(XLFLAGS) $(ULIBS) - -$(BINPREFIX)galaxiessolver: dsf.o galaxie2.o malloc.o misc.o nullfe.o \ - random.o - $(CC) -o $@ dsf.o galaxie2.o malloc.o misc.o nullfe.o random.o -lm \ - $(XLFLAGS) $(ULIBS) - -$(BINPREFIX)guess: drawing.o gtk.o guess.o malloc.o midend.o misc.o \ - no-icon.o printing.o ps.o random.o version.o - $(CC) -o $@ drawing.o gtk.o guess.o malloc.o midend.o misc.o \ - no-icon.o printing.o ps.o random.o version.o $(XLFLAGS) \ - $(XLIBS) - -$(BINPREFIX)inertia: drawing.o gtk.o inertia.o malloc.o midend.o misc.o \ - no-icon.o printing.o ps.o random.o version.o - $(CC) -o $@ drawing.o gtk.o inertia.o malloc.o midend.o misc.o \ - no-icon.o printing.o ps.o random.o version.o $(XLFLAGS) \ - $(XLIBS) - -$(BINPREFIX)keen: drawing.o dsf.o gtk.o keen.o latin.o malloc.o maxflow.o \ - midend.o misc.o no-icon.o printing.o ps.o random.o tree234.o \ - version.o - $(CC) -o $@ drawing.o dsf.o gtk.o keen.o latin.o malloc.o maxflow.o \ - midend.o misc.o no-icon.o printing.o ps.o random.o tree234.o \ - version.o $(XLFLAGS) $(XLIBS) - -$(BINPREFIX)keensolver: dsf.o keen2.o latin6.o malloc.o maxflow.o misc.o \ - nullfe.o random.o tree234.o - $(CC) -o $@ dsf.o keen2.o latin6.o malloc.o maxflow.o misc.o \ - nullfe.o random.o tree234.o $(XLFLAGS) $(ULIBS) - -$(BINPREFIX)latincheck: latin8.o malloc.o maxflow.o misc.o nullfe.o random.o \ - tree234.o - $(CC) -o $@ latin8.o malloc.o maxflow.o misc.o nullfe.o random.o \ - tree234.o $(XLFLAGS) $(ULIBS) - -$(BINPREFIX)lightup: combi.o drawing.o gtk.o lightup.o malloc.o midend.o \ - misc.o no-icon.o printing.o ps.o random.o version.o - $(CC) -o $@ combi.o drawing.o gtk.o lightup.o malloc.o midend.o \ - misc.o no-icon.o printing.o ps.o random.o version.o \ - $(XLFLAGS) $(XLIBS) - -$(BINPREFIX)lightupsolver: combi.o lightup2.o malloc.o misc.o nullfe.o \ - random.o - $(CC) -o $@ combi.o lightup2.o malloc.o misc.o nullfe.o random.o \ - $(XLFLAGS) $(ULIBS) - -$(BINPREFIX)loopy: drawing.o dsf.o grid.o gtk.o loopgen.o loopy.o malloc.o \ - midend.o misc.o no-icon.o penrose.o printing.o ps.o random.o \ - tree234.o version.o - $(CC) -o $@ drawing.o dsf.o grid.o gtk.o loopgen.o loopy.o malloc.o \ - midend.o misc.o no-icon.o penrose.o printing.o ps.o random.o \ - tree234.o version.o $(XLFLAGS) $(XLIBS) - -$(BINPREFIX)loopysolver: dsf.o grid.o loopgen.o loopy2.o malloc.o misc.o \ - nullfe.o penrose.o random.o tree234.o - $(CC) -o $@ dsf.o grid.o loopgen.o loopy2.o malloc.o misc.o nullfe.o \ - penrose.o random.o tree234.o -lm $(XLFLAGS) $(ULIBS) - -$(BINPREFIX)magnets: drawing.o gtk.o laydomino.o magnets.o malloc.o midend.o \ - misc.o no-icon.o printing.o ps.o random.o version.o - $(CC) -o $@ drawing.o gtk.o laydomino.o magnets.o malloc.o midend.o \ - misc.o no-icon.o printing.o ps.o random.o version.o \ - $(XLFLAGS) $(XLIBS) - -$(BINPREFIX)magnetssolver: laydomino.o magnets2.o malloc.o misc.o nullfe.o \ - random.o - $(CC) -o $@ laydomino.o magnets2.o malloc.o misc.o nullfe.o random.o \ - -lm $(XLFLAGS) $(ULIBS) - -$(BINPREFIX)map: drawing.o dsf.o gtk.o malloc.o map.o midend.o misc.o \ - no-icon.o printing.o ps.o random.o version.o - $(CC) -o $@ drawing.o dsf.o gtk.o malloc.o map.o midend.o misc.o \ - no-icon.o printing.o ps.o random.o version.o $(XLFLAGS) \ - $(XLIBS) - -$(BINPREFIX)mapsolver: dsf.o malloc.o map2.o misc.o nullfe.o random.o - $(CC) -o $@ dsf.o malloc.o map2.o misc.o nullfe.o random.o -lm \ - $(XLFLAGS) $(ULIBS) - -$(BINPREFIX)mineobfusc: malloc.o mines2.o misc.o nullfe.o random.o tree234.o - $(CC) -o $@ malloc.o mines2.o misc.o nullfe.o random.o tree234.o \ - $(XLFLAGS) $(ULIBS) - -$(BINPREFIX)mines: drawing.o gtk.o malloc.o midend.o mines.o misc.o \ - no-icon.o printing.o ps.o random.o tree234.o version.o - $(CC) -o $@ drawing.o gtk.o malloc.o midend.o mines.o misc.o \ - no-icon.o printing.o ps.o random.o tree234.o version.o \ - $(XLFLAGS) $(XLIBS) - -$(BINPREFIX)net: drawing.o dsf.o findloop.o gtk.o malloc.o midend.o misc.o \ - net.o no-icon.o printing.o ps.o random.o tree234.o version.o - $(CC) -o $@ drawing.o dsf.o findloop.o gtk.o malloc.o midend.o \ - misc.o net.o no-icon.o printing.o ps.o random.o tree234.o \ - version.o $(XLFLAGS) $(XLIBS) - -$(BINPREFIX)netslide: drawing.o gtk.o malloc.o midend.o misc.o netslide.o \ - no-icon.o printing.o ps.o random.o tree234.o version.o - $(CC) -o $@ drawing.o gtk.o malloc.o midend.o misc.o netslide.o \ - no-icon.o printing.o ps.o random.o tree234.o version.o \ - $(XLFLAGS) $(XLIBS) - -$(BINPREFIX)nullgame: drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \ - nullgame.o printing.o ps.o random.o version.o - $(CC) -o $@ drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \ - nullgame.o printing.o ps.o random.o version.o $(XLFLAGS) \ - $(XLIBS) - -$(BINPREFIX)obfusc: malloc.o misc.o nullfe.o obfusc.o random.o - $(CC) -o $@ malloc.o misc.o nullfe.o obfusc.o random.o $(XLFLAGS) \ - $(ULIBS) - -$(BINPREFIX)palisade: divvy.o drawing.o dsf.o gtk.o malloc.o midend.o misc.o \ - no-icon.o palisade.o printing.o ps.o random.o version.o - $(CC) -o $@ divvy.o drawing.o dsf.o gtk.o malloc.o midend.o misc.o \ - no-icon.o palisade.o printing.o ps.o random.o version.o \ - $(XLFLAGS) $(XLIBS) - -$(BINPREFIX)pattern: drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \ - pattern.o printing.o ps.o random.o version.o - $(CC) -o $@ drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \ - pattern.o printing.o ps.o random.o version.o $(XLFLAGS) \ - $(XLIBS) - -$(BINPREFIX)patternpicture: malloc.o misc.o nullfe.o pattern4.o random.o - $(CC) -o $@ malloc.o misc.o nullfe.o pattern4.o random.o $(XLFLAGS) \ - $(ULIBS) - -$(BINPREFIX)patternsolver: malloc.o misc.o nullfe.o pattern2.o random.o - $(CC) -o $@ malloc.o misc.o nullfe.o pattern2.o random.o $(XLFLAGS) \ - $(ULIBS) - -$(BINPREFIX)pearl: drawing.o dsf.o grid.o gtk.o loopgen.o malloc.o midend.o \ - misc.o no-icon.o pearl.o penrose.o printing.o ps.o random.o \ - tdq.o tree234.o version.o - $(CC) -o $@ drawing.o dsf.o grid.o gtk.o loopgen.o malloc.o midend.o \ - misc.o no-icon.o pearl.o penrose.o printing.o ps.o random.o \ - tdq.o tree234.o version.o $(XLFLAGS) $(XLIBS) - -$(BINPREFIX)pearlbench: dsf.o grid.o loopgen.o malloc.o misc.o nullfe.o \ - pearl2.o penrose.o random.o tdq.o tree234.o - $(CC) -o $@ dsf.o grid.o loopgen.o malloc.o misc.o nullfe.o pearl2.o \ - penrose.o random.o tdq.o tree234.o -lm $(XLFLAGS) $(ULIBS) - -$(BINPREFIX)pegs: drawing.o gtk.o malloc.o midend.o misc.o no-icon.o pegs.o \ - printing.o ps.o random.o tree234.o version.o - $(CC) -o $@ drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \ - pegs.o printing.o ps.o random.o tree234.o version.o \ - $(XLFLAGS) $(XLIBS) - -$(BINPREFIX)range: drawing.o dsf.o gtk.o malloc.o midend.o misc.o no-icon.o \ - printing.o ps.o random.o range.o version.o - $(CC) -o $@ drawing.o dsf.o gtk.o malloc.o midend.o misc.o no-icon.o \ - printing.o ps.o random.o range.o version.o $(XLFLAGS) \ - $(XLIBS) - -$(BINPREFIX)rect: drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \ - printing.o ps.o random.o rect.o version.o - $(CC) -o $@ drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \ - printing.o ps.o random.o rect.o version.o $(XLFLAGS) \ - $(XLIBS) - -$(BINPREFIX)samegame: drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \ - printing.o ps.o random.o samegame.o version.o - $(CC) -o $@ drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \ - printing.o ps.o random.o samegame.o version.o $(XLFLAGS) \ - $(XLIBS) - -$(BINPREFIX)signpost: drawing.o dsf.o gtk.o malloc.o midend.o misc.o \ - no-icon.o printing.o ps.o random.o signpost.o version.o - $(CC) -o $@ drawing.o dsf.o gtk.o malloc.o midend.o misc.o no-icon.o \ - printing.o ps.o random.o signpost.o version.o $(XLFLAGS) \ - $(XLIBS) - -$(BINPREFIX)signpostsolver: dsf.o malloc.o misc.o nullfe.o random.o \ - signpos2.o - $(CC) -o $@ dsf.o malloc.o misc.o nullfe.o random.o signpos2.o -lm \ - $(XLFLAGS) $(ULIBS) - -$(BINPREFIX)singles: drawing.o dsf.o gtk.o latin.o malloc.o maxflow.o \ - midend.o misc.o no-icon.o printing.o ps.o random.o singles.o \ - tree234.o version.o - $(CC) -o $@ drawing.o dsf.o gtk.o latin.o malloc.o maxflow.o \ - midend.o misc.o no-icon.o printing.o ps.o random.o singles.o \ - tree234.o version.o $(XLFLAGS) $(XLIBS) - -$(BINPREFIX)singlessolver: dsf.o latin.o malloc.o maxflow.o misc.o nullfe.o \ - random.o singles3.o tree234.o - $(CC) -o $@ dsf.o latin.o malloc.o maxflow.o misc.o nullfe.o \ - random.o singles3.o tree234.o $(XLFLAGS) $(ULIBS) - -$(BINPREFIX)sixteen: drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \ - printing.o ps.o random.o sixteen.o version.o - $(CC) -o $@ drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \ - printing.o ps.o random.o sixteen.o version.o $(XLFLAGS) \ - $(XLIBS) - -$(BINPREFIX)slant: drawing.o dsf.o findloop.o gtk.o malloc.o midend.o misc.o \ - no-icon.o printing.o ps.o random.o slant.o version.o - $(CC) -o $@ drawing.o dsf.o findloop.o gtk.o malloc.o midend.o \ - misc.o no-icon.o printing.o ps.o random.o slant.o version.o \ - $(XLFLAGS) $(XLIBS) - -$(BINPREFIX)slantsolver: dsf.o findloop.o malloc.o misc.o nullfe.o random.o \ - slant2.o - $(CC) -o $@ dsf.o findloop.o malloc.o misc.o nullfe.o random.o \ - slant2.o $(XLFLAGS) $(ULIBS) - -$(BINPREFIX)solo: divvy.o drawing.o dsf.o gtk.o malloc.o midend.o misc.o \ - no-icon.o printing.o ps.o random.o solo.o version.o - $(CC) -o $@ divvy.o drawing.o dsf.o gtk.o malloc.o midend.o misc.o \ - no-icon.o printing.o ps.o random.o solo.o version.o \ - $(XLFLAGS) $(XLIBS) - -$(BINPREFIX)solosolver: divvy.o dsf.o malloc.o misc.o nullfe.o random.o \ - solo2.o - $(CC) -o $@ divvy.o dsf.o malloc.o misc.o nullfe.o random.o solo2.o \ - $(XLFLAGS) $(ULIBS) - -$(BINPREFIX)tents: drawing.o dsf.o gtk.o malloc.o maxflow.o midend.o misc.o \ - no-icon.o printing.o ps.o random.o tents.o version.o - $(CC) -o $@ drawing.o dsf.o gtk.o malloc.o maxflow.o midend.o misc.o \ - no-icon.o printing.o ps.o random.o tents.o version.o \ - $(XLFLAGS) $(XLIBS) - -$(BINPREFIX)tentssolver: dsf.o malloc.o maxflow.o misc.o nullfe.o random.o \ - tents3.o - $(CC) -o $@ dsf.o malloc.o maxflow.o misc.o nullfe.o random.o \ - tents3.o $(XLFLAGS) $(ULIBS) - -$(BINPREFIX)towers: drawing.o gtk.o latin.o malloc.o maxflow.o midend.o \ - misc.o no-icon.o printing.o ps.o random.o towers.o tree234.o \ - version.o - $(CC) -o $@ drawing.o gtk.o latin.o malloc.o maxflow.o midend.o \ - misc.o no-icon.o printing.o ps.o random.o towers.o tree234.o \ - version.o $(XLFLAGS) $(XLIBS) - -$(BINPREFIX)towerssolver: latin6.o malloc.o maxflow.o misc.o nullfe.o \ - random.o towers2.o tree234.o - $(CC) -o $@ latin6.o malloc.o maxflow.o misc.o nullfe.o random.o \ - towers2.o tree234.o $(XLFLAGS) $(ULIBS) - -$(BINPREFIX)tracks: drawing.o dsf.o findloop.o gtk.o malloc.o midend.o \ - misc.o no-icon.o printing.o ps.o random.o tracks.o version.o - $(CC) -o $@ drawing.o dsf.o findloop.o gtk.o malloc.o midend.o \ - misc.o no-icon.o printing.o ps.o random.o tracks.o version.o \ - $(XLFLAGS) $(XLIBS) - -$(BINPREFIX)twiddle: drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \ - printing.o ps.o random.o twiddle.o version.o - $(CC) -o $@ drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \ - printing.o ps.o random.o twiddle.o version.o $(XLFLAGS) \ - $(XLIBS) - -$(BINPREFIX)undead: drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \ - printing.o ps.o random.o undead.o version.o - $(CC) -o $@ drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \ - printing.o ps.o random.o undead.o version.o $(XLFLAGS) \ - $(XLIBS) - -$(BINPREFIX)unequal: drawing.o gtk.o latin.o malloc.o maxflow.o midend.o \ - misc.o no-icon.o printing.o ps.o random.o tree234.o \ - unequal.o version.o - $(CC) -o $@ drawing.o gtk.o latin.o malloc.o maxflow.o midend.o \ - misc.o no-icon.o printing.o ps.o random.o tree234.o \ - unequal.o version.o $(XLFLAGS) $(XLIBS) - -$(BINPREFIX)unequalsolver: latin6.o malloc.o maxflow.o misc.o nullfe.o \ - random.o tree234.o unequal2.o - $(CC) -o $@ latin6.o malloc.o maxflow.o misc.o nullfe.o random.o \ - tree234.o unequal2.o $(XLFLAGS) $(ULIBS) - -$(BINPREFIX)unruly: drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \ - printing.o ps.o random.o unruly.o version.o - $(CC) -o $@ drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \ - printing.o ps.o random.o unruly.o version.o $(XLFLAGS) \ - $(XLIBS) - -$(BINPREFIX)unrulysolver: malloc.o misc.o nullfe.o random.o unruly2.o - $(CC) -o $@ malloc.o misc.o nullfe.o random.o unruly2.o $(XLFLAGS) \ - $(ULIBS) - -$(BINPREFIX)untangle: drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \ - printing.o ps.o random.o tree234.o untangle.o version.o - $(CC) -o $@ drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \ - printing.o ps.o random.o tree234.o untangle.o version.o \ - $(XLFLAGS) $(XLIBS) - -blackbox.o: ./blackbox.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -blackbo3.o: ./blackbox.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ -bridges.o: ./bridges.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -bridges3.o: ./bridges.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ -combi.o: ./combi.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -cube.o: ./cube.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -cube3.o: ./cube.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ -divvy.o: ./divvy.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -dominosa.o: ./dominosa.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -dominos3.o: ./dominosa.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ -drawing.o: ./drawing.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -dsf.o: ./dsf.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -fifteen.o: ./fifteen.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -fifteen5.o: ./fifteen.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ -fifteen2.o: ./fifteen.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ -filling.o: ./filling.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -filling5.o: ./filling.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ -filling2.o: ./filling.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ -findloop.o: ./findloop.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -flip.o: ./flip.c ./puzzles.h ./tree234.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -flip3.o: ./flip.c ./puzzles.h ./tree234.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ -flood.o: ./flood.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -flood3.o: ./flood.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ -galaxies.o: ./galaxies.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -galaxie7.o: ./galaxies.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ -galaxie4.o: ./galaxies.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_PICTURE_GENERATOR -c $< -o $@ -galaxie2.o: ./galaxies.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ -grid.o: ./grid.c ./puzzles.h ./tree234.h ./grid.h ./penrose.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -gtk.o: ./gtk.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -guess.o: ./guess.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -guess3.o: ./guess.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ -inertia.o: ./inertia.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -inertia3.o: ./inertia.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ -keen.o: ./keen.c ./puzzles.h ./latin.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -keen5.o: ./keen.c ./puzzles.h ./latin.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ -keen2.o: ./keen.c ./puzzles.h ./latin.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ -latin.o: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h ./latin.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -latin8.o: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h ./latin.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_LATIN_TEST -c $< -o $@ -latin6.o: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h ./latin.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ -laydomino.o: ./laydomino.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -lightup.o: ./lightup.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -lightup5.o: ./lightup.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ -lightup2.o: ./lightup.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ -list.o: ./list.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -loopgen.o: ./loopgen.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -loopy.o: ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -loopy5.o: ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ -loopy2.o: ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ -magnets.o: ./magnets.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -magnets5.o: ./magnets.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ -magnets2.o: ./magnets.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ -malloc.o: ./malloc.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -map.o: ./map.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -map5.o: ./map.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ -map2.o: ./map.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ -maxflow.o: ./maxflow.c ./maxflow.h ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -midend.o: ./midend.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -mines.o: ./mines.c ./tree234.h ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -mines5.o: ./mines.c ./tree234.h ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ -mines2.o: ./mines.c ./tree234.h ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_OBFUSCATOR -c $< -o $@ -misc.o: ./misc.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -net.o: ./net.c ./puzzles.h ./tree234.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -net3.o: ./net.c ./puzzles.h ./tree234.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ -netslide.o: ./netslide.c ./puzzles.h ./tree234.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -netslid3.o: ./netslide.c ./puzzles.h ./tree234.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ -no-icon.o: ./no-icon.c - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -nullfe.o: ./nullfe.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -nullgame.o: ./nullgame.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -obfusc.o: ./obfusc.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -osx.o: ./osx.m ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -palisade.o: ./palisade.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -palisad3.o: ./palisade.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ -pattern.o: ./pattern.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -pattern7.o: ./pattern.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ -pattern4.o: ./pattern.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_PICTURE_GENERATOR -c $< -o $@ -pattern2.o: ./pattern.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ -pearl.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -pearl5.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ -pearl2.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ -pegs.o: ./pegs.c ./puzzles.h ./tree234.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -pegs3.o: ./pegs.c ./puzzles.h ./tree234.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ -penrose.o: ./penrose.c ./puzzles.h ./penrose.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -printing.o: ./printing.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -ps.o: ./ps.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -random.o: ./random.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -range.o: ./range.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -range3.o: ./range.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ -rect.o: ./rect.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -rect3.o: ./rect.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ -samegame.o: ./samegame.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -samegam3.o: ./samegame.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ -signpost.o: ./signpost.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -signpos5.o: ./signpost.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ -signpos2.o: ./signpost.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ -singles.o: ./singles.c ./puzzles.h ./latin.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -singles5.o: ./singles.c ./puzzles.h ./latin.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ -singles3.o: ./singles.c ./puzzles.h ./latin.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ -sixteen.o: ./sixteen.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -sixteen3.o: ./sixteen.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ -slant.o: ./slant.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -slant5.o: ./slant.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ -slant2.o: ./slant.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ -solo.o: ./solo.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -solo5.o: ./solo.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ -solo2.o: ./solo.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ -tdq.o: ./tdq.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -tents.o: ./tents.c ./puzzles.h ./maxflow.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -tents5.o: ./tents.c ./puzzles.h ./maxflow.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ -tents3.o: ./tents.c ./puzzles.h ./maxflow.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ -towers.o: ./towers.c ./puzzles.h ./latin.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -towers5.o: ./towers.c ./puzzles.h ./latin.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ -towers2.o: ./towers.c ./puzzles.h ./latin.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ -tracks.o: ./tracks.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -tracks3.o: ./tracks.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ -tree234.o: ./tree234.c ./tree234.h ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -twiddle.o: ./twiddle.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -twiddle3.o: ./twiddle.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ -undead.o: ./undead.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -undead3.o: ./undead.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ -unequal.o: ./unequal.c ./puzzles.h ./latin.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -unequal5.o: ./unequal.c ./puzzles.h ./latin.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ -unequal2.o: ./unequal.c ./puzzles.h ./latin.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ -unruly.o: ./unruly.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -unruly5.o: ./unruly.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ -unruly2.o: ./unruly.c ./puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ -untangle.o: ./untangle.c ./puzzles.h ./tree234.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -untangl3.o: ./untangle.c ./puzzles.h ./tree234.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ -version.o: ./version.c ./version.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -windows.o: ./windows.c ./puzzles.h ./resource.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -windows1.o: ./windows.c ./puzzles.h ./resource.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ - -GAMES += blackbox -GAMES += bridges -GAMES += cube -GAMES += dominosa -GAMES += fifteen -GAMES += filling -GAMES += flip -GAMES += flood -GAMES += galaxies -GAMES += guess -GAMES += inertia -GAMES += keen -GAMES += lightup -GAMES += loopy -GAMES += magnets -GAMES += map -GAMES += mines -GAMES += net -GAMES += netslide -GAMES += palisade -GAMES += pattern -GAMES += pearl -GAMES += pegs -GAMES += range -GAMES += rect -GAMES += samegame -GAMES += signpost -GAMES += singles -GAMES += sixteen -GAMES += slant -GAMES += solo -GAMES += tents -GAMES += towers -GAMES += tracks -GAMES += twiddle -GAMES += undead -GAMES += unequal -GAMES += unruly -GAMES += untangle -install: - for i in $(GAMES); do \ - $(INSTALL_PROGRAM) -m 755 $(BINPREFIX)$$i $(DESTDIR)$(gamesdir)/$(BINPREFIX)$$i \ - || exit 1; \ + + +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/puzzles +pkgincludedir = $(includedir)/puzzles +pkglibdir = $(libdir)/puzzles +pkglibexecdir = $(libexecdir)/puzzles +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +noinst_PROGRAMS = blackbox$(EXEEXT) bridges$(EXEEXT) cube$(EXEEXT) \ + dominosa$(EXEEXT) fifteen$(EXEEXT) fifteensolver$(EXEEXT) \ + filling$(EXEEXT) fillingsolver$(EXEEXT) flip$(EXEEXT) \ + flood$(EXEEXT) galaxies$(EXEEXT) galaxiespicture$(EXEEXT) \ + galaxiessolver$(EXEEXT) guess$(EXEEXT) inertia$(EXEEXT) \ + keen$(EXEEXT) keensolver$(EXEEXT) latincheck$(EXEEXT) \ + lightup$(EXEEXT) lightupsolver$(EXEEXT) loopy$(EXEEXT) \ + loopysolver$(EXEEXT) magnets$(EXEEXT) magnetssolver$(EXEEXT) \ + map$(EXEEXT) mapsolver$(EXEEXT) mineobfusc$(EXEEXT) \ + mines$(EXEEXT) net$(EXEEXT) netslide$(EXEEXT) \ + nullgame$(EXEEXT) obfusc$(EXEEXT) palisade$(EXEEXT) \ + pattern$(EXEEXT) patternpicture$(EXEEXT) \ + patternsolver$(EXEEXT) pearl$(EXEEXT) pearlbench$(EXEEXT) \ + pegs$(EXEEXT) range$(EXEEXT) rect$(EXEEXT) samegame$(EXEEXT) \ + signpost$(EXEEXT) signpostsolver$(EXEEXT) singles$(EXEEXT) \ + singlessolver$(EXEEXT) sixteen$(EXEEXT) slant$(EXEEXT) \ + slantsolver$(EXEEXT) solo$(EXEEXT) solosolver$(EXEEXT) \ + tents$(EXEEXT) tentssolver$(EXEEXT) towers$(EXEEXT) \ + towerssolver$(EXEEXT) tracks$(EXEEXT) twiddle$(EXEEXT) \ + undead$(EXEEXT) unequal$(EXEEXT) unequalsolver$(EXEEXT) \ + unruly$(EXEEXT) unrulysolver$(EXEEXT) untangle$(EXEEXT) +bin_PROGRAMS = $(am__EXEEXT_1) +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ + $(am__configure_deps) $(am__DIST_COMMON) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +AR = ar +ARFLAGS = cru +AM_V_AR = $(am__v_AR_$(V)) +am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY)) +am__v_AR_0 = @echo " AR " $@; +am__v_AR_1 = +libfifteen2_a_AR = $(AR) $(ARFLAGS) +libfifteen2_a_LIBADD = +am__dirstamp = $(am__leading_dot)dirstamp +am_libfifteen2_a_OBJECTS = ./libfifteen2_a-fifteen.$(OBJEXT) +libfifteen2_a_OBJECTS = $(am_libfifteen2_a_OBJECTS) +libfilling2_a_AR = $(AR) $(ARFLAGS) +libfilling2_a_LIBADD = +am_libfilling2_a_OBJECTS = ./libfilling2_a-filling.$(OBJEXT) +libfilling2_a_OBJECTS = $(am_libfilling2_a_OBJECTS) +libgalaxie2_a_AR = $(AR) $(ARFLAGS) +libgalaxie2_a_LIBADD = +am_libgalaxie2_a_OBJECTS = ./libgalaxie2_a-galaxies.$(OBJEXT) +libgalaxie2_a_OBJECTS = $(am_libgalaxie2_a_OBJECTS) +libgalaxie4_a_AR = $(AR) $(ARFLAGS) +libgalaxie4_a_LIBADD = +am_libgalaxie4_a_OBJECTS = ./libgalaxie4_a-galaxies.$(OBJEXT) +libgalaxie4_a_OBJECTS = $(am_libgalaxie4_a_OBJECTS) +libkeen2_a_AR = $(AR) $(ARFLAGS) +libkeen2_a_LIBADD = +am_libkeen2_a_OBJECTS = ./libkeen2_a-keen.$(OBJEXT) +libkeen2_a_OBJECTS = $(am_libkeen2_a_OBJECTS) +liblatin6_a_AR = $(AR) $(ARFLAGS) +liblatin6_a_LIBADD = +am_liblatin6_a_OBJECTS = ./liblatin6_a-latin.$(OBJEXT) +liblatin6_a_OBJECTS = $(am_liblatin6_a_OBJECTS) +liblatin8_a_AR = $(AR) $(ARFLAGS) +liblatin8_a_LIBADD = +am_liblatin8_a_OBJECTS = ./liblatin8_a-latin.$(OBJEXT) +liblatin8_a_OBJECTS = $(am_liblatin8_a_OBJECTS) +liblightup2_a_AR = $(AR) $(ARFLAGS) +liblightup2_a_LIBADD = +am_liblightup2_a_OBJECTS = ./liblightup2_a-lightup.$(OBJEXT) +liblightup2_a_OBJECTS = $(am_liblightup2_a_OBJECTS) +libloopy2_a_AR = $(AR) $(ARFLAGS) +libloopy2_a_LIBADD = +am_libloopy2_a_OBJECTS = ./libloopy2_a-loopy.$(OBJEXT) +libloopy2_a_OBJECTS = $(am_libloopy2_a_OBJECTS) +libmagnets2_a_AR = $(AR) $(ARFLAGS) +libmagnets2_a_LIBADD = +am_libmagnets2_a_OBJECTS = ./libmagnets2_a-magnets.$(OBJEXT) +libmagnets2_a_OBJECTS = $(am_libmagnets2_a_OBJECTS) +libmap2_a_AR = $(AR) $(ARFLAGS) +libmap2_a_LIBADD = +am_libmap2_a_OBJECTS = ./libmap2_a-map.$(OBJEXT) +libmap2_a_OBJECTS = $(am_libmap2_a_OBJECTS) +libmines2_a_AR = $(AR) $(ARFLAGS) +libmines2_a_LIBADD = +am_libmines2_a_OBJECTS = ./libmines2_a-mines.$(OBJEXT) +libmines2_a_OBJECTS = $(am_libmines2_a_OBJECTS) +libpattern2_a_AR = $(AR) $(ARFLAGS) +libpattern2_a_LIBADD = +am_libpattern2_a_OBJECTS = ./libpattern2_a-pattern.$(OBJEXT) +libpattern2_a_OBJECTS = $(am_libpattern2_a_OBJECTS) +libpattern4_a_AR = $(AR) $(ARFLAGS) +libpattern4_a_LIBADD = +am_libpattern4_a_OBJECTS = ./libpattern4_a-pattern.$(OBJEXT) +libpattern4_a_OBJECTS = $(am_libpattern4_a_OBJECTS) +libpearl2_a_AR = $(AR) $(ARFLAGS) +libpearl2_a_LIBADD = +am_libpearl2_a_OBJECTS = ./libpearl2_a-pearl.$(OBJEXT) +libpearl2_a_OBJECTS = $(am_libpearl2_a_OBJECTS) +libsignpos2_a_AR = $(AR) $(ARFLAGS) +libsignpos2_a_LIBADD = +am_libsignpos2_a_OBJECTS = ./libsignpos2_a-signpost.$(OBJEXT) +libsignpos2_a_OBJECTS = $(am_libsignpos2_a_OBJECTS) +libsingles3_a_AR = $(AR) $(ARFLAGS) +libsingles3_a_LIBADD = +am_libsingles3_a_OBJECTS = ./libsingles3_a-singles.$(OBJEXT) +libsingles3_a_OBJECTS = $(am_libsingles3_a_OBJECTS) +libslant2_a_AR = $(AR) $(ARFLAGS) +libslant2_a_LIBADD = +am_libslant2_a_OBJECTS = ./libslant2_a-slant.$(OBJEXT) +libslant2_a_OBJECTS = $(am_libslant2_a_OBJECTS) +libsolo2_a_AR = $(AR) $(ARFLAGS) +libsolo2_a_LIBADD = +am_libsolo2_a_OBJECTS = ./libsolo2_a-solo.$(OBJEXT) +libsolo2_a_OBJECTS = $(am_libsolo2_a_OBJECTS) +libtents3_a_AR = $(AR) $(ARFLAGS) +libtents3_a_LIBADD = +am_libtents3_a_OBJECTS = ./libtents3_a-tents.$(OBJEXT) +libtents3_a_OBJECTS = $(am_libtents3_a_OBJECTS) +libtowers2_a_AR = $(AR) $(ARFLAGS) +libtowers2_a_LIBADD = +am_libtowers2_a_OBJECTS = ./libtowers2_a-towers.$(OBJEXT) +libtowers2_a_OBJECTS = $(am_libtowers2_a_OBJECTS) +libunequal2_a_AR = $(AR) $(ARFLAGS) +libunequal2_a_LIBADD = +am_libunequal2_a_OBJECTS = ./libunequal2_a-unequal.$(OBJEXT) +libunequal2_a_OBJECTS = $(am_libunequal2_a_OBJECTS) +libunruly2_a_AR = $(AR) $(ARFLAGS) +libunruly2_a_LIBADD = +am_libunruly2_a_OBJECTS = ./libunruly2_a-unruly.$(OBJEXT) +libunruly2_a_OBJECTS = $(am_libunruly2_a_OBJECTS) +am__EXEEXT_1 = blackbox$(EXEEXT) bridges$(EXEEXT) cube$(EXEEXT) \ + dominosa$(EXEEXT) fifteen$(EXEEXT) filling$(EXEEXT) \ + flip$(EXEEXT) flood$(EXEEXT) galaxies$(EXEEXT) guess$(EXEEXT) \ + inertia$(EXEEXT) keen$(EXEEXT) lightup$(EXEEXT) loopy$(EXEEXT) \ + magnets$(EXEEXT) map$(EXEEXT) mines$(EXEEXT) net$(EXEEXT) \ + netslide$(EXEEXT) palisade$(EXEEXT) pattern$(EXEEXT) \ + pearl$(EXEEXT) pegs$(EXEEXT) range$(EXEEXT) rect$(EXEEXT) \ + samegame$(EXEEXT) signpost$(EXEEXT) singles$(EXEEXT) \ + sixteen$(EXEEXT) slant$(EXEEXT) solo$(EXEEXT) tents$(EXEEXT) \ + towers$(EXEEXT) tracks$(EXEEXT) twiddle$(EXEEXT) \ + undead$(EXEEXT) unequal$(EXEEXT) unruly$(EXEEXT) \ + untangle$(EXEEXT) +am__installdirs = "$(DESTDIR)$(bindir)" +PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) +am_blackbox_OBJECTS = ./blackbox.$(OBJEXT) ./drawing.$(OBJEXT) \ + ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) ./midend.$(OBJEXT) \ + ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \ + ./ps.$(OBJEXT) ./random.$(OBJEXT) ./version.$(OBJEXT) +blackbox_OBJECTS = $(am_blackbox_OBJECTS) +am__DEPENDENCIES_1 = +blackbox_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_bridges_OBJECTS = ./bridges.$(OBJEXT) ./drawing.$(OBJEXT) \ + ./dsf.$(OBJEXT) ./findloop.$(OBJEXT) ./gtk.$(OBJEXT) \ + ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \ + ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \ + ./random.$(OBJEXT) ./version.$(OBJEXT) +bridges_OBJECTS = $(am_bridges_OBJECTS) +bridges_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_cube_OBJECTS = ./cube.$(OBJEXT) ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \ + ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \ + ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \ + ./random.$(OBJEXT) ./version.$(OBJEXT) +cube_OBJECTS = $(am_cube_OBJECTS) +cube_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_dominosa_OBJECTS = ./dominosa.$(OBJEXT) ./drawing.$(OBJEXT) \ + ./gtk.$(OBJEXT) ./laydomino.$(OBJEXT) ./malloc.$(OBJEXT) \ + ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \ + ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \ + ./version.$(OBJEXT) +dominosa_OBJECTS = $(am_dominosa_OBJECTS) +dominosa_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_fifteen_OBJECTS = ./drawing.$(OBJEXT) ./fifteen.$(OBJEXT) \ + ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) ./midend.$(OBJEXT) \ + ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \ + ./ps.$(OBJEXT) ./random.$(OBJEXT) ./version.$(OBJEXT) +fifteen_OBJECTS = $(am_fifteen_OBJECTS) +fifteen_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_fifteensolver_OBJECTS = ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \ + ./nullfe.$(OBJEXT) ./random.$(OBJEXT) +fifteensolver_OBJECTS = $(am_fifteensolver_OBJECTS) +fifteensolver_DEPENDENCIES = libfifteen2_a-fifteen.$(OBJEXT) +am_filling_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \ + ./filling.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \ + ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \ + ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \ + ./version.$(OBJEXT) +filling_OBJECTS = $(am_filling_OBJECTS) +filling_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_fillingsolver_OBJECTS = ./dsf.$(OBJEXT) ./malloc.$(OBJEXT) \ + ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT) +fillingsolver_OBJECTS = $(am_fillingsolver_OBJECTS) +fillingsolver_DEPENDENCIES = libfilling2_a-filling.$(OBJEXT) +am_flip_OBJECTS = ./drawing.$(OBJEXT) ./flip.$(OBJEXT) ./gtk.$(OBJEXT) \ + ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \ + ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \ + ./random.$(OBJEXT) ./tree234.$(OBJEXT) ./version.$(OBJEXT) +flip_OBJECTS = $(am_flip_OBJECTS) +flip_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_flood_OBJECTS = ./drawing.$(OBJEXT) ./flood.$(OBJEXT) \ + ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) ./midend.$(OBJEXT) \ + ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \ + ./ps.$(OBJEXT) ./random.$(OBJEXT) ./version.$(OBJEXT) +flood_OBJECTS = $(am_flood_OBJECTS) +flood_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_galaxies_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \ + ./galaxies.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \ + ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \ + ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \ + ./version.$(OBJEXT) +galaxies_OBJECTS = $(am_galaxies_OBJECTS) +galaxies_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_galaxiespicture_OBJECTS = ./dsf.$(OBJEXT) ./malloc.$(OBJEXT) \ + ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT) +galaxiespicture_OBJECTS = $(am_galaxiespicture_OBJECTS) +galaxiespicture_DEPENDENCIES = libgalaxie4_a-galaxies.$(OBJEXT) +am_galaxiessolver_OBJECTS = ./dsf.$(OBJEXT) ./malloc.$(OBJEXT) \ + ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT) +galaxiessolver_OBJECTS = $(am_galaxiessolver_OBJECTS) +galaxiessolver_DEPENDENCIES = libgalaxie2_a-galaxies.$(OBJEXT) +am_guess_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \ + ./guess.$(OBJEXT) ./malloc.$(OBJEXT) ./midend.$(OBJEXT) \ + ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \ + ./ps.$(OBJEXT) ./random.$(OBJEXT) ./version.$(OBJEXT) +guess_OBJECTS = $(am_guess_OBJECTS) +guess_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_inertia_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \ + ./inertia.$(OBJEXT) ./malloc.$(OBJEXT) ./midend.$(OBJEXT) \ + ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \ + ./ps.$(OBJEXT) ./random.$(OBJEXT) ./version.$(OBJEXT) +inertia_OBJECTS = $(am_inertia_OBJECTS) +inertia_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_keen_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) ./gtk.$(OBJEXT) \ + ./keen.$(OBJEXT) ./latin.$(OBJEXT) ./malloc.$(OBJEXT) \ + ./maxflow.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \ + ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \ + ./random.$(OBJEXT) ./tree234.$(OBJEXT) ./version.$(OBJEXT) +keen_OBJECTS = $(am_keen_OBJECTS) +keen_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_keensolver_OBJECTS = ./dsf.$(OBJEXT) ./malloc.$(OBJEXT) \ + ./maxflow.$(OBJEXT) ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) \ + ./random.$(OBJEXT) ./tree234.$(OBJEXT) +keensolver_OBJECTS = $(am_keensolver_OBJECTS) +keensolver_DEPENDENCIES = libkeen2_a-keen.$(OBJEXT) \ + liblatin6_a-latin.$(OBJEXT) +am_latincheck_OBJECTS = ./malloc.$(OBJEXT) ./maxflow.$(OBJEXT) \ + ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT) \ + ./tree234.$(OBJEXT) +latincheck_OBJECTS = $(am_latincheck_OBJECTS) +latincheck_DEPENDENCIES = liblatin8_a-latin.$(OBJEXT) +am_lightup_OBJECTS = ./combi.$(OBJEXT) ./drawing.$(OBJEXT) \ + ./gtk.$(OBJEXT) ./lightup.$(OBJEXT) ./malloc.$(OBJEXT) \ + ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \ + ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \ + ./version.$(OBJEXT) +lightup_OBJECTS = $(am_lightup_OBJECTS) +lightup_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_lightupsolver_OBJECTS = ./combi.$(OBJEXT) ./malloc.$(OBJEXT) \ + ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT) +lightupsolver_OBJECTS = $(am_lightupsolver_OBJECTS) +lightupsolver_DEPENDENCIES = liblightup2_a-lightup.$(OBJEXT) +am_loopy_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \ + ./grid.$(OBJEXT) ./gtk.$(OBJEXT) ./loopgen.$(OBJEXT) \ + ./loopy.$(OBJEXT) ./malloc.$(OBJEXT) ./midend.$(OBJEXT) \ + ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./penrose.$(OBJEXT) \ + ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \ + ./tree234.$(OBJEXT) ./version.$(OBJEXT) +loopy_OBJECTS = $(am_loopy_OBJECTS) +loopy_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_loopysolver_OBJECTS = ./dsf.$(OBJEXT) ./grid.$(OBJEXT) \ + ./loopgen.$(OBJEXT) ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \ + ./nullfe.$(OBJEXT) ./penrose.$(OBJEXT) ./random.$(OBJEXT) \ + ./tree234.$(OBJEXT) +loopysolver_OBJECTS = $(am_loopysolver_OBJECTS) +loopysolver_DEPENDENCIES = libloopy2_a-loopy.$(OBJEXT) +am_magnets_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \ + ./laydomino.$(OBJEXT) ./magnets.$(OBJEXT) ./malloc.$(OBJEXT) \ + ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \ + ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \ + ./version.$(OBJEXT) +magnets_OBJECTS = $(am_magnets_OBJECTS) +magnets_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_magnetssolver_OBJECTS = ./laydomino.$(OBJEXT) ./malloc.$(OBJEXT) \ + ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT) +magnetssolver_OBJECTS = $(am_magnetssolver_OBJECTS) +magnetssolver_DEPENDENCIES = libmagnets2_a-magnets.$(OBJEXT) +am_map_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) ./gtk.$(OBJEXT) \ + ./malloc.$(OBJEXT) ./map.$(OBJEXT) ./midend.$(OBJEXT) \ + ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \ + ./ps.$(OBJEXT) ./random.$(OBJEXT) ./version.$(OBJEXT) +map_OBJECTS = $(am_map_OBJECTS) +map_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_mapsolver_OBJECTS = ./dsf.$(OBJEXT) ./malloc.$(OBJEXT) \ + ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT) +mapsolver_OBJECTS = $(am_mapsolver_OBJECTS) +mapsolver_DEPENDENCIES = libmap2_a-map.$(OBJEXT) +am_mineobfusc_OBJECTS = ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \ + ./nullfe.$(OBJEXT) ./random.$(OBJEXT) ./tree234.$(OBJEXT) +mineobfusc_OBJECTS = $(am_mineobfusc_OBJECTS) +mineobfusc_DEPENDENCIES = libmines2_a-mines.$(OBJEXT) +am_mines_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \ + ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./mines.$(OBJEXT) \ + ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \ + ./ps.$(OBJEXT) ./random.$(OBJEXT) ./tree234.$(OBJEXT) \ + ./version.$(OBJEXT) +mines_OBJECTS = $(am_mines_OBJECTS) +mines_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_net_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \ + ./findloop.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \ + ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./net.$(OBJEXT) \ + ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \ + ./random.$(OBJEXT) ./tree234.$(OBJEXT) ./version.$(OBJEXT) +net_OBJECTS = $(am_net_OBJECTS) +net_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_netslide_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \ + ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \ + ./netslide.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \ + ./ps.$(OBJEXT) ./random.$(OBJEXT) ./tree234.$(OBJEXT) \ + ./version.$(OBJEXT) +netslide_OBJECTS = $(am_netslide_OBJECTS) +netslide_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_nullgame_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \ + ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \ + ./no-icon.$(OBJEXT) ./nullgame.$(OBJEXT) ./printing.$(OBJEXT) \ + ./ps.$(OBJEXT) ./random.$(OBJEXT) ./version.$(OBJEXT) +nullgame_OBJECTS = $(am_nullgame_OBJECTS) +nullgame_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_obfusc_OBJECTS = ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \ + ./nullfe.$(OBJEXT) ./obfusc.$(OBJEXT) ./random.$(OBJEXT) +obfusc_OBJECTS = $(am_obfusc_OBJECTS) +obfusc_DEPENDENCIES = +am_palisade_OBJECTS = ./divvy.$(OBJEXT) ./drawing.$(OBJEXT) \ + ./dsf.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \ + ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \ + ./palisade.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \ + ./random.$(OBJEXT) ./version.$(OBJEXT) +palisade_OBJECTS = $(am_palisade_OBJECTS) +palisade_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_pattern_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \ + ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \ + ./no-icon.$(OBJEXT) ./pattern.$(OBJEXT) ./printing.$(OBJEXT) \ + ./ps.$(OBJEXT) ./random.$(OBJEXT) ./version.$(OBJEXT) +pattern_OBJECTS = $(am_pattern_OBJECTS) +pattern_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_patternpicture_OBJECTS = ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \ + ./nullfe.$(OBJEXT) ./random.$(OBJEXT) +patternpicture_OBJECTS = $(am_patternpicture_OBJECTS) +patternpicture_DEPENDENCIES = libpattern4_a-pattern.$(OBJEXT) +am_patternsolver_OBJECTS = ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \ + ./nullfe.$(OBJEXT) ./random.$(OBJEXT) +patternsolver_OBJECTS = $(am_patternsolver_OBJECTS) +patternsolver_DEPENDENCIES = libpattern2_a-pattern.$(OBJEXT) +am_pearl_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \ + ./grid.$(OBJEXT) ./gtk.$(OBJEXT) ./loopgen.$(OBJEXT) \ + ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \ + ./no-icon.$(OBJEXT) ./pearl.$(OBJEXT) ./penrose.$(OBJEXT) \ + ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \ + ./tdq.$(OBJEXT) ./tree234.$(OBJEXT) ./version.$(OBJEXT) +pearl_OBJECTS = $(am_pearl_OBJECTS) +pearl_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_pearlbench_OBJECTS = ./dsf.$(OBJEXT) ./grid.$(OBJEXT) \ + ./loopgen.$(OBJEXT) ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \ + ./nullfe.$(OBJEXT) ./penrose.$(OBJEXT) ./random.$(OBJEXT) \ + ./tdq.$(OBJEXT) ./tree234.$(OBJEXT) +pearlbench_OBJECTS = $(am_pearlbench_OBJECTS) +pearlbench_DEPENDENCIES = libpearl2_a-pearl.$(OBJEXT) +am_pegs_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \ + ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \ + ./no-icon.$(OBJEXT) ./pegs.$(OBJEXT) ./printing.$(OBJEXT) \ + ./ps.$(OBJEXT) ./random.$(OBJEXT) ./tree234.$(OBJEXT) \ + ./version.$(OBJEXT) +pegs_OBJECTS = $(am_pegs_OBJECTS) +pegs_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_range_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) ./gtk.$(OBJEXT) \ + ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \ + ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \ + ./random.$(OBJEXT) ./range.$(OBJEXT) ./version.$(OBJEXT) +range_OBJECTS = $(am_range_OBJECTS) +range_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_rect_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \ + ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \ + ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \ + ./random.$(OBJEXT) ./rect.$(OBJEXT) ./version.$(OBJEXT) +rect_OBJECTS = $(am_rect_OBJECTS) +rect_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_samegame_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \ + ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \ + ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \ + ./random.$(OBJEXT) ./samegame.$(OBJEXT) ./version.$(OBJEXT) +samegame_OBJECTS = $(am_samegame_OBJECTS) +samegame_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_signpost_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \ + ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) ./midend.$(OBJEXT) \ + ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \ + ./ps.$(OBJEXT) ./random.$(OBJEXT) ./signpost.$(OBJEXT) \ + ./version.$(OBJEXT) +signpost_OBJECTS = $(am_signpost_OBJECTS) +signpost_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_signpostsolver_OBJECTS = ./dsf.$(OBJEXT) ./malloc.$(OBJEXT) \ + ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT) +signpostsolver_OBJECTS = $(am_signpostsolver_OBJECTS) +signpostsolver_DEPENDENCIES = libsignpos2_a-signpost.$(OBJEXT) +am_singles_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \ + ./gtk.$(OBJEXT) ./latin.$(OBJEXT) ./malloc.$(OBJEXT) \ + ./maxflow.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \ + ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \ + ./random.$(OBJEXT) ./singles.$(OBJEXT) ./tree234.$(OBJEXT) \ + ./version.$(OBJEXT) +singles_OBJECTS = $(am_singles_OBJECTS) +singles_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_singlessolver_OBJECTS = ./dsf.$(OBJEXT) ./latin.$(OBJEXT) \ + ./malloc.$(OBJEXT) ./maxflow.$(OBJEXT) ./misc.$(OBJEXT) \ + ./nullfe.$(OBJEXT) ./random.$(OBJEXT) ./tree234.$(OBJEXT) +singlessolver_OBJECTS = $(am_singlessolver_OBJECTS) +singlessolver_DEPENDENCIES = libsingles3_a-singles.$(OBJEXT) +am_sixteen_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \ + ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \ + ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \ + ./random.$(OBJEXT) ./sixteen.$(OBJEXT) ./version.$(OBJEXT) +sixteen_OBJECTS = $(am_sixteen_OBJECTS) +sixteen_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_slant_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \ + ./findloop.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \ + ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \ + ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \ + ./slant.$(OBJEXT) ./version.$(OBJEXT) +slant_OBJECTS = $(am_slant_OBJECTS) +slant_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_slantsolver_OBJECTS = ./dsf.$(OBJEXT) ./findloop.$(OBJEXT) \ + ./malloc.$(OBJEXT) ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) \ + ./random.$(OBJEXT) +slantsolver_OBJECTS = $(am_slantsolver_OBJECTS) +slantsolver_DEPENDENCIES = libslant2_a-slant.$(OBJEXT) +am_solo_OBJECTS = ./divvy.$(OBJEXT) ./drawing.$(OBJEXT) \ + ./dsf.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \ + ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \ + ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \ + ./solo.$(OBJEXT) ./version.$(OBJEXT) +solo_OBJECTS = $(am_solo_OBJECTS) +solo_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_solosolver_OBJECTS = ./divvy.$(OBJEXT) ./dsf.$(OBJEXT) \ + ./malloc.$(OBJEXT) ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) \ + ./random.$(OBJEXT) +solosolver_OBJECTS = $(am_solosolver_OBJECTS) +solosolver_DEPENDENCIES = libsolo2_a-solo.$(OBJEXT) +am_tents_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) ./gtk.$(OBJEXT) \ + ./malloc.$(OBJEXT) ./maxflow.$(OBJEXT) ./midend.$(OBJEXT) \ + ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \ + ./ps.$(OBJEXT) ./random.$(OBJEXT) ./tents.$(OBJEXT) \ + ./version.$(OBJEXT) +tents_OBJECTS = $(am_tents_OBJECTS) +tents_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_tentssolver_OBJECTS = ./dsf.$(OBJEXT) ./malloc.$(OBJEXT) \ + ./maxflow.$(OBJEXT) ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) \ + ./random.$(OBJEXT) +tentssolver_OBJECTS = $(am_tentssolver_OBJECTS) +tentssolver_DEPENDENCIES = libtents3_a-tents.$(OBJEXT) +am_towers_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \ + ./latin.$(OBJEXT) ./malloc.$(OBJEXT) ./maxflow.$(OBJEXT) \ + ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \ + ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \ + ./towers.$(OBJEXT) ./tree234.$(OBJEXT) ./version.$(OBJEXT) +towers_OBJECTS = $(am_towers_OBJECTS) +towers_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_towerssolver_OBJECTS = ./malloc.$(OBJEXT) ./maxflow.$(OBJEXT) \ + ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT) \ + ./tree234.$(OBJEXT) +towerssolver_OBJECTS = $(am_towerssolver_OBJECTS) +towerssolver_DEPENDENCIES = liblatin6_a-latin.$(OBJEXT) \ + libtowers2_a-towers.$(OBJEXT) +am_tracks_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \ + ./findloop.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \ + ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \ + ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \ + ./tracks.$(OBJEXT) ./version.$(OBJEXT) +tracks_OBJECTS = $(am_tracks_OBJECTS) +tracks_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_twiddle_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \ + ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \ + ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \ + ./random.$(OBJEXT) ./twiddle.$(OBJEXT) ./version.$(OBJEXT) +twiddle_OBJECTS = $(am_twiddle_OBJECTS) +twiddle_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_undead_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \ + ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \ + ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \ + ./random.$(OBJEXT) ./undead.$(OBJEXT) ./version.$(OBJEXT) +undead_OBJECTS = $(am_undead_OBJECTS) +undead_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_unequal_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \ + ./latin.$(OBJEXT) ./malloc.$(OBJEXT) ./maxflow.$(OBJEXT) \ + ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \ + ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \ + ./tree234.$(OBJEXT) ./unequal.$(OBJEXT) ./version.$(OBJEXT) +unequal_OBJECTS = $(am_unequal_OBJECTS) +unequal_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_unequalsolver_OBJECTS = ./malloc.$(OBJEXT) ./maxflow.$(OBJEXT) \ + ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT) \ + ./tree234.$(OBJEXT) +unequalsolver_OBJECTS = $(am_unequalsolver_OBJECTS) +unequalsolver_DEPENDENCIES = liblatin6_a-latin.$(OBJEXT) \ + libunequal2_a-unequal.$(OBJEXT) +am_unruly_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \ + ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \ + ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \ + ./random.$(OBJEXT) ./unruly.$(OBJEXT) ./version.$(OBJEXT) +unruly_OBJECTS = $(am_unruly_OBJECTS) +unruly_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_unrulysolver_OBJECTS = ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \ + ./nullfe.$(OBJEXT) ./random.$(OBJEXT) +unrulysolver_OBJECTS = $(am_unrulysolver_OBJECTS) +unrulysolver_DEPENDENCIES = libunruly2_a-unruly.$(OBJEXT) +am_untangle_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \ + ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \ + ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \ + ./random.$(OBJEXT) ./tree234.$(OBJEXT) ./untangle.$(OBJEXT) \ + ./version.$(OBJEXT) +untangle_OBJECTS = $(am_untangle_OBJECTS) +untangle_DEPENDENCIES = $(am__DEPENDENCIES_1) +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libfifteen2_a_SOURCES) $(libfilling2_a_SOURCES) \ + $(libgalaxie2_a_SOURCES) $(libgalaxie4_a_SOURCES) \ + $(libkeen2_a_SOURCES) $(liblatin6_a_SOURCES) \ + $(liblatin8_a_SOURCES) $(liblightup2_a_SOURCES) \ + $(libloopy2_a_SOURCES) $(libmagnets2_a_SOURCES) \ + $(libmap2_a_SOURCES) $(libmines2_a_SOURCES) \ + $(libpattern2_a_SOURCES) $(libpattern4_a_SOURCES) \ + $(libpearl2_a_SOURCES) $(libsignpos2_a_SOURCES) \ + $(libsingles3_a_SOURCES) $(libslant2_a_SOURCES) \ + $(libsolo2_a_SOURCES) $(libtents3_a_SOURCES) \ + $(libtowers2_a_SOURCES) $(libunequal2_a_SOURCES) \ + $(libunruly2_a_SOURCES) $(blackbox_SOURCES) $(bridges_SOURCES) \ + $(cube_SOURCES) $(dominosa_SOURCES) $(fifteen_SOURCES) \ + $(fifteensolver_SOURCES) $(filling_SOURCES) \ + $(fillingsolver_SOURCES) $(flip_SOURCES) $(flood_SOURCES) \ + $(galaxies_SOURCES) $(galaxiespicture_SOURCES) \ + $(galaxiessolver_SOURCES) $(guess_SOURCES) $(inertia_SOURCES) \ + $(keen_SOURCES) $(keensolver_SOURCES) $(latincheck_SOURCES) \ + $(lightup_SOURCES) $(lightupsolver_SOURCES) $(loopy_SOURCES) \ + $(loopysolver_SOURCES) $(magnets_SOURCES) \ + $(magnetssolver_SOURCES) $(map_SOURCES) $(mapsolver_SOURCES) \ + $(mineobfusc_SOURCES) $(mines_SOURCES) $(net_SOURCES) \ + $(netslide_SOURCES) $(nullgame_SOURCES) $(obfusc_SOURCES) \ + $(palisade_SOURCES) $(pattern_SOURCES) \ + $(patternpicture_SOURCES) $(patternsolver_SOURCES) \ + $(pearl_SOURCES) $(pearlbench_SOURCES) $(pegs_SOURCES) \ + $(range_SOURCES) $(rect_SOURCES) $(samegame_SOURCES) \ + $(signpost_SOURCES) $(signpostsolver_SOURCES) \ + $(singles_SOURCES) $(singlessolver_SOURCES) $(sixteen_SOURCES) \ + $(slant_SOURCES) $(slantsolver_SOURCES) $(solo_SOURCES) \ + $(solosolver_SOURCES) $(tents_SOURCES) $(tentssolver_SOURCES) \ + $(towers_SOURCES) $(towerssolver_SOURCES) $(tracks_SOURCES) \ + $(twiddle_SOURCES) $(undead_SOURCES) $(unequal_SOURCES) \ + $(unequalsolver_SOURCES) $(unruly_SOURCES) \ + $(unrulysolver_SOURCES) $(untangle_SOURCES) +DIST_SOURCES = $(libfifteen2_a_SOURCES) $(libfilling2_a_SOURCES) \ + $(libgalaxie2_a_SOURCES) $(libgalaxie4_a_SOURCES) \ + $(libkeen2_a_SOURCES) $(liblatin6_a_SOURCES) \ + $(liblatin8_a_SOURCES) $(liblightup2_a_SOURCES) \ + $(libloopy2_a_SOURCES) $(libmagnets2_a_SOURCES) \ + $(libmap2_a_SOURCES) $(libmines2_a_SOURCES) \ + $(libpattern2_a_SOURCES) $(libpattern4_a_SOURCES) \ + $(libpearl2_a_SOURCES) $(libsignpos2_a_SOURCES) \ + $(libsingles3_a_SOURCES) $(libslant2_a_SOURCES) \ + $(libsolo2_a_SOURCES) $(libtents3_a_SOURCES) \ + $(libtowers2_a_SOURCES) $(libunequal2_a_SOURCES) \ + $(libunruly2_a_SOURCES) $(blackbox_SOURCES) $(bridges_SOURCES) \ + $(cube_SOURCES) $(dominosa_SOURCES) $(fifteen_SOURCES) \ + $(fifteensolver_SOURCES) $(filling_SOURCES) \ + $(fillingsolver_SOURCES) $(flip_SOURCES) $(flood_SOURCES) \ + $(galaxies_SOURCES) $(galaxiespicture_SOURCES) \ + $(galaxiessolver_SOURCES) $(guess_SOURCES) $(inertia_SOURCES) \ + $(keen_SOURCES) $(keensolver_SOURCES) $(latincheck_SOURCES) \ + $(lightup_SOURCES) $(lightupsolver_SOURCES) $(loopy_SOURCES) \ + $(loopysolver_SOURCES) $(magnets_SOURCES) \ + $(magnetssolver_SOURCES) $(map_SOURCES) $(mapsolver_SOURCES) \ + $(mineobfusc_SOURCES) $(mines_SOURCES) $(net_SOURCES) \ + $(netslide_SOURCES) $(nullgame_SOURCES) $(obfusc_SOURCES) \ + $(palisade_SOURCES) $(pattern_SOURCES) \ + $(patternpicture_SOURCES) $(patternsolver_SOURCES) \ + $(pearl_SOURCES) $(pearlbench_SOURCES) $(pegs_SOURCES) \ + $(range_SOURCES) $(rect_SOURCES) $(samegame_SOURCES) \ + $(signpost_SOURCES) $(signpostsolver_SOURCES) \ + $(singles_SOURCES) $(singlessolver_SOURCES) $(sixteen_SOURCES) \ + $(slant_SOURCES) $(slantsolver_SOURCES) $(solo_SOURCES) \ + $(solosolver_SOURCES) $(tents_SOURCES) $(tentssolver_SOURCES) \ + $(towers_SOURCES) $(towerssolver_SOURCES) $(tracks_SOURCES) \ + $(twiddle_SOURCES) $(undead_SOURCES) $(unequal_SOURCES) \ + $(unequalsolver_SOURCES) $(unruly_SOURCES) \ + $(unrulysolver_SOURCES) $(untangle_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +CSCOPE = cscope +AM_RECURSIVE_TARGETS = cscope +am__DIST_COMMON = $(srcdir)/Makefile.in README compile depcomp \ + install-sh missing +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi +am__post_remove_distdir = $(am__remove_distdir) +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +DIST_TARGETS = dist-gzip +distuninstallcheck_listfiles = find . -type f -print +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' +distcleancheck_listfiles = find . -type f -print +ACLOCAL = ${SHELL} /home/franklin/puzzles/missing aclocal-1.15 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AUTOCONF = ${SHELL} /home/franklin/puzzles/missing autoconf +AUTOHEADER = ${SHELL} /home/franklin/puzzles/missing autoheader +AUTOMAKE = ${SHELL} /home/franklin/puzzles/missing automake-1.15 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 -Wall -Werror -std=c89 +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DPACKAGE_NAME=\"puzzles\" -DPACKAGE_TARNAME=\"puzzles\" -DPACKAGE_VERSION=\"6.66\" -DPACKAGE_STRING=\"puzzles\ 6.66\" -DPACKAGE_BUGREPORT=\"anakin@pobox.com\" -DPACKAGE_URL=\"\" -DPACKAGE=\"puzzles\" -DVERSION=\"6.66\" +DEPDIR = .deps +ECHO_C = +ECHO_N = -n +ECHO_T = +EXEEXT = +GTK_CFLAGS = -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/harfbuzz -I/usr/include/libdrm -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include +GTK_LIBS = -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LDFLAGS = +LIBOBJS = +LIBS = +LTLIBOBJS = +MAKEINFO = ${SHELL} /home/franklin/puzzles/missing makeinfo +MKDIR_P = /usr/bin/mkdir -p +OBJEXT = o +PACKAGE = puzzles +PACKAGE_BUGREPORT = anakin@pobox.com +PACKAGE_NAME = puzzles +PACKAGE_STRING = puzzles 6.66 +PACKAGE_TARNAME = puzzles +PACKAGE_URL = +PACKAGE_VERSION = 6.66 +PATH_SEPARATOR = : +PKG_CONFIG = /usr/bin/pkg-config +PKG_CONFIG_LIBDIR = +PKG_CONFIG_PATH = +RANLIB = ranlib +SET_MAKE = +SHELL = /bin/sh +STRIP = +VERSION = 6.66 +abs_builddir = /home/franklin/puzzles +abs_srcdir = /home/franklin/puzzles +abs_top_builddir = /home/franklin/puzzles +abs_top_srcdir = /home/franklin/puzzles +ac_ct_CC = gcc +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build_alias = +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host_alias = +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/franklin/puzzles/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = +top_builddir = . +top_srcdir = . +GAMES = blackbox bridges cube dominosa fifteen filling flip flood \ + galaxies guess inertia keen lightup loopy magnets map mines \ + net netslide palisade pattern pearl pegs range rect samegame \ + signpost singles sixteen slant solo tents towers tracks \ + twiddle undead unequal unruly untangle +AUTOMAKE_OPTIONS = subdir-objects +allsources = ./blackbox.c ./bridges.c ./combi.c ./cube.c ./divvy.c \ + ./dominosa.c ./drawing.c ./dsf.c ./fifteen.c ./filling.c \ + ./findloop.c ./flip.c ./flood.c ./galaxies.c ./grid.c \ + ./grid.h ./gtk.c ./guess.c ./inertia.c ./keen.c ./latin.c \ + ./latin.h ./laydomino.c ./lightup.c ./list.c ./loopgen.c \ + ./loopgen.h ./loopy.c ./magnets.c ./malloc.c ./map.c \ + ./maxflow.c ./maxflow.h ./midend.c ./mines.c ./misc.c \ + ./net.c ./netslide.c ./no-icon.c ./nullfe.c ./nullgame.c \ + ./obfusc.c ./osx.m ./palisade.c ./pattern.c ./pearl.c \ + ./pegs.c ./penrose.c ./penrose.h ./printing.c ./ps.c \ + ./puzzles.h ./random.c ./range.c ./rect.c ./resource.h \ + ./samegame.c ./signpost.c ./singles.c ./sixteen.c ./slant.c \ + ./solo.c ./tdq.c ./tents.c ./towers.c ./tracks.c ./tree234.c \ + ./tree234.h ./twiddle.c ./undead.c ./unequal.c ./unruly.c \ + ./untangle.c ./version.c ./version.h ./windows.c + +AM_CPPFLAGS = -I$(srcdir)/./ -I$(srcdir)/icons/ +AM_CFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) +blackbox_SOURCES = ./blackbox.c ./drawing.c ./gtk.c ./malloc.c ./midend.c \ + ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \ + ./random.c ./version.c ./version.h + +blackbox_LDADD = $(GTK_LIBS) -lm +bridges_SOURCES = ./bridges.c ./drawing.c ./dsf.c ./findloop.c ./gtk.c \ + ./malloc.c ./midend.c ./misc.c ./no-icon.c ./printing.c \ + ./ps.c ./puzzles.h ./random.c ./version.c ./version.h + +bridges_LDADD = $(GTK_LIBS) -lm +cube_SOURCES = ./cube.c ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \ + ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \ + ./version.c ./version.h + +cube_LDADD = $(GTK_LIBS) -lm +dominosa_SOURCES = ./dominosa.c ./drawing.c ./gtk.c ./laydomino.c ./malloc.c \ + ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \ + ./puzzles.h ./random.c ./version.c ./version.h + +dominosa_LDADD = $(GTK_LIBS) -lm +fifteen_SOURCES = ./drawing.c ./fifteen.c ./gtk.c ./malloc.c ./midend.c \ + ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \ + ./random.c ./version.c ./version.h + +fifteen_LDADD = $(GTK_LIBS) -lm +fifteensolver_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \ + ./random.c + +fifteensolver_LDADD = libfifteen2_a-fifteen.$(OBJEXT) -lm +filling_SOURCES = ./drawing.c ./dsf.c ./filling.c ./gtk.c ./malloc.c \ + ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \ + ./puzzles.h ./random.c ./version.c ./version.h + +filling_LDADD = $(GTK_LIBS) -lm +fillingsolver_SOURCES = ./dsf.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \ + ./random.c + +fillingsolver_LDADD = libfilling2_a-filling.$(OBJEXT) -lm +flip_SOURCES = ./drawing.c ./flip.c ./gtk.c ./malloc.c ./midend.c ./misc.c \ + ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \ + ./tree234.c ./tree234.h ./version.c ./version.h + +flip_LDADD = $(GTK_LIBS) -lm +flood_SOURCES = ./drawing.c ./flood.c ./gtk.c ./malloc.c ./midend.c ./misc.c \ + ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \ + ./version.c ./version.h + +flood_LDADD = $(GTK_LIBS) -lm +galaxies_SOURCES = ./drawing.c ./dsf.c ./galaxies.c ./gtk.c ./malloc.c \ + ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \ + ./puzzles.h ./random.c ./version.c ./version.h + +galaxies_LDADD = $(GTK_LIBS) -lm +galaxiespicture_SOURCES = ./dsf.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \ + ./random.c + +galaxiespicture_LDADD = libgalaxie4_a-galaxies.$(OBJEXT) -lm +galaxiessolver_SOURCES = ./dsf.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \ + ./random.c + +galaxiessolver_LDADD = libgalaxie2_a-galaxies.$(OBJEXT) -lm +guess_SOURCES = ./drawing.c ./gtk.c ./guess.c ./malloc.c ./midend.c ./misc.c \ + ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \ + ./version.c ./version.h + +guess_LDADD = $(GTK_LIBS) -lm +inertia_SOURCES = ./drawing.c ./gtk.c ./inertia.c ./malloc.c ./midend.c \ + ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \ + ./random.c ./version.c ./version.h + +inertia_LDADD = $(GTK_LIBS) -lm +keen_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./keen.c ./latin.c ./latin.h \ + ./malloc.c ./maxflow.c ./maxflow.h ./midend.c ./misc.c \ + ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \ + ./tree234.c ./tree234.h ./version.c ./version.h + +keen_LDADD = $(GTK_LIBS) -lm +keensolver_SOURCES = ./dsf.c ./malloc.c ./maxflow.c ./maxflow.h ./misc.c \ + ./nullfe.c ./puzzles.h ./random.c ./tree234.c ./tree234.h + +keensolver_LDADD = libkeen2_a-keen.$(OBJEXT) liblatin6_a-latin.$(OBJEXT) -lm +latincheck_SOURCES = ./malloc.c ./maxflow.c ./maxflow.h ./misc.c ./nullfe.c \ + ./puzzles.h ./random.c ./tree234.c ./tree234.h + +latincheck_LDADD = liblatin8_a-latin.$(OBJEXT) -lm +lightup_SOURCES = ./combi.c ./drawing.c ./gtk.c ./lightup.c ./malloc.c \ + ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \ + ./puzzles.h ./random.c ./version.c ./version.h + +lightup_LDADD = $(GTK_LIBS) -lm +lightupsolver_SOURCES = ./combi.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \ + ./random.c + +lightupsolver_LDADD = liblightup2_a-lightup.$(OBJEXT) -lm +loopy_SOURCES = ./drawing.c ./dsf.c ./grid.c ./grid.h ./gtk.c ./loopgen.c \ + ./loopgen.h ./loopy.c ./malloc.c ./midend.c ./misc.c \ + ./no-icon.c ./penrose.c ./penrose.h ./printing.c ./ps.c \ + ./puzzles.h ./random.c ./tree234.c ./tree234.h ./version.c \ + ./version.h + +loopy_LDADD = $(GTK_LIBS) -lm +loopysolver_SOURCES = ./dsf.c ./grid.c ./grid.h ./loopgen.c ./loopgen.h \ + ./malloc.c ./misc.c ./nullfe.c ./penrose.c ./penrose.h \ + ./puzzles.h ./random.c ./tree234.c ./tree234.h + +loopysolver_LDADD = libloopy2_a-loopy.$(OBJEXT) -lm +magnets_SOURCES = ./drawing.c ./gtk.c ./laydomino.c ./magnets.c ./malloc.c \ + ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \ + ./puzzles.h ./random.c ./version.c ./version.h + +magnets_LDADD = $(GTK_LIBS) -lm +magnetssolver_SOURCES = ./laydomino.c ./malloc.c ./misc.c ./nullfe.c \ + ./puzzles.h ./random.c + +magnetssolver_LDADD = libmagnets2_a-magnets.$(OBJEXT) -lm +map_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./malloc.c ./map.c ./midend.c \ + ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \ + ./random.c ./version.c ./version.h + +map_LDADD = $(GTK_LIBS) -lm +mapsolver_SOURCES = ./dsf.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \ + ./random.c + +mapsolver_LDADD = libmap2_a-map.$(OBJEXT) -lm +mineobfusc_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./puzzles.h ./random.c \ + ./tree234.c ./tree234.h + +mineobfusc_LDADD = libmines2_a-mines.$(OBJEXT) -lm +mines_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./mines.c ./misc.c \ + ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \ + ./tree234.c ./tree234.h ./version.c ./version.h + +mines_LDADD = $(GTK_LIBS) -lm +net_SOURCES = ./drawing.c ./dsf.c ./findloop.c ./gtk.c ./malloc.c ./midend.c \ + ./misc.c ./net.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \ + ./random.c ./tree234.c ./tree234.h ./version.c ./version.h + +net_LDADD = $(GTK_LIBS) -lm +netslide_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \ + ./netslide.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \ + ./random.c ./tree234.c ./tree234.h ./version.c ./version.h + +netslide_LDADD = $(GTK_LIBS) -lm +nullgame_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \ + ./no-icon.c ./nullgame.c ./printing.c ./ps.c ./puzzles.h \ + ./random.c ./version.c ./version.h + +nullgame_LDADD = $(GTK_LIBS) -lm +obfusc_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./obfusc.c ./puzzles.h \ + ./random.c + +obfusc_LDADD = -lm +palisade_SOURCES = ./divvy.c ./drawing.c ./dsf.c ./gtk.c ./malloc.c \ + ./midend.c ./misc.c ./no-icon.c ./palisade.c ./printing.c \ + ./ps.c ./puzzles.h ./random.c ./version.c ./version.h + +palisade_LDADD = $(GTK_LIBS) -lm +pattern_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \ + ./no-icon.c ./pattern.c ./printing.c ./ps.c ./puzzles.h \ + ./random.c ./version.c ./version.h + +pattern_LDADD = $(GTK_LIBS) -lm +patternpicture_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \ + ./random.c + +patternpicture_LDADD = libpattern4_a-pattern.$(OBJEXT) -lm +patternsolver_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \ + ./random.c + +patternsolver_LDADD = libpattern2_a-pattern.$(OBJEXT) -lm +pearl_SOURCES = ./drawing.c ./dsf.c ./grid.c ./grid.h ./gtk.c ./loopgen.c \ + ./loopgen.h ./malloc.c ./midend.c ./misc.c ./no-icon.c \ + ./pearl.c ./penrose.c ./penrose.h ./printing.c ./ps.c \ + ./puzzles.h ./random.c ./tdq.c ./tree234.c ./tree234.h \ + ./version.c ./version.h + +pearl_LDADD = $(GTK_LIBS) -lm +pearlbench_SOURCES = ./dsf.c ./grid.c ./grid.h ./loopgen.c ./loopgen.h \ + ./malloc.c ./misc.c ./nullfe.c ./penrose.c ./penrose.h \ + ./puzzles.h ./random.c ./tdq.c ./tree234.c ./tree234.h + +pearlbench_LDADD = libpearl2_a-pearl.$(OBJEXT) -lm +pegs_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \ + ./no-icon.c ./pegs.c ./printing.c ./ps.c ./puzzles.h \ + ./random.c ./tree234.c ./tree234.h ./version.c ./version.h + +pegs_LDADD = $(GTK_LIBS) -lm +range_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./malloc.c ./midend.c ./misc.c \ + ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \ + ./range.c ./version.c ./version.h + +range_LDADD = $(GTK_LIBS) -lm +rect_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \ + ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \ + ./rect.c ./version.c ./version.h + +rect_LDADD = $(GTK_LIBS) -lm +samegame_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \ + ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \ + ./samegame.c ./version.c ./version.h + +samegame_LDADD = $(GTK_LIBS) -lm +signpost_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./malloc.c ./midend.c \ + ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \ + ./random.c ./signpost.c ./version.c ./version.h + +signpost_LDADD = $(GTK_LIBS) -lm +signpostsolver_SOURCES = ./dsf.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \ + ./random.c + +signpostsolver_LDADD = libsignpos2_a-signpost.$(OBJEXT) -lm +singles_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./latin.c ./latin.h ./malloc.c \ + ./maxflow.c ./maxflow.h ./midend.c ./misc.c ./no-icon.c \ + ./printing.c ./ps.c ./puzzles.h ./random.c ./singles.c \ + ./tree234.c ./tree234.h ./version.c ./version.h + +singles_LDADD = $(GTK_LIBS) -lm +singlessolver_SOURCES = ./dsf.c ./latin.c ./latin.h ./malloc.c ./maxflow.c \ + ./maxflow.h ./misc.c ./nullfe.c ./puzzles.h ./random.c \ + ./tree234.c ./tree234.h + +singlessolver_LDADD = libsingles3_a-singles.$(OBJEXT) -lm +sixteen_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \ + ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \ + ./sixteen.c ./version.c ./version.h + +sixteen_LDADD = $(GTK_LIBS) -lm +slant_SOURCES = ./drawing.c ./dsf.c ./findloop.c ./gtk.c ./malloc.c \ + ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \ + ./puzzles.h ./random.c ./slant.c ./version.c ./version.h + +slant_LDADD = $(GTK_LIBS) -lm +slantsolver_SOURCES = ./dsf.c ./findloop.c ./malloc.c ./misc.c ./nullfe.c \ + ./puzzles.h ./random.c + +slantsolver_LDADD = libslant2_a-slant.$(OBJEXT) -lm +solo_SOURCES = ./divvy.c ./drawing.c ./dsf.c ./gtk.c ./malloc.c ./midend.c \ + ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \ + ./random.c ./solo.c ./version.c ./version.h + +solo_LDADD = $(GTK_LIBS) -lm +solosolver_SOURCES = ./divvy.c ./dsf.c ./malloc.c ./misc.c ./nullfe.c \ + ./puzzles.h ./random.c + +solosolver_LDADD = libsolo2_a-solo.$(OBJEXT) -lm +tents_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./malloc.c ./maxflow.c \ + ./maxflow.h ./midend.c ./misc.c ./no-icon.c ./printing.c \ + ./ps.c ./puzzles.h ./random.c ./tents.c ./version.c \ + ./version.h + +tents_LDADD = $(GTK_LIBS) -lm +tentssolver_SOURCES = ./dsf.c ./malloc.c ./maxflow.c ./maxflow.h ./misc.c \ + ./nullfe.c ./puzzles.h ./random.c + +tentssolver_LDADD = libtents3_a-tents.$(OBJEXT) -lm +towers_SOURCES = ./drawing.c ./gtk.c ./latin.c ./latin.h ./malloc.c \ + ./maxflow.c ./maxflow.h ./midend.c ./misc.c ./no-icon.c \ + ./printing.c ./ps.c ./puzzles.h ./random.c ./towers.c \ + ./tree234.c ./tree234.h ./version.c ./version.h + +towers_LDADD = $(GTK_LIBS) -lm +towerssolver_SOURCES = ./malloc.c ./maxflow.c ./maxflow.h ./misc.c \ + ./nullfe.c ./puzzles.h ./random.c ./tree234.c ./tree234.h + +towerssolver_LDADD = liblatin6_a-latin.$(OBJEXT) \ + libtowers2_a-towers.$(OBJEXT) -lm + +tracks_SOURCES = ./drawing.c ./dsf.c ./findloop.c ./gtk.c ./malloc.c \ + ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \ + ./puzzles.h ./random.c ./tracks.c ./version.c ./version.h + +tracks_LDADD = $(GTK_LIBS) -lm +twiddle_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \ + ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \ + ./twiddle.c ./version.c ./version.h + +twiddle_LDADD = $(GTK_LIBS) -lm +undead_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \ + ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \ + ./undead.c ./version.c ./version.h + +undead_LDADD = $(GTK_LIBS) -lm +unequal_SOURCES = ./drawing.c ./gtk.c ./latin.c ./latin.h ./malloc.c \ + ./maxflow.c ./maxflow.h ./midend.c ./misc.c ./no-icon.c \ + ./printing.c ./ps.c ./puzzles.h ./random.c ./tree234.c \ + ./tree234.h ./unequal.c ./version.c ./version.h + +unequal_LDADD = $(GTK_LIBS) -lm +unequalsolver_SOURCES = ./malloc.c ./maxflow.c ./maxflow.h ./misc.c \ + ./nullfe.c ./puzzles.h ./random.c ./tree234.c ./tree234.h + +unequalsolver_LDADD = liblatin6_a-latin.$(OBJEXT) \ + libunequal2_a-unequal.$(OBJEXT) -lm + +unruly_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \ + ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \ + ./unruly.c ./version.c ./version.h + +unruly_LDADD = $(GTK_LIBS) -lm +unrulysolver_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./puzzles.h ./random.c +unrulysolver_LDADD = libunruly2_a-unruly.$(OBJEXT) -lm +untangle_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \ + ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \ + ./tree234.c ./tree234.h ./untangle.c ./version.c ./version.h + +untangle_LDADD = $(GTK_LIBS) -lm +libfifteen2_a_SOURCES = ./fifteen.c ./puzzles.h +libfifteen2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER +libfilling2_a_SOURCES = ./filling.c ./puzzles.h +libfilling2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER +libgalaxie2_a_SOURCES = ./galaxies.c ./puzzles.h +libgalaxie2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER +libgalaxie4_a_SOURCES = ./galaxies.c ./puzzles.h +libgalaxie4_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) \ + -DSTANDALONE_PICTURE_GENERATOR + +libkeen2_a_SOURCES = ./keen.c ./puzzles.h ./latin.h +libkeen2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER +liblatin6_a_SOURCES = ./latin.c ./puzzles.h ./tree234.h ./maxflow.h \ + ./latin.h + +liblatin6_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER +liblatin8_a_SOURCES = ./latin.c ./puzzles.h ./tree234.h ./maxflow.h \ + ./latin.h + +liblatin8_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_LATIN_TEST +liblightup2_a_SOURCES = ./lightup.c ./puzzles.h +liblightup2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER +libloopy2_a_SOURCES = ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h +libloopy2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER +libmagnets2_a_SOURCES = ./magnets.c ./puzzles.h +libmagnets2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER +libmap2_a_SOURCES = ./map.c ./puzzles.h +libmap2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER +libmines2_a_SOURCES = ./mines.c ./tree234.h ./puzzles.h +libmines2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_OBFUSCATOR +libpattern2_a_SOURCES = ./pattern.c ./puzzles.h +libpattern2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER +libpattern4_a_SOURCES = ./pattern.c ./puzzles.h +libpattern4_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) \ + -DSTANDALONE_PICTURE_GENERATOR + +libpearl2_a_SOURCES = ./pearl.c ./puzzles.h ./grid.h ./loopgen.h +libpearl2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER +libsignpos2_a_SOURCES = ./signpost.c ./puzzles.h +libsignpos2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER +libsingles3_a_SOURCES = ./singles.c ./puzzles.h ./latin.h +libsingles3_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER +libslant2_a_SOURCES = ./slant.c ./puzzles.h +libslant2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER +libsolo2_a_SOURCES = ./solo.c ./puzzles.h +libsolo2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER +libtents3_a_SOURCES = ./tents.c ./puzzles.h ./maxflow.h +libtents3_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER +libtowers2_a_SOURCES = ./towers.c ./puzzles.h ./latin.h +libtowers2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER +libunequal2_a_SOURCES = ./unequal.c ./puzzles.h ./latin.h +libunequal2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER +libunruly2_a_SOURCES = ./unruly.c ./puzzles.h +libunruly2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER +noinst_LIBRARIES = libfifteen2.a libfilling2.a libgalaxie2.a libgalaxie4.a \ + libkeen2.a liblatin6.a liblatin8.a liblightup2.a libloopy2.a \ + libmagnets2.a libmap2.a libmines2.a libpattern2.a \ + libpattern4.a libpearl2.a libsignpos2.a libsingles3.a \ + libslant2.a libsolo2.a libtents3.a libtowers2.a \ + libunequal2.a libunruly2.a + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .o .obj +am--refresh: Makefile + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +./$(am__dirstamp): + @$(MKDIR_P) . + @: > ./$(am__dirstamp) +$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) ./$(DEPDIR) + @: > $(DEPDIR)/$(am__dirstamp) +./libfifteen2_a-fifteen.$(OBJEXT): ./$(am__dirstamp) \ + $(DEPDIR)/$(am__dirstamp) + +libfifteen2.a: $(libfifteen2_a_OBJECTS) $(libfifteen2_a_DEPENDENCIES) $(EXTRA_libfifteen2_a_DEPENDENCIES) + $(AM_V_at)-rm -f libfifteen2.a + $(AM_V_AR)$(libfifteen2_a_AR) libfifteen2.a $(libfifteen2_a_OBJECTS) $(libfifteen2_a_LIBADD) + $(AM_V_at)$(RANLIB) libfifteen2.a +./libfilling2_a-filling.$(OBJEXT): ./$(am__dirstamp) \ + $(DEPDIR)/$(am__dirstamp) + +libfilling2.a: $(libfilling2_a_OBJECTS) $(libfilling2_a_DEPENDENCIES) $(EXTRA_libfilling2_a_DEPENDENCIES) + $(AM_V_at)-rm -f libfilling2.a + $(AM_V_AR)$(libfilling2_a_AR) libfilling2.a $(libfilling2_a_OBJECTS) $(libfilling2_a_LIBADD) + $(AM_V_at)$(RANLIB) libfilling2.a +./libgalaxie2_a-galaxies.$(OBJEXT): ./$(am__dirstamp) \ + $(DEPDIR)/$(am__dirstamp) + +libgalaxie2.a: $(libgalaxie2_a_OBJECTS) $(libgalaxie2_a_DEPENDENCIES) $(EXTRA_libgalaxie2_a_DEPENDENCIES) + $(AM_V_at)-rm -f libgalaxie2.a + $(AM_V_AR)$(libgalaxie2_a_AR) libgalaxie2.a $(libgalaxie2_a_OBJECTS) $(libgalaxie2_a_LIBADD) + $(AM_V_at)$(RANLIB) libgalaxie2.a +./libgalaxie4_a-galaxies.$(OBJEXT): ./$(am__dirstamp) \ + $(DEPDIR)/$(am__dirstamp) + +libgalaxie4.a: $(libgalaxie4_a_OBJECTS) $(libgalaxie4_a_DEPENDENCIES) $(EXTRA_libgalaxie4_a_DEPENDENCIES) + $(AM_V_at)-rm -f libgalaxie4.a + $(AM_V_AR)$(libgalaxie4_a_AR) libgalaxie4.a $(libgalaxie4_a_OBJECTS) $(libgalaxie4_a_LIBADD) + $(AM_V_at)$(RANLIB) libgalaxie4.a +./libkeen2_a-keen.$(OBJEXT): ./$(am__dirstamp) \ + $(DEPDIR)/$(am__dirstamp) + +libkeen2.a: $(libkeen2_a_OBJECTS) $(libkeen2_a_DEPENDENCIES) $(EXTRA_libkeen2_a_DEPENDENCIES) + $(AM_V_at)-rm -f libkeen2.a + $(AM_V_AR)$(libkeen2_a_AR) libkeen2.a $(libkeen2_a_OBJECTS) $(libkeen2_a_LIBADD) + $(AM_V_at)$(RANLIB) libkeen2.a +./liblatin6_a-latin.$(OBJEXT): ./$(am__dirstamp) \ + $(DEPDIR)/$(am__dirstamp) + +liblatin6.a: $(liblatin6_a_OBJECTS) $(liblatin6_a_DEPENDENCIES) $(EXTRA_liblatin6_a_DEPENDENCIES) + $(AM_V_at)-rm -f liblatin6.a + $(AM_V_AR)$(liblatin6_a_AR) liblatin6.a $(liblatin6_a_OBJECTS) $(liblatin6_a_LIBADD) + $(AM_V_at)$(RANLIB) liblatin6.a +./liblatin8_a-latin.$(OBJEXT): ./$(am__dirstamp) \ + $(DEPDIR)/$(am__dirstamp) + +liblatin8.a: $(liblatin8_a_OBJECTS) $(liblatin8_a_DEPENDENCIES) $(EXTRA_liblatin8_a_DEPENDENCIES) + $(AM_V_at)-rm -f liblatin8.a + $(AM_V_AR)$(liblatin8_a_AR) liblatin8.a $(liblatin8_a_OBJECTS) $(liblatin8_a_LIBADD) + $(AM_V_at)$(RANLIB) liblatin8.a +./liblightup2_a-lightup.$(OBJEXT): ./$(am__dirstamp) \ + $(DEPDIR)/$(am__dirstamp) + +liblightup2.a: $(liblightup2_a_OBJECTS) $(liblightup2_a_DEPENDENCIES) $(EXTRA_liblightup2_a_DEPENDENCIES) + $(AM_V_at)-rm -f liblightup2.a + $(AM_V_AR)$(liblightup2_a_AR) liblightup2.a $(liblightup2_a_OBJECTS) $(liblightup2_a_LIBADD) + $(AM_V_at)$(RANLIB) liblightup2.a +./libloopy2_a-loopy.$(OBJEXT): ./$(am__dirstamp) \ + $(DEPDIR)/$(am__dirstamp) + +libloopy2.a: $(libloopy2_a_OBJECTS) $(libloopy2_a_DEPENDENCIES) $(EXTRA_libloopy2_a_DEPENDENCIES) + $(AM_V_at)-rm -f libloopy2.a + $(AM_V_AR)$(libloopy2_a_AR) libloopy2.a $(libloopy2_a_OBJECTS) $(libloopy2_a_LIBADD) + $(AM_V_at)$(RANLIB) libloopy2.a +./libmagnets2_a-magnets.$(OBJEXT): ./$(am__dirstamp) \ + $(DEPDIR)/$(am__dirstamp) + +libmagnets2.a: $(libmagnets2_a_OBJECTS) $(libmagnets2_a_DEPENDENCIES) $(EXTRA_libmagnets2_a_DEPENDENCIES) + $(AM_V_at)-rm -f libmagnets2.a + $(AM_V_AR)$(libmagnets2_a_AR) libmagnets2.a $(libmagnets2_a_OBJECTS) $(libmagnets2_a_LIBADD) + $(AM_V_at)$(RANLIB) libmagnets2.a +./libmap2_a-map.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +libmap2.a: $(libmap2_a_OBJECTS) $(libmap2_a_DEPENDENCIES) $(EXTRA_libmap2_a_DEPENDENCIES) + $(AM_V_at)-rm -f libmap2.a + $(AM_V_AR)$(libmap2_a_AR) libmap2.a $(libmap2_a_OBJECTS) $(libmap2_a_LIBADD) + $(AM_V_at)$(RANLIB) libmap2.a +./libmines2_a-mines.$(OBJEXT): ./$(am__dirstamp) \ + $(DEPDIR)/$(am__dirstamp) + +libmines2.a: $(libmines2_a_OBJECTS) $(libmines2_a_DEPENDENCIES) $(EXTRA_libmines2_a_DEPENDENCIES) + $(AM_V_at)-rm -f libmines2.a + $(AM_V_AR)$(libmines2_a_AR) libmines2.a $(libmines2_a_OBJECTS) $(libmines2_a_LIBADD) + $(AM_V_at)$(RANLIB) libmines2.a +./libpattern2_a-pattern.$(OBJEXT): ./$(am__dirstamp) \ + $(DEPDIR)/$(am__dirstamp) + +libpattern2.a: $(libpattern2_a_OBJECTS) $(libpattern2_a_DEPENDENCIES) $(EXTRA_libpattern2_a_DEPENDENCIES) + $(AM_V_at)-rm -f libpattern2.a + $(AM_V_AR)$(libpattern2_a_AR) libpattern2.a $(libpattern2_a_OBJECTS) $(libpattern2_a_LIBADD) + $(AM_V_at)$(RANLIB) libpattern2.a +./libpattern4_a-pattern.$(OBJEXT): ./$(am__dirstamp) \ + $(DEPDIR)/$(am__dirstamp) + +libpattern4.a: $(libpattern4_a_OBJECTS) $(libpattern4_a_DEPENDENCIES) $(EXTRA_libpattern4_a_DEPENDENCIES) + $(AM_V_at)-rm -f libpattern4.a + $(AM_V_AR)$(libpattern4_a_AR) libpattern4.a $(libpattern4_a_OBJECTS) $(libpattern4_a_LIBADD) + $(AM_V_at)$(RANLIB) libpattern4.a +./libpearl2_a-pearl.$(OBJEXT): ./$(am__dirstamp) \ + $(DEPDIR)/$(am__dirstamp) + +libpearl2.a: $(libpearl2_a_OBJECTS) $(libpearl2_a_DEPENDENCIES) $(EXTRA_libpearl2_a_DEPENDENCIES) + $(AM_V_at)-rm -f libpearl2.a + $(AM_V_AR)$(libpearl2_a_AR) libpearl2.a $(libpearl2_a_OBJECTS) $(libpearl2_a_LIBADD) + $(AM_V_at)$(RANLIB) libpearl2.a +./libsignpos2_a-signpost.$(OBJEXT): ./$(am__dirstamp) \ + $(DEPDIR)/$(am__dirstamp) + +libsignpos2.a: $(libsignpos2_a_OBJECTS) $(libsignpos2_a_DEPENDENCIES) $(EXTRA_libsignpos2_a_DEPENDENCIES) + $(AM_V_at)-rm -f libsignpos2.a + $(AM_V_AR)$(libsignpos2_a_AR) libsignpos2.a $(libsignpos2_a_OBJECTS) $(libsignpos2_a_LIBADD) + $(AM_V_at)$(RANLIB) libsignpos2.a +./libsingles3_a-singles.$(OBJEXT): ./$(am__dirstamp) \ + $(DEPDIR)/$(am__dirstamp) + +libsingles3.a: $(libsingles3_a_OBJECTS) $(libsingles3_a_DEPENDENCIES) $(EXTRA_libsingles3_a_DEPENDENCIES) + $(AM_V_at)-rm -f libsingles3.a + $(AM_V_AR)$(libsingles3_a_AR) libsingles3.a $(libsingles3_a_OBJECTS) $(libsingles3_a_LIBADD) + $(AM_V_at)$(RANLIB) libsingles3.a +./libslant2_a-slant.$(OBJEXT): ./$(am__dirstamp) \ + $(DEPDIR)/$(am__dirstamp) + +libslant2.a: $(libslant2_a_OBJECTS) $(libslant2_a_DEPENDENCIES) $(EXTRA_libslant2_a_DEPENDENCIES) + $(AM_V_at)-rm -f libslant2.a + $(AM_V_AR)$(libslant2_a_AR) libslant2.a $(libslant2_a_OBJECTS) $(libslant2_a_LIBADD) + $(AM_V_at)$(RANLIB) libslant2.a +./libsolo2_a-solo.$(OBJEXT): ./$(am__dirstamp) \ + $(DEPDIR)/$(am__dirstamp) + +libsolo2.a: $(libsolo2_a_OBJECTS) $(libsolo2_a_DEPENDENCIES) $(EXTRA_libsolo2_a_DEPENDENCIES) + $(AM_V_at)-rm -f libsolo2.a + $(AM_V_AR)$(libsolo2_a_AR) libsolo2.a $(libsolo2_a_OBJECTS) $(libsolo2_a_LIBADD) + $(AM_V_at)$(RANLIB) libsolo2.a +./libtents3_a-tents.$(OBJEXT): ./$(am__dirstamp) \ + $(DEPDIR)/$(am__dirstamp) + +libtents3.a: $(libtents3_a_OBJECTS) $(libtents3_a_DEPENDENCIES) $(EXTRA_libtents3_a_DEPENDENCIES) + $(AM_V_at)-rm -f libtents3.a + $(AM_V_AR)$(libtents3_a_AR) libtents3.a $(libtents3_a_OBJECTS) $(libtents3_a_LIBADD) + $(AM_V_at)$(RANLIB) libtents3.a +./libtowers2_a-towers.$(OBJEXT): ./$(am__dirstamp) \ + $(DEPDIR)/$(am__dirstamp) + +libtowers2.a: $(libtowers2_a_OBJECTS) $(libtowers2_a_DEPENDENCIES) $(EXTRA_libtowers2_a_DEPENDENCIES) + $(AM_V_at)-rm -f libtowers2.a + $(AM_V_AR)$(libtowers2_a_AR) libtowers2.a $(libtowers2_a_OBJECTS) $(libtowers2_a_LIBADD) + $(AM_V_at)$(RANLIB) libtowers2.a +./libunequal2_a-unequal.$(OBJEXT): ./$(am__dirstamp) \ + $(DEPDIR)/$(am__dirstamp) + +libunequal2.a: $(libunequal2_a_OBJECTS) $(libunequal2_a_DEPENDENCIES) $(EXTRA_libunequal2_a_DEPENDENCIES) + $(AM_V_at)-rm -f libunequal2.a + $(AM_V_AR)$(libunequal2_a_AR) libunequal2.a $(libunequal2_a_OBJECTS) $(libunequal2_a_LIBADD) + $(AM_V_at)$(RANLIB) libunequal2.a +./libunruly2_a-unruly.$(OBJEXT): ./$(am__dirstamp) \ + $(DEPDIR)/$(am__dirstamp) + +libunruly2.a: $(libunruly2_a_OBJECTS) $(libunruly2_a_DEPENDENCIES) $(EXTRA_libunruly2_a_DEPENDENCIES) + $(AM_V_at)-rm -f libunruly2.a + $(AM_V_AR)$(libunruly2_a_AR) libunruly2.a $(libunruly2_a_OBJECTS) $(libunruly2_a_LIBADD) + $(AM_V_at)$(RANLIB) libunruly2.a +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) + +clean-noinstPROGRAMS: + -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) +./blackbox.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) +./drawing.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) +./gtk.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) +./malloc.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) +./midend.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) +./misc.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) +./no-icon.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) +./printing.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) +./ps.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) +./random.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) +./version.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +blackbox$(EXEEXT): $(blackbox_OBJECTS) $(blackbox_DEPENDENCIES) $(EXTRA_blackbox_DEPENDENCIES) + @rm -f blackbox$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(blackbox_OBJECTS) $(blackbox_LDADD) $(LIBS) +./bridges.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) +./dsf.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) +./findloop.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +bridges$(EXEEXT): $(bridges_OBJECTS) $(bridges_DEPENDENCIES) $(EXTRA_bridges_DEPENDENCIES) + @rm -f bridges$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(bridges_OBJECTS) $(bridges_LDADD) $(LIBS) +./cube.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +cube$(EXEEXT): $(cube_OBJECTS) $(cube_DEPENDENCIES) $(EXTRA_cube_DEPENDENCIES) + @rm -f cube$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(cube_OBJECTS) $(cube_LDADD) $(LIBS) +./dominosa.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) +./laydomino.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +dominosa$(EXEEXT): $(dominosa_OBJECTS) $(dominosa_DEPENDENCIES) $(EXTRA_dominosa_DEPENDENCIES) + @rm -f dominosa$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(dominosa_OBJECTS) $(dominosa_LDADD) $(LIBS) +./fifteen.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +fifteen$(EXEEXT): $(fifteen_OBJECTS) $(fifteen_DEPENDENCIES) $(EXTRA_fifteen_DEPENDENCIES) + @rm -f fifteen$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fifteen_OBJECTS) $(fifteen_LDADD) $(LIBS) +./nullfe.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +fifteensolver$(EXEEXT): $(fifteensolver_OBJECTS) $(fifteensolver_DEPENDENCIES) $(EXTRA_fifteensolver_DEPENDENCIES) + @rm -f fifteensolver$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fifteensolver_OBJECTS) $(fifteensolver_LDADD) $(LIBS) +./filling.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +filling$(EXEEXT): $(filling_OBJECTS) $(filling_DEPENDENCIES) $(EXTRA_filling_DEPENDENCIES) + @rm -f filling$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(filling_OBJECTS) $(filling_LDADD) $(LIBS) + +fillingsolver$(EXEEXT): $(fillingsolver_OBJECTS) $(fillingsolver_DEPENDENCIES) $(EXTRA_fillingsolver_DEPENDENCIES) + @rm -f fillingsolver$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fillingsolver_OBJECTS) $(fillingsolver_LDADD) $(LIBS) +./flip.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) +./tree234.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +flip$(EXEEXT): $(flip_OBJECTS) $(flip_DEPENDENCIES) $(EXTRA_flip_DEPENDENCIES) + @rm -f flip$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(flip_OBJECTS) $(flip_LDADD) $(LIBS) +./flood.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +flood$(EXEEXT): $(flood_OBJECTS) $(flood_DEPENDENCIES) $(EXTRA_flood_DEPENDENCIES) + @rm -f flood$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(flood_OBJECTS) $(flood_LDADD) $(LIBS) +./galaxies.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +galaxies$(EXEEXT): $(galaxies_OBJECTS) $(galaxies_DEPENDENCIES) $(EXTRA_galaxies_DEPENDENCIES) + @rm -f galaxies$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(galaxies_OBJECTS) $(galaxies_LDADD) $(LIBS) + +galaxiespicture$(EXEEXT): $(galaxiespicture_OBJECTS) $(galaxiespicture_DEPENDENCIES) $(EXTRA_galaxiespicture_DEPENDENCIES) + @rm -f galaxiespicture$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(galaxiespicture_OBJECTS) $(galaxiespicture_LDADD) $(LIBS) + +galaxiessolver$(EXEEXT): $(galaxiessolver_OBJECTS) $(galaxiessolver_DEPENDENCIES) $(EXTRA_galaxiessolver_DEPENDENCIES) + @rm -f galaxiessolver$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(galaxiessolver_OBJECTS) $(galaxiessolver_LDADD) $(LIBS) +./guess.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +guess$(EXEEXT): $(guess_OBJECTS) $(guess_DEPENDENCIES) $(EXTRA_guess_DEPENDENCIES) + @rm -f guess$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(guess_OBJECTS) $(guess_LDADD) $(LIBS) +./inertia.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +inertia$(EXEEXT): $(inertia_OBJECTS) $(inertia_DEPENDENCIES) $(EXTRA_inertia_DEPENDENCIES) + @rm -f inertia$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(inertia_OBJECTS) $(inertia_LDADD) $(LIBS) +./keen.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) +./latin.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) +./maxflow.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +keen$(EXEEXT): $(keen_OBJECTS) $(keen_DEPENDENCIES) $(EXTRA_keen_DEPENDENCIES) + @rm -f keen$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(keen_OBJECTS) $(keen_LDADD) $(LIBS) + +keensolver$(EXEEXT): $(keensolver_OBJECTS) $(keensolver_DEPENDENCIES) $(EXTRA_keensolver_DEPENDENCIES) + @rm -f keensolver$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(keensolver_OBJECTS) $(keensolver_LDADD) $(LIBS) + +latincheck$(EXEEXT): $(latincheck_OBJECTS) $(latincheck_DEPENDENCIES) $(EXTRA_latincheck_DEPENDENCIES) + @rm -f latincheck$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(latincheck_OBJECTS) $(latincheck_LDADD) $(LIBS) +./combi.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) +./lightup.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +lightup$(EXEEXT): $(lightup_OBJECTS) $(lightup_DEPENDENCIES) $(EXTRA_lightup_DEPENDENCIES) + @rm -f lightup$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(lightup_OBJECTS) $(lightup_LDADD) $(LIBS) + +lightupsolver$(EXEEXT): $(lightupsolver_OBJECTS) $(lightupsolver_DEPENDENCIES) $(EXTRA_lightupsolver_DEPENDENCIES) + @rm -f lightupsolver$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(lightupsolver_OBJECTS) $(lightupsolver_LDADD) $(LIBS) +./grid.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) +./loopgen.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) +./loopy.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) +./penrose.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +loopy$(EXEEXT): $(loopy_OBJECTS) $(loopy_DEPENDENCIES) $(EXTRA_loopy_DEPENDENCIES) + @rm -f loopy$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(loopy_OBJECTS) $(loopy_LDADD) $(LIBS) + +loopysolver$(EXEEXT): $(loopysolver_OBJECTS) $(loopysolver_DEPENDENCIES) $(EXTRA_loopysolver_DEPENDENCIES) + @rm -f loopysolver$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(loopysolver_OBJECTS) $(loopysolver_LDADD) $(LIBS) +./magnets.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +magnets$(EXEEXT): $(magnets_OBJECTS) $(magnets_DEPENDENCIES) $(EXTRA_magnets_DEPENDENCIES) + @rm -f magnets$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(magnets_OBJECTS) $(magnets_LDADD) $(LIBS) + +magnetssolver$(EXEEXT): $(magnetssolver_OBJECTS) $(magnetssolver_DEPENDENCIES) $(EXTRA_magnetssolver_DEPENDENCIES) + @rm -f magnetssolver$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(magnetssolver_OBJECTS) $(magnetssolver_LDADD) $(LIBS) +./map.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +map$(EXEEXT): $(map_OBJECTS) $(map_DEPENDENCIES) $(EXTRA_map_DEPENDENCIES) + @rm -f map$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(map_OBJECTS) $(map_LDADD) $(LIBS) + +mapsolver$(EXEEXT): $(mapsolver_OBJECTS) $(mapsolver_DEPENDENCIES) $(EXTRA_mapsolver_DEPENDENCIES) + @rm -f mapsolver$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(mapsolver_OBJECTS) $(mapsolver_LDADD) $(LIBS) + +mineobfusc$(EXEEXT): $(mineobfusc_OBJECTS) $(mineobfusc_DEPENDENCIES) $(EXTRA_mineobfusc_DEPENDENCIES) + @rm -f mineobfusc$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(mineobfusc_OBJECTS) $(mineobfusc_LDADD) $(LIBS) +./mines.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +mines$(EXEEXT): $(mines_OBJECTS) $(mines_DEPENDENCIES) $(EXTRA_mines_DEPENDENCIES) + @rm -f mines$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(mines_OBJECTS) $(mines_LDADD) $(LIBS) +./net.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +net$(EXEEXT): $(net_OBJECTS) $(net_DEPENDENCIES) $(EXTRA_net_DEPENDENCIES) + @rm -f net$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(net_OBJECTS) $(net_LDADD) $(LIBS) +./netslide.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +netslide$(EXEEXT): $(netslide_OBJECTS) $(netslide_DEPENDENCIES) $(EXTRA_netslide_DEPENDENCIES) + @rm -f netslide$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(netslide_OBJECTS) $(netslide_LDADD) $(LIBS) +./nullgame.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +nullgame$(EXEEXT): $(nullgame_OBJECTS) $(nullgame_DEPENDENCIES) $(EXTRA_nullgame_DEPENDENCIES) + @rm -f nullgame$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nullgame_OBJECTS) $(nullgame_LDADD) $(LIBS) +./obfusc.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +obfusc$(EXEEXT): $(obfusc_OBJECTS) $(obfusc_DEPENDENCIES) $(EXTRA_obfusc_DEPENDENCIES) + @rm -f obfusc$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(obfusc_OBJECTS) $(obfusc_LDADD) $(LIBS) +./divvy.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) +./palisade.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +palisade$(EXEEXT): $(palisade_OBJECTS) $(palisade_DEPENDENCIES) $(EXTRA_palisade_DEPENDENCIES) + @rm -f palisade$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(palisade_OBJECTS) $(palisade_LDADD) $(LIBS) +./pattern.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +pattern$(EXEEXT): $(pattern_OBJECTS) $(pattern_DEPENDENCIES) $(EXTRA_pattern_DEPENDENCIES) + @rm -f pattern$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(pattern_OBJECTS) $(pattern_LDADD) $(LIBS) + +patternpicture$(EXEEXT): $(patternpicture_OBJECTS) $(patternpicture_DEPENDENCIES) $(EXTRA_patternpicture_DEPENDENCIES) + @rm -f patternpicture$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(patternpicture_OBJECTS) $(patternpicture_LDADD) $(LIBS) + +patternsolver$(EXEEXT): $(patternsolver_OBJECTS) $(patternsolver_DEPENDENCIES) $(EXTRA_patternsolver_DEPENDENCIES) + @rm -f patternsolver$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(patternsolver_OBJECTS) $(patternsolver_LDADD) $(LIBS) +./pearl.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) +./tdq.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +pearl$(EXEEXT): $(pearl_OBJECTS) $(pearl_DEPENDENCIES) $(EXTRA_pearl_DEPENDENCIES) + @rm -f pearl$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(pearl_OBJECTS) $(pearl_LDADD) $(LIBS) + +pearlbench$(EXEEXT): $(pearlbench_OBJECTS) $(pearlbench_DEPENDENCIES) $(EXTRA_pearlbench_DEPENDENCIES) + @rm -f pearlbench$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(pearlbench_OBJECTS) $(pearlbench_LDADD) $(LIBS) +./pegs.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +pegs$(EXEEXT): $(pegs_OBJECTS) $(pegs_DEPENDENCIES) $(EXTRA_pegs_DEPENDENCIES) + @rm -f pegs$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(pegs_OBJECTS) $(pegs_LDADD) $(LIBS) +./range.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +range$(EXEEXT): $(range_OBJECTS) $(range_DEPENDENCIES) $(EXTRA_range_DEPENDENCIES) + @rm -f range$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(range_OBJECTS) $(range_LDADD) $(LIBS) +./rect.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +rect$(EXEEXT): $(rect_OBJECTS) $(rect_DEPENDENCIES) $(EXTRA_rect_DEPENDENCIES) + @rm -f rect$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(rect_OBJECTS) $(rect_LDADD) $(LIBS) +./samegame.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +samegame$(EXEEXT): $(samegame_OBJECTS) $(samegame_DEPENDENCIES) $(EXTRA_samegame_DEPENDENCIES) + @rm -f samegame$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(samegame_OBJECTS) $(samegame_LDADD) $(LIBS) +./signpost.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +signpost$(EXEEXT): $(signpost_OBJECTS) $(signpost_DEPENDENCIES) $(EXTRA_signpost_DEPENDENCIES) + @rm -f signpost$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(signpost_OBJECTS) $(signpost_LDADD) $(LIBS) + +signpostsolver$(EXEEXT): $(signpostsolver_OBJECTS) $(signpostsolver_DEPENDENCIES) $(EXTRA_signpostsolver_DEPENDENCIES) + @rm -f signpostsolver$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(signpostsolver_OBJECTS) $(signpostsolver_LDADD) $(LIBS) +./singles.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +singles$(EXEEXT): $(singles_OBJECTS) $(singles_DEPENDENCIES) $(EXTRA_singles_DEPENDENCIES) + @rm -f singles$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(singles_OBJECTS) $(singles_LDADD) $(LIBS) + +singlessolver$(EXEEXT): $(singlessolver_OBJECTS) $(singlessolver_DEPENDENCIES) $(EXTRA_singlessolver_DEPENDENCIES) + @rm -f singlessolver$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(singlessolver_OBJECTS) $(singlessolver_LDADD) $(LIBS) +./sixteen.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +sixteen$(EXEEXT): $(sixteen_OBJECTS) $(sixteen_DEPENDENCIES) $(EXTRA_sixteen_DEPENDENCIES) + @rm -f sixteen$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(sixteen_OBJECTS) $(sixteen_LDADD) $(LIBS) +./slant.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +slant$(EXEEXT): $(slant_OBJECTS) $(slant_DEPENDENCIES) $(EXTRA_slant_DEPENDENCIES) + @rm -f slant$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(slant_OBJECTS) $(slant_LDADD) $(LIBS) + +slantsolver$(EXEEXT): $(slantsolver_OBJECTS) $(slantsolver_DEPENDENCIES) $(EXTRA_slantsolver_DEPENDENCIES) + @rm -f slantsolver$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(slantsolver_OBJECTS) $(slantsolver_LDADD) $(LIBS) +./solo.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +solo$(EXEEXT): $(solo_OBJECTS) $(solo_DEPENDENCIES) $(EXTRA_solo_DEPENDENCIES) + @rm -f solo$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(solo_OBJECTS) $(solo_LDADD) $(LIBS) + +solosolver$(EXEEXT): $(solosolver_OBJECTS) $(solosolver_DEPENDENCIES) $(EXTRA_solosolver_DEPENDENCIES) + @rm -f solosolver$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(solosolver_OBJECTS) $(solosolver_LDADD) $(LIBS) +./tents.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +tents$(EXEEXT): $(tents_OBJECTS) $(tents_DEPENDENCIES) $(EXTRA_tents_DEPENDENCIES) + @rm -f tents$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(tents_OBJECTS) $(tents_LDADD) $(LIBS) + +tentssolver$(EXEEXT): $(tentssolver_OBJECTS) $(tentssolver_DEPENDENCIES) $(EXTRA_tentssolver_DEPENDENCIES) + @rm -f tentssolver$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(tentssolver_OBJECTS) $(tentssolver_LDADD) $(LIBS) +./towers.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +towers$(EXEEXT): $(towers_OBJECTS) $(towers_DEPENDENCIES) $(EXTRA_towers_DEPENDENCIES) + @rm -f towers$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(towers_OBJECTS) $(towers_LDADD) $(LIBS) + +towerssolver$(EXEEXT): $(towerssolver_OBJECTS) $(towerssolver_DEPENDENCIES) $(EXTRA_towerssolver_DEPENDENCIES) + @rm -f towerssolver$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(towerssolver_OBJECTS) $(towerssolver_LDADD) $(LIBS) +./tracks.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +tracks$(EXEEXT): $(tracks_OBJECTS) $(tracks_DEPENDENCIES) $(EXTRA_tracks_DEPENDENCIES) + @rm -f tracks$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(tracks_OBJECTS) $(tracks_LDADD) $(LIBS) +./twiddle.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +twiddle$(EXEEXT): $(twiddle_OBJECTS) $(twiddle_DEPENDENCIES) $(EXTRA_twiddle_DEPENDENCIES) + @rm -f twiddle$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(twiddle_OBJECTS) $(twiddle_LDADD) $(LIBS) +./undead.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +undead$(EXEEXT): $(undead_OBJECTS) $(undead_DEPENDENCIES) $(EXTRA_undead_DEPENDENCIES) + @rm -f undead$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(undead_OBJECTS) $(undead_LDADD) $(LIBS) +./unequal.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +unequal$(EXEEXT): $(unequal_OBJECTS) $(unequal_DEPENDENCIES) $(EXTRA_unequal_DEPENDENCIES) + @rm -f unequal$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(unequal_OBJECTS) $(unequal_LDADD) $(LIBS) + +unequalsolver$(EXEEXT): $(unequalsolver_OBJECTS) $(unequalsolver_DEPENDENCIES) $(EXTRA_unequalsolver_DEPENDENCIES) + @rm -f unequalsolver$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(unequalsolver_OBJECTS) $(unequalsolver_LDADD) $(LIBS) +./unruly.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +unruly$(EXEEXT): $(unruly_OBJECTS) $(unruly_DEPENDENCIES) $(EXTRA_unruly_DEPENDENCIES) + @rm -f unruly$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(unruly_OBJECTS) $(unruly_LDADD) $(LIBS) + +unrulysolver$(EXEEXT): $(unrulysolver_OBJECTS) $(unrulysolver_DEPENDENCIES) $(EXTRA_unrulysolver_DEPENDENCIES) + @rm -f unrulysolver$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(unrulysolver_OBJECTS) $(unrulysolver_LDADD) $(LIBS) +./untangle.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +untangle$(EXEEXT): $(untangle_OBJECTS) $(untangle_DEPENDENCIES) $(EXTRA_untangle_DEPENDENCIES) + @rm -f untangle$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(untangle_OBJECTS) $(untangle_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + -rm -f ./*.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/blackbox.Po +include ./$(DEPDIR)/bridges.Po +include ./$(DEPDIR)/combi.Po +include ./$(DEPDIR)/cube.Po +include ./$(DEPDIR)/divvy.Po +include ./$(DEPDIR)/dominosa.Po +include ./$(DEPDIR)/drawing.Po +include ./$(DEPDIR)/dsf.Po +include ./$(DEPDIR)/fifteen.Po +include ./$(DEPDIR)/filling.Po +include ./$(DEPDIR)/findloop.Po +include ./$(DEPDIR)/flip.Po +include ./$(DEPDIR)/flood.Po +include ./$(DEPDIR)/galaxies.Po +include ./$(DEPDIR)/grid.Po +include ./$(DEPDIR)/gtk.Po +include ./$(DEPDIR)/guess.Po +include ./$(DEPDIR)/inertia.Po +include ./$(DEPDIR)/keen.Po +include ./$(DEPDIR)/latin.Po +include ./$(DEPDIR)/laydomino.Po +include ./$(DEPDIR)/libfifteen2_a-fifteen.Po +include ./$(DEPDIR)/libfilling2_a-filling.Po +include ./$(DEPDIR)/libgalaxie2_a-galaxies.Po +include ./$(DEPDIR)/libgalaxie4_a-galaxies.Po +include ./$(DEPDIR)/libkeen2_a-keen.Po +include ./$(DEPDIR)/liblatin6_a-latin.Po +include ./$(DEPDIR)/liblatin8_a-latin.Po +include ./$(DEPDIR)/liblightup2_a-lightup.Po +include ./$(DEPDIR)/libloopy2_a-loopy.Po +include ./$(DEPDIR)/libmagnets2_a-magnets.Po +include ./$(DEPDIR)/libmap2_a-map.Po +include ./$(DEPDIR)/libmines2_a-mines.Po +include ./$(DEPDIR)/libpattern2_a-pattern.Po +include ./$(DEPDIR)/libpattern4_a-pattern.Po +include ./$(DEPDIR)/libpearl2_a-pearl.Po +include ./$(DEPDIR)/libsignpos2_a-signpost.Po +include ./$(DEPDIR)/libsingles3_a-singles.Po +include ./$(DEPDIR)/libslant2_a-slant.Po +include ./$(DEPDIR)/libsolo2_a-solo.Po +include ./$(DEPDIR)/libtents3_a-tents.Po +include ./$(DEPDIR)/libtowers2_a-towers.Po +include ./$(DEPDIR)/libunequal2_a-unequal.Po +include ./$(DEPDIR)/libunruly2_a-unruly.Po +include ./$(DEPDIR)/lightup.Po +include ./$(DEPDIR)/loopgen.Po +include ./$(DEPDIR)/loopy.Po +include ./$(DEPDIR)/magnets.Po +include ./$(DEPDIR)/malloc.Po +include ./$(DEPDIR)/map.Po +include ./$(DEPDIR)/maxflow.Po +include ./$(DEPDIR)/midend.Po +include ./$(DEPDIR)/mines.Po +include ./$(DEPDIR)/misc.Po +include ./$(DEPDIR)/net.Po +include ./$(DEPDIR)/netslide.Po +include ./$(DEPDIR)/no-icon.Po +include ./$(DEPDIR)/nullfe.Po +include ./$(DEPDIR)/nullgame.Po +include ./$(DEPDIR)/obfusc.Po +include ./$(DEPDIR)/palisade.Po +include ./$(DEPDIR)/pattern.Po +include ./$(DEPDIR)/pearl.Po +include ./$(DEPDIR)/pegs.Po +include ./$(DEPDIR)/penrose.Po +include ./$(DEPDIR)/printing.Po +include ./$(DEPDIR)/ps.Po +include ./$(DEPDIR)/random.Po +include ./$(DEPDIR)/range.Po +include ./$(DEPDIR)/rect.Po +include ./$(DEPDIR)/samegame.Po +include ./$(DEPDIR)/signpost.Po +include ./$(DEPDIR)/singles.Po +include ./$(DEPDIR)/sixteen.Po +include ./$(DEPDIR)/slant.Po +include ./$(DEPDIR)/solo.Po +include ./$(DEPDIR)/tdq.Po +include ./$(DEPDIR)/tents.Po +include ./$(DEPDIR)/towers.Po +include ./$(DEPDIR)/tracks.Po +include ./$(DEPDIR)/tree234.Po +include ./$(DEPDIR)/twiddle.Po +include ./$(DEPDIR)/undead.Po +include ./$(DEPDIR)/unequal.Po +include ./$(DEPDIR)/unruly.Po +include ./$(DEPDIR)/untangle.Po +include ./$(DEPDIR)/version.Po + +.c.o: + $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ + $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ + $(am__mv) $$depbase.Tpo $$depbase.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c -o $@ $< + +.c.obj: + $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ + $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ + $(am__mv) $$depbase.Tpo $$depbase.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +./libfifteen2_a-fifteen.o: ./fifteen.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfifteen2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libfifteen2_a-fifteen.o -MD -MP -MF $(DEPDIR)/libfifteen2_a-fifteen.Tpo -c -o ./libfifteen2_a-fifteen.o `test -f './fifteen.c' || echo '$(srcdir)/'`./fifteen.c + $(AM_V_at)$(am__mv) $(DEPDIR)/libfifteen2_a-fifteen.Tpo $(DEPDIR)/libfifteen2_a-fifteen.Po +# $(AM_V_CC)source='./fifteen.c' object='./libfifteen2_a-fifteen.o' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfifteen2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libfifteen2_a-fifteen.o `test -f './fifteen.c' || echo '$(srcdir)/'`./fifteen.c + +./libfifteen2_a-fifteen.obj: ./fifteen.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfifteen2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libfifteen2_a-fifteen.obj -MD -MP -MF $(DEPDIR)/libfifteen2_a-fifteen.Tpo -c -o ./libfifteen2_a-fifteen.obj `if test -f './fifteen.c'; then $(CYGPATH_W) './fifteen.c'; else $(CYGPATH_W) '$(srcdir)/./fifteen.c'; fi` + $(AM_V_at)$(am__mv) $(DEPDIR)/libfifteen2_a-fifteen.Tpo $(DEPDIR)/libfifteen2_a-fifteen.Po +# $(AM_V_CC)source='./fifteen.c' object='./libfifteen2_a-fifteen.obj' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfifteen2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libfifteen2_a-fifteen.obj `if test -f './fifteen.c'; then $(CYGPATH_W) './fifteen.c'; else $(CYGPATH_W) '$(srcdir)/./fifteen.c'; fi` + +./libfilling2_a-filling.o: ./filling.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfilling2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libfilling2_a-filling.o -MD -MP -MF $(DEPDIR)/libfilling2_a-filling.Tpo -c -o ./libfilling2_a-filling.o `test -f './filling.c' || echo '$(srcdir)/'`./filling.c + $(AM_V_at)$(am__mv) $(DEPDIR)/libfilling2_a-filling.Tpo $(DEPDIR)/libfilling2_a-filling.Po +# $(AM_V_CC)source='./filling.c' object='./libfilling2_a-filling.o' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfilling2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libfilling2_a-filling.o `test -f './filling.c' || echo '$(srcdir)/'`./filling.c + +./libfilling2_a-filling.obj: ./filling.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfilling2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libfilling2_a-filling.obj -MD -MP -MF $(DEPDIR)/libfilling2_a-filling.Tpo -c -o ./libfilling2_a-filling.obj `if test -f './filling.c'; then $(CYGPATH_W) './filling.c'; else $(CYGPATH_W) '$(srcdir)/./filling.c'; fi` + $(AM_V_at)$(am__mv) $(DEPDIR)/libfilling2_a-filling.Tpo $(DEPDIR)/libfilling2_a-filling.Po +# $(AM_V_CC)source='./filling.c' object='./libfilling2_a-filling.obj' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfilling2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libfilling2_a-filling.obj `if test -f './filling.c'; then $(CYGPATH_W) './filling.c'; else $(CYGPATH_W) '$(srcdir)/./filling.c'; fi` + +./libgalaxie2_a-galaxies.o: ./galaxies.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgalaxie2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libgalaxie2_a-galaxies.o -MD -MP -MF $(DEPDIR)/libgalaxie2_a-galaxies.Tpo -c -o ./libgalaxie2_a-galaxies.o `test -f './galaxies.c' || echo '$(srcdir)/'`./galaxies.c + $(AM_V_at)$(am__mv) $(DEPDIR)/libgalaxie2_a-galaxies.Tpo $(DEPDIR)/libgalaxie2_a-galaxies.Po +# $(AM_V_CC)source='./galaxies.c' object='./libgalaxie2_a-galaxies.o' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgalaxie2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libgalaxie2_a-galaxies.o `test -f './galaxies.c' || echo '$(srcdir)/'`./galaxies.c + +./libgalaxie2_a-galaxies.obj: ./galaxies.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgalaxie2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libgalaxie2_a-galaxies.obj -MD -MP -MF $(DEPDIR)/libgalaxie2_a-galaxies.Tpo -c -o ./libgalaxie2_a-galaxies.obj `if test -f './galaxies.c'; then $(CYGPATH_W) './galaxies.c'; else $(CYGPATH_W) '$(srcdir)/./galaxies.c'; fi` + $(AM_V_at)$(am__mv) $(DEPDIR)/libgalaxie2_a-galaxies.Tpo $(DEPDIR)/libgalaxie2_a-galaxies.Po +# $(AM_V_CC)source='./galaxies.c' object='./libgalaxie2_a-galaxies.obj' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgalaxie2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libgalaxie2_a-galaxies.obj `if test -f './galaxies.c'; then $(CYGPATH_W) './galaxies.c'; else $(CYGPATH_W) '$(srcdir)/./galaxies.c'; fi` + +./libgalaxie4_a-galaxies.o: ./galaxies.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgalaxie4_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libgalaxie4_a-galaxies.o -MD -MP -MF $(DEPDIR)/libgalaxie4_a-galaxies.Tpo -c -o ./libgalaxie4_a-galaxies.o `test -f './galaxies.c' || echo '$(srcdir)/'`./galaxies.c + $(AM_V_at)$(am__mv) $(DEPDIR)/libgalaxie4_a-galaxies.Tpo $(DEPDIR)/libgalaxie4_a-galaxies.Po +# $(AM_V_CC)source='./galaxies.c' object='./libgalaxie4_a-galaxies.o' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgalaxie4_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libgalaxie4_a-galaxies.o `test -f './galaxies.c' || echo '$(srcdir)/'`./galaxies.c + +./libgalaxie4_a-galaxies.obj: ./galaxies.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgalaxie4_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libgalaxie4_a-galaxies.obj -MD -MP -MF $(DEPDIR)/libgalaxie4_a-galaxies.Tpo -c -o ./libgalaxie4_a-galaxies.obj `if test -f './galaxies.c'; then $(CYGPATH_W) './galaxies.c'; else $(CYGPATH_W) '$(srcdir)/./galaxies.c'; fi` + $(AM_V_at)$(am__mv) $(DEPDIR)/libgalaxie4_a-galaxies.Tpo $(DEPDIR)/libgalaxie4_a-galaxies.Po +# $(AM_V_CC)source='./galaxies.c' object='./libgalaxie4_a-galaxies.obj' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgalaxie4_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libgalaxie4_a-galaxies.obj `if test -f './galaxies.c'; then $(CYGPATH_W) './galaxies.c'; else $(CYGPATH_W) '$(srcdir)/./galaxies.c'; fi` + +./libkeen2_a-keen.o: ./keen.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkeen2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libkeen2_a-keen.o -MD -MP -MF $(DEPDIR)/libkeen2_a-keen.Tpo -c -o ./libkeen2_a-keen.o `test -f './keen.c' || echo '$(srcdir)/'`./keen.c + $(AM_V_at)$(am__mv) $(DEPDIR)/libkeen2_a-keen.Tpo $(DEPDIR)/libkeen2_a-keen.Po +# $(AM_V_CC)source='./keen.c' object='./libkeen2_a-keen.o' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkeen2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libkeen2_a-keen.o `test -f './keen.c' || echo '$(srcdir)/'`./keen.c + +./libkeen2_a-keen.obj: ./keen.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkeen2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libkeen2_a-keen.obj -MD -MP -MF $(DEPDIR)/libkeen2_a-keen.Tpo -c -o ./libkeen2_a-keen.obj `if test -f './keen.c'; then $(CYGPATH_W) './keen.c'; else $(CYGPATH_W) '$(srcdir)/./keen.c'; fi` + $(AM_V_at)$(am__mv) $(DEPDIR)/libkeen2_a-keen.Tpo $(DEPDIR)/libkeen2_a-keen.Po +# $(AM_V_CC)source='./keen.c' object='./libkeen2_a-keen.obj' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkeen2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libkeen2_a-keen.obj `if test -f './keen.c'; then $(CYGPATH_W) './keen.c'; else $(CYGPATH_W) '$(srcdir)/./keen.c'; fi` + +./liblatin6_a-latin.o: ./latin.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblatin6_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./liblatin6_a-latin.o -MD -MP -MF $(DEPDIR)/liblatin6_a-latin.Tpo -c -o ./liblatin6_a-latin.o `test -f './latin.c' || echo '$(srcdir)/'`./latin.c + $(AM_V_at)$(am__mv) $(DEPDIR)/liblatin6_a-latin.Tpo $(DEPDIR)/liblatin6_a-latin.Po +# $(AM_V_CC)source='./latin.c' object='./liblatin6_a-latin.o' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblatin6_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./liblatin6_a-latin.o `test -f './latin.c' || echo '$(srcdir)/'`./latin.c + +./liblatin6_a-latin.obj: ./latin.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblatin6_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./liblatin6_a-latin.obj -MD -MP -MF $(DEPDIR)/liblatin6_a-latin.Tpo -c -o ./liblatin6_a-latin.obj `if test -f './latin.c'; then $(CYGPATH_W) './latin.c'; else $(CYGPATH_W) '$(srcdir)/./latin.c'; fi` + $(AM_V_at)$(am__mv) $(DEPDIR)/liblatin6_a-latin.Tpo $(DEPDIR)/liblatin6_a-latin.Po +# $(AM_V_CC)source='./latin.c' object='./liblatin6_a-latin.obj' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblatin6_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./liblatin6_a-latin.obj `if test -f './latin.c'; then $(CYGPATH_W) './latin.c'; else $(CYGPATH_W) '$(srcdir)/./latin.c'; fi` + +./liblatin8_a-latin.o: ./latin.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblatin8_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./liblatin8_a-latin.o -MD -MP -MF $(DEPDIR)/liblatin8_a-latin.Tpo -c -o ./liblatin8_a-latin.o `test -f './latin.c' || echo '$(srcdir)/'`./latin.c + $(AM_V_at)$(am__mv) $(DEPDIR)/liblatin8_a-latin.Tpo $(DEPDIR)/liblatin8_a-latin.Po +# $(AM_V_CC)source='./latin.c' object='./liblatin8_a-latin.o' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblatin8_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./liblatin8_a-latin.o `test -f './latin.c' || echo '$(srcdir)/'`./latin.c + +./liblatin8_a-latin.obj: ./latin.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblatin8_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./liblatin8_a-latin.obj -MD -MP -MF $(DEPDIR)/liblatin8_a-latin.Tpo -c -o ./liblatin8_a-latin.obj `if test -f './latin.c'; then $(CYGPATH_W) './latin.c'; else $(CYGPATH_W) '$(srcdir)/./latin.c'; fi` + $(AM_V_at)$(am__mv) $(DEPDIR)/liblatin8_a-latin.Tpo $(DEPDIR)/liblatin8_a-latin.Po +# $(AM_V_CC)source='./latin.c' object='./liblatin8_a-latin.obj' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblatin8_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./liblatin8_a-latin.obj `if test -f './latin.c'; then $(CYGPATH_W) './latin.c'; else $(CYGPATH_W) '$(srcdir)/./latin.c'; fi` + +./liblightup2_a-lightup.o: ./lightup.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblightup2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./liblightup2_a-lightup.o -MD -MP -MF $(DEPDIR)/liblightup2_a-lightup.Tpo -c -o ./liblightup2_a-lightup.o `test -f './lightup.c' || echo '$(srcdir)/'`./lightup.c + $(AM_V_at)$(am__mv) $(DEPDIR)/liblightup2_a-lightup.Tpo $(DEPDIR)/liblightup2_a-lightup.Po +# $(AM_V_CC)source='./lightup.c' object='./liblightup2_a-lightup.o' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblightup2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./liblightup2_a-lightup.o `test -f './lightup.c' || echo '$(srcdir)/'`./lightup.c + +./liblightup2_a-lightup.obj: ./lightup.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblightup2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./liblightup2_a-lightup.obj -MD -MP -MF $(DEPDIR)/liblightup2_a-lightup.Tpo -c -o ./liblightup2_a-lightup.obj `if test -f './lightup.c'; then $(CYGPATH_W) './lightup.c'; else $(CYGPATH_W) '$(srcdir)/./lightup.c'; fi` + $(AM_V_at)$(am__mv) $(DEPDIR)/liblightup2_a-lightup.Tpo $(DEPDIR)/liblightup2_a-lightup.Po +# $(AM_V_CC)source='./lightup.c' object='./liblightup2_a-lightup.obj' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblightup2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./liblightup2_a-lightup.obj `if test -f './lightup.c'; then $(CYGPATH_W) './lightup.c'; else $(CYGPATH_W) '$(srcdir)/./lightup.c'; fi` + +./libloopy2_a-loopy.o: ./loopy.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libloopy2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libloopy2_a-loopy.o -MD -MP -MF $(DEPDIR)/libloopy2_a-loopy.Tpo -c -o ./libloopy2_a-loopy.o `test -f './loopy.c' || echo '$(srcdir)/'`./loopy.c + $(AM_V_at)$(am__mv) $(DEPDIR)/libloopy2_a-loopy.Tpo $(DEPDIR)/libloopy2_a-loopy.Po +# $(AM_V_CC)source='./loopy.c' object='./libloopy2_a-loopy.o' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libloopy2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libloopy2_a-loopy.o `test -f './loopy.c' || echo '$(srcdir)/'`./loopy.c + +./libloopy2_a-loopy.obj: ./loopy.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libloopy2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libloopy2_a-loopy.obj -MD -MP -MF $(DEPDIR)/libloopy2_a-loopy.Tpo -c -o ./libloopy2_a-loopy.obj `if test -f './loopy.c'; then $(CYGPATH_W) './loopy.c'; else $(CYGPATH_W) '$(srcdir)/./loopy.c'; fi` + $(AM_V_at)$(am__mv) $(DEPDIR)/libloopy2_a-loopy.Tpo $(DEPDIR)/libloopy2_a-loopy.Po +# $(AM_V_CC)source='./loopy.c' object='./libloopy2_a-loopy.obj' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libloopy2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libloopy2_a-loopy.obj `if test -f './loopy.c'; then $(CYGPATH_W) './loopy.c'; else $(CYGPATH_W) '$(srcdir)/./loopy.c'; fi` + +./libmagnets2_a-magnets.o: ./magnets.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmagnets2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libmagnets2_a-magnets.o -MD -MP -MF $(DEPDIR)/libmagnets2_a-magnets.Tpo -c -o ./libmagnets2_a-magnets.o `test -f './magnets.c' || echo '$(srcdir)/'`./magnets.c + $(AM_V_at)$(am__mv) $(DEPDIR)/libmagnets2_a-magnets.Tpo $(DEPDIR)/libmagnets2_a-magnets.Po +# $(AM_V_CC)source='./magnets.c' object='./libmagnets2_a-magnets.o' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmagnets2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libmagnets2_a-magnets.o `test -f './magnets.c' || echo '$(srcdir)/'`./magnets.c + +./libmagnets2_a-magnets.obj: ./magnets.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmagnets2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libmagnets2_a-magnets.obj -MD -MP -MF $(DEPDIR)/libmagnets2_a-magnets.Tpo -c -o ./libmagnets2_a-magnets.obj `if test -f './magnets.c'; then $(CYGPATH_W) './magnets.c'; else $(CYGPATH_W) '$(srcdir)/./magnets.c'; fi` + $(AM_V_at)$(am__mv) $(DEPDIR)/libmagnets2_a-magnets.Tpo $(DEPDIR)/libmagnets2_a-magnets.Po +# $(AM_V_CC)source='./magnets.c' object='./libmagnets2_a-magnets.obj' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmagnets2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libmagnets2_a-magnets.obj `if test -f './magnets.c'; then $(CYGPATH_W) './magnets.c'; else $(CYGPATH_W) '$(srcdir)/./magnets.c'; fi` + +./libmap2_a-map.o: ./map.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmap2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libmap2_a-map.o -MD -MP -MF $(DEPDIR)/libmap2_a-map.Tpo -c -o ./libmap2_a-map.o `test -f './map.c' || echo '$(srcdir)/'`./map.c + $(AM_V_at)$(am__mv) $(DEPDIR)/libmap2_a-map.Tpo $(DEPDIR)/libmap2_a-map.Po +# $(AM_V_CC)source='./map.c' object='./libmap2_a-map.o' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmap2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libmap2_a-map.o `test -f './map.c' || echo '$(srcdir)/'`./map.c + +./libmap2_a-map.obj: ./map.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmap2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libmap2_a-map.obj -MD -MP -MF $(DEPDIR)/libmap2_a-map.Tpo -c -o ./libmap2_a-map.obj `if test -f './map.c'; then $(CYGPATH_W) './map.c'; else $(CYGPATH_W) '$(srcdir)/./map.c'; fi` + $(AM_V_at)$(am__mv) $(DEPDIR)/libmap2_a-map.Tpo $(DEPDIR)/libmap2_a-map.Po +# $(AM_V_CC)source='./map.c' object='./libmap2_a-map.obj' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmap2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libmap2_a-map.obj `if test -f './map.c'; then $(CYGPATH_W) './map.c'; else $(CYGPATH_W) '$(srcdir)/./map.c'; fi` + +./libmines2_a-mines.o: ./mines.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmines2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libmines2_a-mines.o -MD -MP -MF $(DEPDIR)/libmines2_a-mines.Tpo -c -o ./libmines2_a-mines.o `test -f './mines.c' || echo '$(srcdir)/'`./mines.c + $(AM_V_at)$(am__mv) $(DEPDIR)/libmines2_a-mines.Tpo $(DEPDIR)/libmines2_a-mines.Po +# $(AM_V_CC)source='./mines.c' object='./libmines2_a-mines.o' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmines2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libmines2_a-mines.o `test -f './mines.c' || echo '$(srcdir)/'`./mines.c + +./libmines2_a-mines.obj: ./mines.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmines2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libmines2_a-mines.obj -MD -MP -MF $(DEPDIR)/libmines2_a-mines.Tpo -c -o ./libmines2_a-mines.obj `if test -f './mines.c'; then $(CYGPATH_W) './mines.c'; else $(CYGPATH_W) '$(srcdir)/./mines.c'; fi` + $(AM_V_at)$(am__mv) $(DEPDIR)/libmines2_a-mines.Tpo $(DEPDIR)/libmines2_a-mines.Po +# $(AM_V_CC)source='./mines.c' object='./libmines2_a-mines.obj' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmines2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libmines2_a-mines.obj `if test -f './mines.c'; then $(CYGPATH_W) './mines.c'; else $(CYGPATH_W) '$(srcdir)/./mines.c'; fi` + +./libpattern2_a-pattern.o: ./pattern.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpattern2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libpattern2_a-pattern.o -MD -MP -MF $(DEPDIR)/libpattern2_a-pattern.Tpo -c -o ./libpattern2_a-pattern.o `test -f './pattern.c' || echo '$(srcdir)/'`./pattern.c + $(AM_V_at)$(am__mv) $(DEPDIR)/libpattern2_a-pattern.Tpo $(DEPDIR)/libpattern2_a-pattern.Po +# $(AM_V_CC)source='./pattern.c' object='./libpattern2_a-pattern.o' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpattern2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libpattern2_a-pattern.o `test -f './pattern.c' || echo '$(srcdir)/'`./pattern.c + +./libpattern2_a-pattern.obj: ./pattern.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpattern2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libpattern2_a-pattern.obj -MD -MP -MF $(DEPDIR)/libpattern2_a-pattern.Tpo -c -o ./libpattern2_a-pattern.obj `if test -f './pattern.c'; then $(CYGPATH_W) './pattern.c'; else $(CYGPATH_W) '$(srcdir)/./pattern.c'; fi` + $(AM_V_at)$(am__mv) $(DEPDIR)/libpattern2_a-pattern.Tpo $(DEPDIR)/libpattern2_a-pattern.Po +# $(AM_V_CC)source='./pattern.c' object='./libpattern2_a-pattern.obj' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpattern2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libpattern2_a-pattern.obj `if test -f './pattern.c'; then $(CYGPATH_W) './pattern.c'; else $(CYGPATH_W) '$(srcdir)/./pattern.c'; fi` + +./libpattern4_a-pattern.o: ./pattern.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpattern4_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libpattern4_a-pattern.o -MD -MP -MF $(DEPDIR)/libpattern4_a-pattern.Tpo -c -o ./libpattern4_a-pattern.o `test -f './pattern.c' || echo '$(srcdir)/'`./pattern.c + $(AM_V_at)$(am__mv) $(DEPDIR)/libpattern4_a-pattern.Tpo $(DEPDIR)/libpattern4_a-pattern.Po +# $(AM_V_CC)source='./pattern.c' object='./libpattern4_a-pattern.o' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpattern4_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libpattern4_a-pattern.o `test -f './pattern.c' || echo '$(srcdir)/'`./pattern.c + +./libpattern4_a-pattern.obj: ./pattern.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpattern4_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libpattern4_a-pattern.obj -MD -MP -MF $(DEPDIR)/libpattern4_a-pattern.Tpo -c -o ./libpattern4_a-pattern.obj `if test -f './pattern.c'; then $(CYGPATH_W) './pattern.c'; else $(CYGPATH_W) '$(srcdir)/./pattern.c'; fi` + $(AM_V_at)$(am__mv) $(DEPDIR)/libpattern4_a-pattern.Tpo $(DEPDIR)/libpattern4_a-pattern.Po +# $(AM_V_CC)source='./pattern.c' object='./libpattern4_a-pattern.obj' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpattern4_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libpattern4_a-pattern.obj `if test -f './pattern.c'; then $(CYGPATH_W) './pattern.c'; else $(CYGPATH_W) '$(srcdir)/./pattern.c'; fi` + +./libpearl2_a-pearl.o: ./pearl.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpearl2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libpearl2_a-pearl.o -MD -MP -MF $(DEPDIR)/libpearl2_a-pearl.Tpo -c -o ./libpearl2_a-pearl.o `test -f './pearl.c' || echo '$(srcdir)/'`./pearl.c + $(AM_V_at)$(am__mv) $(DEPDIR)/libpearl2_a-pearl.Tpo $(DEPDIR)/libpearl2_a-pearl.Po +# $(AM_V_CC)source='./pearl.c' object='./libpearl2_a-pearl.o' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpearl2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libpearl2_a-pearl.o `test -f './pearl.c' || echo '$(srcdir)/'`./pearl.c + +./libpearl2_a-pearl.obj: ./pearl.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpearl2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libpearl2_a-pearl.obj -MD -MP -MF $(DEPDIR)/libpearl2_a-pearl.Tpo -c -o ./libpearl2_a-pearl.obj `if test -f './pearl.c'; then $(CYGPATH_W) './pearl.c'; else $(CYGPATH_W) '$(srcdir)/./pearl.c'; fi` + $(AM_V_at)$(am__mv) $(DEPDIR)/libpearl2_a-pearl.Tpo $(DEPDIR)/libpearl2_a-pearl.Po +# $(AM_V_CC)source='./pearl.c' object='./libpearl2_a-pearl.obj' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpearl2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libpearl2_a-pearl.obj `if test -f './pearl.c'; then $(CYGPATH_W) './pearl.c'; else $(CYGPATH_W) '$(srcdir)/./pearl.c'; fi` + +./libsignpos2_a-signpost.o: ./signpost.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsignpos2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libsignpos2_a-signpost.o -MD -MP -MF $(DEPDIR)/libsignpos2_a-signpost.Tpo -c -o ./libsignpos2_a-signpost.o `test -f './signpost.c' || echo '$(srcdir)/'`./signpost.c + $(AM_V_at)$(am__mv) $(DEPDIR)/libsignpos2_a-signpost.Tpo $(DEPDIR)/libsignpos2_a-signpost.Po +# $(AM_V_CC)source='./signpost.c' object='./libsignpos2_a-signpost.o' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsignpos2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libsignpos2_a-signpost.o `test -f './signpost.c' || echo '$(srcdir)/'`./signpost.c + +./libsignpos2_a-signpost.obj: ./signpost.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsignpos2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libsignpos2_a-signpost.obj -MD -MP -MF $(DEPDIR)/libsignpos2_a-signpost.Tpo -c -o ./libsignpos2_a-signpost.obj `if test -f './signpost.c'; then $(CYGPATH_W) './signpost.c'; else $(CYGPATH_W) '$(srcdir)/./signpost.c'; fi` + $(AM_V_at)$(am__mv) $(DEPDIR)/libsignpos2_a-signpost.Tpo $(DEPDIR)/libsignpos2_a-signpost.Po +# $(AM_V_CC)source='./signpost.c' object='./libsignpos2_a-signpost.obj' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsignpos2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libsignpos2_a-signpost.obj `if test -f './signpost.c'; then $(CYGPATH_W) './signpost.c'; else $(CYGPATH_W) '$(srcdir)/./signpost.c'; fi` + +./libsingles3_a-singles.o: ./singles.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsingles3_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libsingles3_a-singles.o -MD -MP -MF $(DEPDIR)/libsingles3_a-singles.Tpo -c -o ./libsingles3_a-singles.o `test -f './singles.c' || echo '$(srcdir)/'`./singles.c + $(AM_V_at)$(am__mv) $(DEPDIR)/libsingles3_a-singles.Tpo $(DEPDIR)/libsingles3_a-singles.Po +# $(AM_V_CC)source='./singles.c' object='./libsingles3_a-singles.o' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsingles3_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libsingles3_a-singles.o `test -f './singles.c' || echo '$(srcdir)/'`./singles.c + +./libsingles3_a-singles.obj: ./singles.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsingles3_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libsingles3_a-singles.obj -MD -MP -MF $(DEPDIR)/libsingles3_a-singles.Tpo -c -o ./libsingles3_a-singles.obj `if test -f './singles.c'; then $(CYGPATH_W) './singles.c'; else $(CYGPATH_W) '$(srcdir)/./singles.c'; fi` + $(AM_V_at)$(am__mv) $(DEPDIR)/libsingles3_a-singles.Tpo $(DEPDIR)/libsingles3_a-singles.Po +# $(AM_V_CC)source='./singles.c' object='./libsingles3_a-singles.obj' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsingles3_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libsingles3_a-singles.obj `if test -f './singles.c'; then $(CYGPATH_W) './singles.c'; else $(CYGPATH_W) '$(srcdir)/./singles.c'; fi` + +./libslant2_a-slant.o: ./slant.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libslant2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libslant2_a-slant.o -MD -MP -MF $(DEPDIR)/libslant2_a-slant.Tpo -c -o ./libslant2_a-slant.o `test -f './slant.c' || echo '$(srcdir)/'`./slant.c + $(AM_V_at)$(am__mv) $(DEPDIR)/libslant2_a-slant.Tpo $(DEPDIR)/libslant2_a-slant.Po +# $(AM_V_CC)source='./slant.c' object='./libslant2_a-slant.o' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libslant2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libslant2_a-slant.o `test -f './slant.c' || echo '$(srcdir)/'`./slant.c + +./libslant2_a-slant.obj: ./slant.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libslant2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libslant2_a-slant.obj -MD -MP -MF $(DEPDIR)/libslant2_a-slant.Tpo -c -o ./libslant2_a-slant.obj `if test -f './slant.c'; then $(CYGPATH_W) './slant.c'; else $(CYGPATH_W) '$(srcdir)/./slant.c'; fi` + $(AM_V_at)$(am__mv) $(DEPDIR)/libslant2_a-slant.Tpo $(DEPDIR)/libslant2_a-slant.Po +# $(AM_V_CC)source='./slant.c' object='./libslant2_a-slant.obj' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libslant2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libslant2_a-slant.obj `if test -f './slant.c'; then $(CYGPATH_W) './slant.c'; else $(CYGPATH_W) '$(srcdir)/./slant.c'; fi` + +./libsolo2_a-solo.o: ./solo.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsolo2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libsolo2_a-solo.o -MD -MP -MF $(DEPDIR)/libsolo2_a-solo.Tpo -c -o ./libsolo2_a-solo.o `test -f './solo.c' || echo '$(srcdir)/'`./solo.c + $(AM_V_at)$(am__mv) $(DEPDIR)/libsolo2_a-solo.Tpo $(DEPDIR)/libsolo2_a-solo.Po +# $(AM_V_CC)source='./solo.c' object='./libsolo2_a-solo.o' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsolo2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libsolo2_a-solo.o `test -f './solo.c' || echo '$(srcdir)/'`./solo.c + +./libsolo2_a-solo.obj: ./solo.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsolo2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libsolo2_a-solo.obj -MD -MP -MF $(DEPDIR)/libsolo2_a-solo.Tpo -c -o ./libsolo2_a-solo.obj `if test -f './solo.c'; then $(CYGPATH_W) './solo.c'; else $(CYGPATH_W) '$(srcdir)/./solo.c'; fi` + $(AM_V_at)$(am__mv) $(DEPDIR)/libsolo2_a-solo.Tpo $(DEPDIR)/libsolo2_a-solo.Po +# $(AM_V_CC)source='./solo.c' object='./libsolo2_a-solo.obj' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsolo2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libsolo2_a-solo.obj `if test -f './solo.c'; then $(CYGPATH_W) './solo.c'; else $(CYGPATH_W) '$(srcdir)/./solo.c'; fi` + +./libtents3_a-tents.o: ./tents.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtents3_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libtents3_a-tents.o -MD -MP -MF $(DEPDIR)/libtents3_a-tents.Tpo -c -o ./libtents3_a-tents.o `test -f './tents.c' || echo '$(srcdir)/'`./tents.c + $(AM_V_at)$(am__mv) $(DEPDIR)/libtents3_a-tents.Tpo $(DEPDIR)/libtents3_a-tents.Po +# $(AM_V_CC)source='./tents.c' object='./libtents3_a-tents.o' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtents3_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libtents3_a-tents.o `test -f './tents.c' || echo '$(srcdir)/'`./tents.c + +./libtents3_a-tents.obj: ./tents.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtents3_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libtents3_a-tents.obj -MD -MP -MF $(DEPDIR)/libtents3_a-tents.Tpo -c -o ./libtents3_a-tents.obj `if test -f './tents.c'; then $(CYGPATH_W) './tents.c'; else $(CYGPATH_W) '$(srcdir)/./tents.c'; fi` + $(AM_V_at)$(am__mv) $(DEPDIR)/libtents3_a-tents.Tpo $(DEPDIR)/libtents3_a-tents.Po +# $(AM_V_CC)source='./tents.c' object='./libtents3_a-tents.obj' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtents3_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libtents3_a-tents.obj `if test -f './tents.c'; then $(CYGPATH_W) './tents.c'; else $(CYGPATH_W) '$(srcdir)/./tents.c'; fi` + +./libtowers2_a-towers.o: ./towers.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtowers2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libtowers2_a-towers.o -MD -MP -MF $(DEPDIR)/libtowers2_a-towers.Tpo -c -o ./libtowers2_a-towers.o `test -f './towers.c' || echo '$(srcdir)/'`./towers.c + $(AM_V_at)$(am__mv) $(DEPDIR)/libtowers2_a-towers.Tpo $(DEPDIR)/libtowers2_a-towers.Po +# $(AM_V_CC)source='./towers.c' object='./libtowers2_a-towers.o' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtowers2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libtowers2_a-towers.o `test -f './towers.c' || echo '$(srcdir)/'`./towers.c + +./libtowers2_a-towers.obj: ./towers.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtowers2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libtowers2_a-towers.obj -MD -MP -MF $(DEPDIR)/libtowers2_a-towers.Tpo -c -o ./libtowers2_a-towers.obj `if test -f './towers.c'; then $(CYGPATH_W) './towers.c'; else $(CYGPATH_W) '$(srcdir)/./towers.c'; fi` + $(AM_V_at)$(am__mv) $(DEPDIR)/libtowers2_a-towers.Tpo $(DEPDIR)/libtowers2_a-towers.Po +# $(AM_V_CC)source='./towers.c' object='./libtowers2_a-towers.obj' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtowers2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libtowers2_a-towers.obj `if test -f './towers.c'; then $(CYGPATH_W) './towers.c'; else $(CYGPATH_W) '$(srcdir)/./towers.c'; fi` + +./libunequal2_a-unequal.o: ./unequal.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunequal2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libunequal2_a-unequal.o -MD -MP -MF $(DEPDIR)/libunequal2_a-unequal.Tpo -c -o ./libunequal2_a-unequal.o `test -f './unequal.c' || echo '$(srcdir)/'`./unequal.c + $(AM_V_at)$(am__mv) $(DEPDIR)/libunequal2_a-unequal.Tpo $(DEPDIR)/libunequal2_a-unequal.Po +# $(AM_V_CC)source='./unequal.c' object='./libunequal2_a-unequal.o' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunequal2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libunequal2_a-unequal.o `test -f './unequal.c' || echo '$(srcdir)/'`./unequal.c + +./libunequal2_a-unequal.obj: ./unequal.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunequal2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libunequal2_a-unequal.obj -MD -MP -MF $(DEPDIR)/libunequal2_a-unequal.Tpo -c -o ./libunequal2_a-unequal.obj `if test -f './unequal.c'; then $(CYGPATH_W) './unequal.c'; else $(CYGPATH_W) '$(srcdir)/./unequal.c'; fi` + $(AM_V_at)$(am__mv) $(DEPDIR)/libunequal2_a-unequal.Tpo $(DEPDIR)/libunequal2_a-unequal.Po +# $(AM_V_CC)source='./unequal.c' object='./libunequal2_a-unequal.obj' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunequal2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libunequal2_a-unequal.obj `if test -f './unequal.c'; then $(CYGPATH_W) './unequal.c'; else $(CYGPATH_W) '$(srcdir)/./unequal.c'; fi` + +./libunruly2_a-unruly.o: ./unruly.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunruly2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libunruly2_a-unruly.o -MD -MP -MF $(DEPDIR)/libunruly2_a-unruly.Tpo -c -o ./libunruly2_a-unruly.o `test -f './unruly.c' || echo '$(srcdir)/'`./unruly.c + $(AM_V_at)$(am__mv) $(DEPDIR)/libunruly2_a-unruly.Tpo $(DEPDIR)/libunruly2_a-unruly.Po +# $(AM_V_CC)source='./unruly.c' object='./libunruly2_a-unruly.o' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunruly2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libunruly2_a-unruly.o `test -f './unruly.c' || echo '$(srcdir)/'`./unruly.c + +./libunruly2_a-unruly.obj: ./unruly.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunruly2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libunruly2_a-unruly.obj -MD -MP -MF $(DEPDIR)/libunruly2_a-unruly.Tpo -c -o ./libunruly2_a-unruly.obj `if test -f './unruly.c'; then $(CYGPATH_W) './unruly.c'; else $(CYGPATH_W) '$(srcdir)/./unruly.c'; fi` + $(AM_V_at)$(am__mv) $(DEPDIR)/libunruly2_a-unruly.Tpo $(DEPDIR)/libunruly2_a-unruly.Po +# $(AM_V_CC)source='./unruly.c' object='./libunruly2_a-unruly.obj' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunruly2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libunruly2_a-unruly.obj `if test -f './unruly.c'; then $(CYGPATH_W) './unruly.c'; else $(CYGPATH_W) '$(srcdir)/./unruly.c'; fi` + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscope: cscope.files + test ! -s cscope.files \ + || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) +clean-cscope: + -rm -f cscope.files +cscope.files: clean-cscope cscopelist +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + -rm -f cscope.out cscope.in.out cscope.po.out cscope.files + +distdir: $(DISTFILES) + $(am__remove_distdir) + test -d "$(distdir)" || mkdir "$(distdir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz + $(am__post_remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + $(am__post_remove_distdir) + +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz + $(am__post_remove_distdir) + +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz + $(am__post_remove_distdir) + +dist-tarZ: distdir + @echo WARNING: "Support for distribution archives compressed with" \ + "legacy program 'compress' is deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__post_remove_distdir) + +dist-shar: distdir + @echo WARNING: "Support for shar distribution archives is" \ + "deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz + $(am__post_remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__post_remove_distdir) + +dist dist-all: + $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' + $(am__post_remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir) + chmod u+w $(distdir) + mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build/sub \ + && ../../configure \ + $(AM_DISTCHECK_CONFIGURE_FLAGS) \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + --srcdir=../.. --prefix="$$dc_install_base" \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__post_remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @test -n '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: trying to run $@ with an empty' \ + '$$(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + $(am__cd) '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-am +all-am: Makefile $(LIBRARIES) $(PROGRAMS) +installdirs: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -rm -f ./$(am__dirstamp) + -test -z "$(DEPDIR)/$(am__dirstamp)" || rm -f $(DEPDIR)/$(am__dirstamp) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic clean-noinstLIBRARIES \ + clean-noinstPROGRAMS mostlyclean-am + +distclean: distclean-am + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am am--refresh check check-am clean \ + clean-binPROGRAMS clean-cscope clean-generic \ + clean-noinstLIBRARIES clean-noinstPROGRAMS cscope \ + cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ + dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \ + distcheck distclean distclean-compile distclean-generic \ + distclean-tags distcleancheck distdir distuninstallcheck dvi \ + dvi-am html html-am info info-am install install-am \ + install-binPROGRAMS install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am uninstall-binPROGRAMS + +.PRECIOUS: Makefile + test: benchmark.html benchmark.txt benchmark.html: benchmark.txt benchmark.pl @@ -722,6 +2606,6 @@ benchmark.html: benchmark.txt benchmark.pl benchmark.txt: benchmark.sh $(GAMES) ./benchmark.sh > $@ - -clean: - rm -f *.o $(BINPREFIX)blackbox $(BINPREFIX)bridges $(BINPREFIX)cube $(BINPREFIX)dominosa $(BINPREFIX)fifteen $(BINPREFIX)fifteensolver $(BINPREFIX)filling $(BINPREFIX)fillingsolver $(BINPREFIX)flip $(BINPREFIX)flood $(BINPREFIX)galaxies $(BINPREFIX)galaxiespicture $(BINPREFIX)galaxiessolver $(BINPREFIX)guess $(BINPREFIX)inertia $(BINPREFIX)keen $(BINPREFIX)keensolver $(BINPREFIX)latincheck $(BINPREFIX)lightup $(BINPREFIX)lightupsolver $(BINPREFIX)loopy $(BINPREFIX)loopysolver $(BINPREFIX)magnets $(BINPREFIX)magnetssolver $(BINPREFIX)map $(BINPREFIX)mapsolver $(BINPREFIX)mineobfusc $(BINPREFIX)mines $(BINPREFIX)net $(BINPREFIX)netslide $(BINPREFIX)nullgame $(BINPREFIX)obfusc $(BINPREFIX)palisade $(BINPREFIX)pattern $(BINPREFIX)patternpicture $(BINPREFIX)patternsolver $(BINPREFIX)pearl $(BINPREFIX)pearlbench $(BINPREFIX)pegs $(BINPREFIX)range $(BINPREFIX)rect $(BINPREFIX)samegame $(BINPREFIX)signpost $(BINPREFIX)signpostsolver $(BINPREFIX)singles $(BINPREFIX)singlessolver $(BINPREFIX)sixteen $(BINPREFIX)slant $(BINPREFIX)slantsolver $(BINPREFIX)solo $(BINPREFIX)solosolver $(BINPREFIX)tents $(BINPREFIX)tentssolver $(BINPREFIX)towers $(BINPREFIX)towerssolver $(BINPREFIX)tracks $(BINPREFIX)twiddle $(BINPREFIX)undead $(BINPREFIX)unequal $(BINPREFIX)unequalsolver $(BINPREFIX)unruly $(BINPREFIX)unrulysolver $(BINPREFIX)untangle +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/apps/plugins/puzzles/src/Makefile.in b/apps/plugins/puzzles/src/Makefile.in index b86194f893..58154a8d74 100644 --- a/apps/plugins/puzzles/src/Makefile.in +++ b/apps/plugins/puzzles/src/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, diff --git a/apps/plugins/puzzles/src/aclocal.m4 b/apps/plugins/puzzles/src/aclocal.m4 index 6e4efedfb6..04369a2130 100644 --- a/apps/plugins/puzzles/src/aclocal.m4 +++ b/apps/plugins/puzzles/src/aclocal.m4 @@ -1,6 +1,6 @@ -# generated automatically by aclocal 1.15 -*- Autoconf -*- +# generated automatically by aclocal 1.15.1 -*- Autoconf -*- -# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2017 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -424,9 +424,9 @@ AC_DEFUN([GTK_CHECK_BACKEND], fi ]) -dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- -dnl serial 11 (pkg-config-0.29.1) -dnl +# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +# serial 12 (pkg-config-0.29.2) + dnl Copyright © 2004 Scott James Remnant . dnl Copyright © 2012-2015 Dan Nicholson dnl @@ -467,7 +467,7 @@ dnl dnl See the "Since" comment for each macro you use to see what version dnl of the macros you require. m4_defun([PKG_PREREQ], -[m4_define([PKG_MACROS_VERSION], [0.29.1]) +[m4_define([PKG_MACROS_VERSION], [0.29.2]) m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) ])dnl PKG_PREREQ @@ -568,7 +568,7 @@ AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no -AC_MSG_CHECKING([for $1]) +AC_MSG_CHECKING([for $2]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) @@ -578,11 +578,11 @@ and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then - AC_MSG_RESULT([no]) + AC_MSG_RESULT([no]) _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` - else + else $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs @@ -599,7 +599,7 @@ installed software in a non-standard prefix. _PKG_TEXT])[]dnl ]) elif test $pkg_failed = untried; then - AC_MSG_RESULT([no]) + AC_MSG_RESULT([no]) m4_default([$4], [AC_MSG_FAILURE( [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full @@ -700,7 +700,7 @@ AS_VAR_COPY([$1], [pkg_cv_][$1]) AS_VAR_IF([$1], [""], [$5], [$4])dnl ])dnl PKG_CHECK_VAR -# Copyright (C) 2002-2014 Free Software Foundation, Inc. +# Copyright (C) 2002-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -715,7 +715,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.15' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.15], [], +m4_if([$1], [1.15.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -731,14 +731,14 @@ m4_define([_AM_AUTOCONF_VERSION], []) # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.15])dnl +[AM_AUTOMAKE_VERSION([1.15.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -790,7 +790,7 @@ am_aux_dir=`cd "$ac_aux_dir" && pwd` # AM_CONDITIONAL -*- Autoconf -*- -# Copyright (C) 1997-2014 Free Software Foundation, Inc. +# Copyright (C) 1997-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -821,7 +821,7 @@ AC_CONFIG_COMMANDS_PRE( Usually this means the macro was only invoked conditionally.]]) fi])]) -# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1012,7 +1012,7 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl # Generate code to set up dependency tracking. -*- Autoconf -*- -# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1088,7 +1088,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], # Do all the work for Automake. -*- Autoconf -*- -# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1285,7 +1285,7 @@ for _am_header in $config_headers :; do done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1306,7 +1306,7 @@ if test x"${install_sh+set}" != xset; then fi AC_SUBST([install_sh])]) -# Copyright (C) 2003-2014 Free Software Foundation, Inc. +# Copyright (C) 2003-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1327,7 +1327,7 @@ AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1377,7 +1377,7 @@ rm -f confinc confmf # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- -# Copyright (C) 1997-2014 Free Software Foundation, Inc. +# Copyright (C) 1997-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1416,7 +1416,7 @@ fi # Helper functions for option handling. -*- Autoconf -*- -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1445,7 +1445,7 @@ AC_DEFUN([_AM_SET_OPTIONS], AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) -# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1492,7 +1492,7 @@ AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1511,7 +1511,7 @@ AC_DEFUN([AM_RUN_LOG], # Check to make sure that the build environment is sane. -*- Autoconf -*- -# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1592,7 +1592,7 @@ AC_CONFIG_COMMANDS_PRE( rm -f conftest.file ]) -# Copyright (C) 2009-2014 Free Software Foundation, Inc. +# Copyright (C) 2009-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1652,7 +1652,7 @@ AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1680,7 +1680,7 @@ fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) -# Copyright (C) 2006-2014 Free Software Foundation, Inc. +# Copyright (C) 2006-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1699,7 +1699,7 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- -# Copyright (C) 2004-2014 Free Software Foundation, Inc. +# Copyright (C) 2004-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, diff --git a/apps/plugins/puzzles/src/blackbox.c b/apps/plugins/puzzles/src/blackbox.c index 192b7f11b6..ffc7f7c587 100644 --- a/apps/plugins/puzzles/src/blackbox.c +++ b/apps/plugins/puzzles/src/blackbox.c @@ -148,14 +148,12 @@ static config_item *game_configure(const game_params *params) ret[0].name = "Width"; ret[0].type = C_STRING; sprintf(buf, "%d", params->w); - ret[0].sval = dupstr(buf); - ret[0].ival = 0; + ret[0].u.string.sval = dupstr(buf); ret[1].name = "Height"; ret[1].type = C_STRING; sprintf(buf, "%d", params->h); - ret[1].sval = dupstr(buf); - ret[1].ival = 0; + ret[1].u.string.sval = dupstr(buf); ret[2].name = "No. of balls"; ret[2].type = C_STRING; @@ -163,13 +161,10 @@ static config_item *game_configure(const game_params *params) sprintf(buf, "%d", params->minballs); else sprintf(buf, "%d-%d", params->minballs, params->maxballs); - ret[2].sval = dupstr(buf); - ret[2].ival = 0; + ret[2].u.string.sval = dupstr(buf); ret[3].name = NULL; ret[3].type = C_END; - ret[3].sval = NULL; - ret[3].ival = 0; return ret; } @@ -178,17 +173,18 @@ static game_params *custom_params(const config_item *cfg) { game_params *ret = snew(game_params); - ret->w = atoi(cfg[0].sval); - ret->h = atoi(cfg[1].sval); + ret->w = atoi(cfg[0].u.string.sval); + ret->h = atoi(cfg[1].u.string.sval); /* Allow 'a-b' for a range, otherwise assume a single number. */ - if (sscanf(cfg[2].sval, "%d-%d", &ret->minballs, &ret->maxballs) < 2) - ret->minballs = ret->maxballs = atoi(cfg[2].sval); + if (sscanf(cfg[2].u.string.sval, "%d-%d", + &ret->minballs, &ret->maxballs) < 2) + ret->minballs = ret->maxballs = atoi(cfg[2].u.string.sval); 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"; @@ -253,11 +249,11 @@ 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; - char *ret; + const char *ret; /* the bitmap is 2+(nballs*2) long; the hex version is double that. */ nballs = ((dlen/2)-2)/2; @@ -464,7 +460,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"); } @@ -904,7 +900,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, ui->cur_x = cx; ui->cur_y = cy; ui->cur_visible = 1; - return ""; + return UI_UPDATE; } if (button == LEFT_BUTTON || button == RIGHT_BUTTON) { @@ -914,7 +910,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, wouldflash = 1; } else if (button == LEFT_RELEASE) { ui->flash_laser = 0; - return ""; + return UI_UPDATE; } else if (IS_CURSOR_SELECT(button)) { if (ui->cur_visible) { gx = ui->cur_x; @@ -923,7 +919,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, wouldflash = 2; } else { ui->cur_visible = 1; - return ""; + return UI_UPDATE; } /* Fix up 'button' for the below logic. */ if (button == CURSOR_SELECT2) button = RIGHT_BUTTON; @@ -972,9 +968,9 @@ static char *interpret_move(const game_state *state, game_ui *ui, return nullret; ui->flash_laserno = rangeno; ui->flash_laser = wouldflash; - nullret = ""; + nullret = UI_UPDATE; if (state->exits[rangeno] != LASER_EMPTY) - return ""; + return UI_UPDATE; sprintf(buf, "F%d", rangeno); break; diff --git a/apps/plugins/puzzles/src/bridges.c b/apps/plugins/puzzles/src/bridges.c index 6975208fd6..0a326f2a42 100644 --- a/apps/plugins/puzzles/src/bridges.c +++ b/apps/plugins/puzzles/src/bridges.c @@ -742,44 +742,40 @@ static config_item *game_configure(const game_params *params) ret[0].name = "Width"; ret[0].type = C_STRING; sprintf(buf, "%d", params->w); - ret[0].sval = dupstr(buf); - ret[0].ival = 0; + ret[0].u.string.sval = dupstr(buf); ret[1].name = "Height"; ret[1].type = C_STRING; sprintf(buf, "%d", params->h); - ret[1].sval = dupstr(buf); - ret[1].ival = 0; + ret[1].u.string.sval = dupstr(buf); ret[2].name = "Difficulty"; ret[2].type = C_CHOICES; - ret[2].sval = ":Easy:Medium:Hard"; - ret[2].ival = params->difficulty; + ret[2].u.choices.choicenames = ":Easy:Medium:Hard"; + ret[2].u.choices.selected = params->difficulty; ret[3].name = "Allow loops"; ret[3].type = C_BOOLEAN; - ret[3].sval = NULL; - ret[3].ival = params->allowloops; + ret[3].u.boolean.bval = params->allowloops; ret[4].name = "Max. bridges per direction"; ret[4].type = C_CHOICES; - ret[4].sval = ":1:2:3:4"; /* keep up-to-date with MAX_BRIDGES */ - ret[4].ival = params->maxb - 1; + ret[4].u.choices.choicenames = ":1:2:3:4"; /* keep up-to-date with + * MAX_BRIDGES */ + ret[4].u.choices.selected = params->maxb - 1; ret[5].name = "%age of island squares"; ret[5].type = C_CHOICES; - ret[5].sval = ":5%:10%:15%:20%:25%:30%"; - ret[5].ival = (params->islands / 5)-1; + ret[5].u.choices.choicenames = ":5%:10%:15%:20%:25%:30%"; + ret[5].u.choices.selected = (params->islands / 5)-1; ret[6].name = "Expansion factor (%age)"; ret[6].type = C_CHOICES; - ret[6].sval = ":0%:10%:20%:30%:40%:50%:60%:70%:80%:90%:100%"; - ret[6].ival = params->expansion / 10; + ret[6].u.choices.choicenames = ":0%:10%:20%:30%:40%:50%:60%:70%:80%:90%:100%"; + ret[6].u.choices.selected = params->expansion / 10; ret[7].name = NULL; ret[7].type = C_END; - ret[7].sval = NULL; - ret[7].ival = 0; return ret; } @@ -788,18 +784,18 @@ static game_params *custom_params(const config_item *cfg) { game_params *ret = snew(game_params); - ret->w = atoi(cfg[0].sval); - ret->h = atoi(cfg[1].sval); - ret->difficulty = cfg[2].ival; - ret->allowloops = cfg[3].ival; - ret->maxb = cfg[4].ival + 1; - ret->islands = (cfg[5].ival + 1) * 5; - ret->expansion = cfg[6].ival * 10; + ret->w = atoi(cfg[0].u.string.sval); + ret->h = atoi(cfg[1].u.string.sval); + ret->difficulty = cfg[2].u.choices.selected; + ret->allowloops = cfg[3].u.boolean.bval; + ret->maxb = cfg[4].u.choices.selected + 1; + ret->islands = (cfg[5].u.choices.selected + 1) * 5; + ret->expansion = cfg[6].u.choices.selected * 10; 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"; @@ -1993,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; @@ -2094,7 +2090,7 @@ static char *ui_cancel_drag(game_ui *ui) ui->dragx_src = ui->dragy_src = -1; ui->dragx_dst = ui->dragy_dst = -1; ui->dragging = 0; - return ""; + return UI_UPDATE; } static game_ui *new_ui(const game_state *state) @@ -2282,7 +2278,7 @@ static char *update_drag_dst(const game_state *state, game_ui *ui, /*debug(("update_drag src (%d,%d) d(%d,%d) dst (%d,%d)\n", ui->dragx_src, ui->dragy_src, dx, dy, ui->dragx_dst, ui->dragy_dst));*/ - return ""; + return UI_UPDATE; } static char *finish_drag(const game_state *state, game_ui *ui) @@ -2325,7 +2321,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, if (ggrid & G_ISLAND) { ui->dragx_src = gx; ui->dragy_src = gy; - return ""; + return UI_UPDATE; } else return ui_cancel_drag(ui); } else if (button == LEFT_DRAG || button == RIGHT_DRAG) { @@ -2339,7 +2335,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, /* cancel a drag when we go back to the starting point */ ui->dragx_dst = -1; ui->dragy_dst = -1; - return ""; + return UI_UPDATE; } } else if (button == LEFT_RELEASE || button == RIGHT_RELEASE) { if (ui->dragging) { @@ -2424,19 +2420,19 @@ static char *interpret_move(const game_state *state, game_ui *ui, if (!dingrid) break; } - if (!oingrid) return ""; + if (!oingrid) return UI_UPDATE; } /* not reached */ found: ui->cur_x = nx; ui->cur_y = ny; - return ""; + return UI_UPDATE; } } else if (IS_CURSOR_SELECT(button)) { if (!ui->cur_visible) { ui->cur_visible = 1; - return ""; + return UI_UPDATE; } if (ui->dragging || button == CURSOR_SELECT2) { ui_cancel_drag(ui); @@ -2444,7 +2440,7 @@ found: sprintf(buf, "M%d,%d", ui->cur_x, ui->cur_y); return dupstr(buf); } else - return ""; + return UI_UPDATE; } else { grid_type v = GRID(state, ui->cur_x, ui->cur_y); if (v & G_ISLAND) { @@ -2453,7 +2449,7 @@ found: ui->dragy_src = ui->cur_y; ui->dragx_dst = ui->dragy_dst = -1; ui->drag_is_noline = (button == CURSOR_SELECT2) ? 1 : 0; - return ""; + return UI_UPDATE; } } } else if ((button >= '0' && button <= '9') || @@ -2471,7 +2467,7 @@ found: if (!ui->cur_visible) { ui->cur_visible = 1; - return ""; + return UI_UPDATE; } for (i = 0; i < state->n_islands; ++i) { @@ -2498,12 +2494,12 @@ found: if (best_x != -1 && best_y != -1) { ui->cur_x = best_x; ui->cur_y = best_y; - return ""; + return UI_UPDATE; } else return NULL; } else if (button == 'g' || button == 'G') { ui->show_hints = 1 - ui->show_hints; - return ""; + return UI_UPDATE; } return NULL; @@ -2577,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/apps/plugins/puzzles/src/combi.c b/apps/plugins/puzzles/src/combi.c index 4c5d1077aa..3460183c9c 100644 --- a/apps/plugins/puzzles/src/combi.c +++ b/apps/plugins/puzzles/src/combi.c @@ -79,7 +79,7 @@ void free_combi(combi_ctx *combi) #include -void fatal(char *fmt, ...) +void fatal(const char *fmt, ...) { abort(); } diff --git a/apps/plugins/puzzles/src/config.log b/apps/plugins/puzzles/src/config.log index 8bf125c515..b44728f053 100644 --- a/apps/plugins/puzzles/src/config.log +++ b/apps/plugins/puzzles/src/config.log @@ -4,7 +4,7 @@ running configure, to aid debugging if configure makes a mistake. It was created by puzzles configure 6.66, which was generated by GNU Autoconf 2.69. Invocation command line was - $ ./configure + $ ./configure --no-create --no-recursion ## --------- ## ## Platform. ## @@ -12,9 +12,9 @@ generated by GNU Autoconf 2.69. Invocation command line was hostname = alpha uname -m = x86_64 -uname -r = 4.8.4-1-ARCH +uname -r = 4.11.9-1-ARCH uname -s = Linux -uname -v = #1 SMP PREEMPT Sat Oct 22 18:26:57 CEST 2016 +uname -v = #1 SMP PREEMPT Wed Jul 5 18:23:08 CEST 2017 /usr/bin/uname -p = unknown /bin/uname -X = unknown @@ -42,11 +42,241 @@ PATH: /usr/bin/core_perl ## Core tests. ## ## ----------- ## +configure:1943: checking for a BSD-compatible install +configure:2011: result: /usr/bin/install -c +configure:2022: checking whether build environment is sane +configure:2077: result: yes +configure:2228: checking for a thread-safe mkdir -p +configure:2267: result: /usr/bin/mkdir -p +configure:2274: checking for gawk +configure:2290: found /usr/bin/gawk +configure:2301: result: gawk +configure:2312: checking whether make sets $(MAKE) +configure:2334: result: yes +configure:2363: checking whether make supports nested variables +configure:2380: result: yes +configure:2554: checking for gcc +configure:2570: found /usr/bin/gcc +configure:2581: result: gcc +configure:2810: checking for C compiler version +configure:2819: gcc --version >&5 +gcc (GCC) 7.2.0 +Copyright (C) 2017 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +configure:2830: $? = 0 +configure:2819: gcc -v >&5 +Using built-in specs. +COLLECT_GCC=gcc +COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/7.2.0/lto-wrapper +Target: x86_64-pc-linux-gnu +Configured with: /build/gcc-multilib/src/gcc/configure --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++ --enable-shared --enable-threads=posix --enable-libmpx --with-system-zlib --with-isl --enable-__cxa_atexit --disable-libunwind-exceptions --enable-clocale=gnu --disable-libstdcxx-pch --disable-libssp --enable-gnu-unique-object --enable-linker-build-id --enable-lto --enable-plugin --enable-install-libiberty --with-linker-hash-style=gnu --enable-gnu-indirect-function --enable-multilib --disable-werror --enable-checking=release --enable-default-pie --enable-default-ssp +Thread model: posix +gcc version 7.2.0 (GCC) +configure:2830: $? = 0 +configure:2819: gcc -V >&5 +gcc: error: unrecognized command line option '-V' +gcc: fatal error: no input files +compilation terminated. +configure:2830: $? = 1 +configure:2819: gcc -qversion >&5 +gcc: error: unrecognized command line option '-qversion'; did you mean '--version'? +gcc: fatal error: no input files +compilation terminated. +configure:2830: $? = 1 +configure:2850: checking whether the C compiler works +configure:2872: gcc conftest.c >&5 +configure:2876: $? = 0 +configure:2924: result: yes +configure:2927: checking for C compiler default output file name +configure:2929: result: a.out +configure:2935: checking for suffix of executables +configure:2942: gcc -o conftest conftest.c >&5 +configure:2946: $? = 0 +configure:2968: result: +configure:2990: checking whether we are cross compiling +configure:2998: gcc -o conftest conftest.c >&5 +configure:3002: $? = 0 +configure:3009: ./conftest +configure:3013: $? = 0 +configure:3028: result: no +configure:3033: checking for suffix of object files +configure:3055: gcc -c conftest.c >&5 +configure:3059: $? = 0 +configure:3080: result: o +configure:3084: checking whether we are using the GNU C compiler +configure:3103: gcc -c conftest.c >&5 +configure:3103: $? = 0 +configure:3112: result: yes +configure:3121: checking whether gcc accepts -g +configure:3141: gcc -c -g conftest.c >&5 +configure:3141: $? = 0 +configure:3182: result: yes +configure:3199: checking for gcc option to accept ISO C89 +configure:3262: gcc -c -g -O2 conftest.c >&5 +configure:3262: $? = 0 +configure:3275: result: none needed +configure:3300: checking whether gcc understands -c and -o together +configure:3322: gcc -c conftest.c -o conftest2.o +configure:3325: $? = 0 +configure:3322: gcc -c conftest.c -o conftest2.o +configure:3325: $? = 0 +configure:3337: result: yes +configure:3365: checking for style of include used by make +configure:3393: result: GNU +configure:3419: checking dependency style of gcc +configure:3530: result: gcc3 +configure:3591: checking for pkg-config +configure:3609: found /usr/bin/pkg-config +configure:3622: result: /usr/bin/pkg-config +configure:3643: checking for GTK+ - version >= 3.0.0 +configure:3750: gcc -o conftest -g -O2 -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/harfbuzz -I/usr/include/libdrm -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include conftest.c -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 >&5 +configure:3750: $? = 0 +configure:3750: ./conftest +configure:3750: $? = 0 +configure:3764: result: yes (version 3.22.16) +configure:4287: checking for usable gcc warning flags +configure:4330: gcc -c -g -O2 -Wall -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/harfbuzz -I/usr/include/libdrm -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include conftest.c >&5 +configure:4330: $? = 0 +configure:4330: gcc -c -g -O2 -Wall -Werror -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/harfbuzz -I/usr/include/libdrm -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include conftest.c >&5 +configure:4330: $? = 0 +configure:4330: gcc -c -g -O2 -Wall -Werror -std=c89 -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/harfbuzz -I/usr/include/libdrm -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include conftest.c >&5 +configure:4330: $? = 0 +configure:4330: gcc -c -g -O2 -Wall -Werror -std=c89 -pedantic -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/harfbuzz -I/usr/include/libdrm -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include conftest.c >&5 +In file included from /usr/lib/glib-2.0/include/glibconfig.h:9:0, + from /usr/include/glib-2.0/glib/gtypes.h:32, + from /usr/include/glib-2.0/glib/galloca.h:32, + from /usr/include/glib-2.0/glib.h:30, + from /usr/include/gtk-3.0/gdk/gdkconfig.h:13, + from /usr/include/gtk-3.0/gdk/gdk.h:30, + from /usr/include/gtk-3.0/gtk/gtk.h:30, + from conftest.c:24: +/usr/include/glib-2.0/glib/gtypes.h: In function '_GLIB_CHECKED_ADD_U64': +/usr/include/glib-2.0/glib/gtypes.h:423:41: error: ISO C90 does not support 'long long' [-Werror=long-long] + G_STATIC_ASSERT(sizeof (unsigned long long) == sizeof (guint64)); + ^ +/usr/include/glib-2.0/glib/gmacros.h:232:104: note: in definition of macro 'G_STATIC_ASSERT' + #define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED + ^~~~ +In file included from /usr/include/glib-2.0/glib/galloca.h:32:0, + from /usr/include/glib-2.0/glib.h:30, + from /usr/include/gtk-3.0/gdk/gdkconfig.h:13, + from /usr/include/gtk-3.0/gdk/gdk.h:30, + from /usr/include/gtk-3.0/gtk/gtk.h:30, + from conftest.c:24: +/usr/include/glib-2.0/glib/gtypes.h:424:58: error: ISO C90 does not support 'long long' [-Werror=long-long] + return !__builtin_uaddll_overflow(a, b, (unsigned long long *) dest); } + ^~~~ +/usr/include/glib-2.0/glib/gtypes.h: In function '_GLIB_CHECKED_MUL_U64': +/usr/include/glib-2.0/glib/gtypes.h:426:58: error: ISO C90 does not support 'long long' [-Werror=long-long] + return !__builtin_umulll_overflow(a, b, (unsigned long long *) dest); } + ^~~~ +In file included from /usr/include/glib-2.0/glib.h:62:0, + from /usr/include/gtk-3.0/gdk/gdkconfig.h:13, + from /usr/include/gtk-3.0/gdk/gdk.h:30, + from /usr/include/gtk-3.0/gtk/gtk.h:30, + from conftest.c:24: +/usr/include/glib-2.0/glib/gmessages.h: At top level: +/usr/include/glib-2.0/glib/gmessages.h:136:29: error: comma at end of enumerator list [-Werror=pedantic] + G_LOG_WRITER_UNHANDLED = 0, + ^ +/usr/include/glib-2.0/glib/gmessages.h:322:17: error: anonymous variadic macros were introduced in C99 [-Werror=variadic-macros] + #define g_error(...) G_STMT_START { \ + ^~~ +/usr/include/glib-2.0/glib/gmessages.h:328:19: error: anonymous variadic macros were introduced in C99 [-Werror=variadic-macros] + #define g_message(...) g_log (G_LOG_DOMAIN, \ + ^~~ +/usr/include/glib-2.0/glib/gmessages.h:331:20: error: anonymous variadic macros were introduced in C99 [-Werror=variadic-macros] + #define g_critical(...) g_log (G_LOG_DOMAIN, \ + ^~~ +/usr/include/glib-2.0/glib/gmessages.h:334:19: error: anonymous variadic macros were introduced in C99 [-Werror=variadic-macros] + #define g_warning(...) g_log (G_LOG_DOMAIN, \ + ^~~ +/usr/include/glib-2.0/glib/gmessages.h:337:16: error: anonymous variadic macros were introduced in C99 [-Werror=variadic-macros] + #define g_info(...) g_log (G_LOG_DOMAIN, \ + ^~~ +/usr/include/glib-2.0/glib/gmessages.h:340:17: error: anonymous variadic macros were introduced in C99 [-Werror=variadic-macros] + #define g_debug(...) g_log (G_LOG_DOMAIN, \ + ^~~ +In file included from /usr/include/gtk-3.0/gdk/gdkapplaunchcontext.h:30:0, + from /usr/include/gtk-3.0/gdk/gdk.h:32, + from /usr/include/gtk-3.0/gtk/gtk.h:30, + from conftest.c:24: +/usr/include/gtk-3.0/gdk/gdktypes.h:319:39: error: comma at end of enumerator list [-Werror=pedantic] + GDK_MODIFIER_INTENT_DEFAULT_MOD_MASK, + ^ +/usr/include/gtk-3.0/gdk/gdktypes.h:597:48: error: comma at end of enumerator list [-Werror=pedantic] + GDK_AXIS_FLAG_SLIDER = 1 << GDK_AXIS_SLIDER, + ^ +In file included from /usr/include/gtk-3.0/gdk/gdkevents.h:36:0, + from /usr/include/gtk-3.0/gdk/gdkdisplay.h:31, + from /usr/include/gtk-3.0/gdk/gdkscreen.h:32, + from /usr/include/gtk-3.0/gdk/gdkapplaunchcontext.h:31, + from /usr/include/gtk-3.0/gdk/gdk.h:32, + from /usr/include/gtk-3.0/gtk/gtk.h:30, + from conftest.c:24: +/usr/include/gtk-3.0/gdk/gdkdevicetool.h:61:28: error: comma at end of enumerator list [-Werror=pedantic] + GDK_DEVICE_TOOL_TYPE_LENS, + ^ +cc1: all warnings being treated as errors +configure:4330: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "puzzles" +| #define PACKAGE_TARNAME "puzzles" +| #define PACKAGE_VERSION "6.66" +| #define PACKAGE_STRING "puzzles 6.66" +| #define PACKAGE_BUGREPORT "anakin@pobox.com" +| #define PACKAGE_URL "" +| #define PACKAGE "puzzles" +| #define VERSION "6.66" +| /* end confdefs.h. */ +| +| #include +| #include +| #include +| #include +| #include +| #include +| #include +| #include +| +| #include +| #include +| +| #include +| #include +| +| #include +| +| #include +| #include +| #include +| #include +| +| int +| main () +| { +| +| return 0; +| +| ; +| return 0; +| } +configure:4337: result: -Wall -Werror -std=c89 +configure:4385: checking for ranlib +configure:4401: found /usr/bin/ranlib +configure:4412: result: ranlib +configure:4582: checking that generated files are newer than configure +configure:4588: result: done +configure:4611: creating ./config.status ## ---------------- ## ## Cache variables. ## ## ---------------- ## +ac_cv_c_compiler_gnu=yes ac_cv_env_CC_set= ac_cv_env_CC_value= ac_cv_env_CFLAGS_set= @@ -57,33 +287,74 @@ ac_cv_env_LDFLAGS_set= ac_cv_env_LDFLAGS_value= ac_cv_env_LIBS_set= ac_cv_env_LIBS_value= +ac_cv_env_PKG_CONFIG_LIBDIR_set= +ac_cv_env_PKG_CONFIG_LIBDIR_value= +ac_cv_env_PKG_CONFIG_PATH_set= +ac_cv_env_PKG_CONFIG_PATH_value= +ac_cv_env_PKG_CONFIG_set= +ac_cv_env_PKG_CONFIG_value= ac_cv_env_build_alias_set= ac_cv_env_build_alias_value= ac_cv_env_host_alias_set= ac_cv_env_host_alias_value= ac_cv_env_target_alias_set= ac_cv_env_target_alias_value= +ac_cv_objext=o +ac_cv_path_PKG_CONFIG=/usr/bin/pkg-config +ac_cv_path_install='/usr/bin/install -c' +ac_cv_path_mkdir=/usr/bin/mkdir +ac_cv_prog_AWK=gawk +ac_cv_prog_ac_ct_CC=gcc +ac_cv_prog_ac_ct_RANLIB=ranlib +ac_cv_prog_cc_c89= +ac_cv_prog_cc_g=yes +ac_cv_prog_make_make_set=yes +am_cv_CC_dependencies_compiler_type=gcc3 +am_cv_make_support_nested_variables=yes +am_cv_prog_cc_c_o=yes ## ----------------- ## ## Output variables. ## ## ----------------- ## -CC='' -CFLAGS='' +ACLOCAL='${SHELL} /home/franklin/puzzles/missing aclocal-1.15' +AMDEPBACKSLASH='\' +AMDEP_FALSE='#' +AMDEP_TRUE='' +AMTAR='$${TAR-tar}' +AM_BACKSLASH='\' +AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +AM_DEFAULT_VERBOSITY='1' +AM_V='$(V)' +AUTOCONF='${SHELL} /home/franklin/puzzles/missing autoconf' +AUTOHEADER='${SHELL} /home/franklin/puzzles/missing autoheader' +AUTOMAKE='${SHELL} /home/franklin/puzzles/missing automake-1.15' +AWK='gawk' +CC='gcc' +CCDEPMODE='depmode=gcc3' +CFLAGS='-g -O2 -Wall -Werror -std=c89' CPPFLAGS='' -DEFS='' +CYGPATH_W='echo' +DEFS='-DPACKAGE_NAME=\"puzzles\" -DPACKAGE_TARNAME=\"puzzles\" -DPACKAGE_VERSION=\"6.66\" -DPACKAGE_STRING=\"puzzles\ 6.66\" -DPACKAGE_BUGREPORT=\"anakin@pobox.com\" -DPACKAGE_URL=\"\" -DPACKAGE=\"puzzles\" -DVERSION=\"6.66\"' +DEPDIR='.deps' ECHO_C='' ECHO_N='-n' ECHO_T='' EXEEXT='' -INSTALL_DATA='' -INSTALL_PROGRAM='' -INSTALL_SCRIPT='' +GTK_CFLAGS='-pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/harfbuzz -I/usr/include/libdrm -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include' +GTK_LIBS='-lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0' +INSTALL_DATA='${INSTALL} -m 644' +INSTALL_PROGRAM='${INSTALL}' +INSTALL_SCRIPT='${INSTALL}' +INSTALL_STRIP_PROGRAM='$(install_sh) -c -s' LDFLAGS='' LIBOBJS='' LIBS='' LTLIBOBJS='' -OBJEXT='' +MAKEINFO='${SHELL} /home/franklin/puzzles/missing makeinfo' +MKDIR_P='/usr/bin/mkdir -p' +OBJEXT='o' +PACKAGE='puzzles' PACKAGE_BUGREPORT='anakin@pobox.com' PACKAGE_NAME='puzzles' PACKAGE_STRING='puzzles 6.66' @@ -91,28 +362,47 @@ PACKAGE_TARNAME='puzzles' PACKAGE_URL='' PACKAGE_VERSION='6.66' PATH_SEPARATOR=':' -RANLIB='' +PKG_CONFIG='/usr/bin/pkg-config' +PKG_CONFIG_LIBDIR='' +PKG_CONFIG_PATH='' +RANLIB='ranlib' +SET_MAKE='' SHELL='/bin/sh' -ac_ct_CC='' +STRIP='' +VERSION='6.66' +ac_ct_CC='gcc' +am__EXEEXT_FALSE='' +am__EXEEXT_TRUE='#' +am__fastdepCC_FALSE='#' +am__fastdepCC_TRUE='' +am__include='include' +am__isrc='' +am__leading_dot='.' +am__nodep='_no' +am__quote='' +am__tar='$${TAR-tar} chof - "$$tardir"' +am__untar='$${TAR-tar} xf -' bindir='${exec_prefix}/bin' build_alias='' datadir='${datarootdir}' datarootdir='${prefix}/share' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' dvidir='${docdir}' -exec_prefix='NONE' +exec_prefix='${prefix}' host_alias='' htmldir='${docdir}' includedir='${prefix}/include' infodir='${datarootdir}/info' +install_sh='${SHELL} /home/franklin/puzzles/install-sh' libdir='${exec_prefix}/lib' libexecdir='${exec_prefix}/libexec' localedir='${datarootdir}/locale' localstatedir='${prefix}/var' mandir='${datarootdir}/man' +mkdir_p='$(MKDIR_P)' oldincludedir='/usr/include' pdfdir='${docdir}' -prefix='NONE' +prefix='/usr/local' program_transform_name='s,x,x,' psdir='${docdir}' sbindir='${exec_prefix}/sbin' @@ -131,5 +421,25 @@ target_alias='' #define PACKAGE_STRING "puzzles 6.66" #define PACKAGE_BUGREPORT "anakin@pobox.com" #define PACKAGE_URL "" +#define PACKAGE "puzzles" +#define VERSION "6.66" + +configure: exit 0 + +## ---------------------- ## +## Running config.status. ## +## ---------------------- ## + +This file was extended by puzzles config.status 6.66, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = + CONFIG_HEADERS = + CONFIG_LINKS = + CONFIG_COMMANDS = + $ ./config.status + +on alpha -configure: exit 2 +config.status:782: creating Makefile +config.status:954: executing depfiles commands diff --git a/apps/plugins/puzzles/src/cube.c b/apps/plugins/puzzles/src/cube.c index a30dc10b3f..2a79a81eef 100644 --- a/apps/plugins/puzzles/src/cube.c +++ b/apps/plugins/puzzles/src/cube.c @@ -238,7 +238,7 @@ static game_params *default_params(void) static int game_fetch_preset(int i, char **name, game_params **params) { game_params *ret = snew(game_params); - char *str; + const char *str; switch (i) { case 0: @@ -489,25 +489,21 @@ static config_item *game_configure(const game_params *params) ret[0].name = "Type of solid"; ret[0].type = C_CHOICES; - ret[0].sval = ":Tetrahedron:Cube:Octahedron:Icosahedron"; - ret[0].ival = params->solid; + ret[0].u.choices.choicenames = ":Tetrahedron:Cube:Octahedron:Icosahedron"; + ret[0].u.choices.selected = params->solid; ret[1].name = "Width / top"; ret[1].type = C_STRING; sprintf(buf, "%d", params->d1); - ret[1].sval = dupstr(buf); - ret[1].ival = 0; + ret[1].u.string.sval = dupstr(buf); ret[2].name = "Height / bottom"; ret[2].type = C_STRING; sprintf(buf, "%d", params->d2); - ret[2].sval = dupstr(buf); - ret[2].ival = 0; + ret[2].u.string.sval = dupstr(buf); ret[3].name = NULL; ret[3].type = C_END; - ret[3].sval = NULL; - ret[3].ival = 0; return ret; } @@ -516,9 +512,9 @@ static game_params *custom_params(const config_item *cfg) { game_params *ret = snew(game_params); - ret->solid = cfg[0].ival; - ret->d1 = atoi(cfg[1].sval); - ret->d2 = atoi(cfg[2].sval); + ret->solid = cfg[0].u.choices.selected; + ret->d1 = atoi(cfg[1].u.string.sval); + ret->d2 = atoi(cfg[2].u.string.sval); return ret; } @@ -538,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; @@ -846,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; @@ -1004,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/apps/plugins/puzzles/src/devel.but b/apps/plugins/puzzles/src/devel.but index 25a6c62dfa..131678c17b 100644 --- a/apps/plugins/puzzles/src/devel.but +++ b/apps/plugins/puzzles/src/devel.but @@ -555,16 +555,15 @@ The \cw{config_item} structure contains the following elements: \c char *name; \c int type; -\c char *sval; -\c int ival; +\c union { /* type-specific fields */ } u; +\e iiiiiiiiiiiiiiiiiiiiiiiiii \c{name} is an ASCII string giving the textual label for a GUI control. It is \e{not} expected to be dynamically allocated. \c{type} contains one of a small number of \c{enum} values defining -what type of control is being described. The meaning of the \c{sval} -and \c{ival} fields depends on the value in \c{type}. The valid -values are: +what type of control is being described. The usable member of the +union field \c{u} depends on \c{type}. The valid type values are: \dt \c{C_STRING} @@ -572,38 +571,64 @@ values are: input. The back end does not bother informing the front end that the box is numeric rather than textual; some front ends do have the capacity to take this into account, but I decided it wasn't worth -the extra complexity in the interface.) For this type, \c{ival} is -unused, and \c{sval} contains a dynamically allocated string -representing the contents of the input box. +the extra complexity in the interface.) + +\lcont{ + +For controls of this type, \c{u.string} contains a single field + +\c char *sval; + +which stores a dynamically allocated string representing the contents +of the input box. + +} \dt \c{C_BOOLEAN} -\dd Describes a simple checkbox. For this type, \c{sval} is unused, -and \c{ival} is \cw{TRUE} or \cw{FALSE}. +\dd Describes a simple checkbox. + +\lcont{ + +For controls of this type, \c{u.boolean} contains a single field + +\c int bval; + +which is either \cw{TRUE} or \cw{FALSE}. + +} \dt \c{C_CHOICES} \dd Describes a drop-down list presenting one of a small number of -fixed choices. For this type, \c{sval} contains a list of strings -describing the choices; the very first character of \c{sval} is used -as a delimiter when processing the rest (so that the strings -\cq{:zero:one:two}, \cq{!zero!one!two} and \cq{xzeroxonextwo} all -define a three-element list containing \cq{zero}, \cq{one} and -\cq{two}). \c{ival} contains the index of the currently selected -element, numbering from zero (so that in the above example, 0 would -mean \cq{zero} and 2 would mean \cq{two}). +fixed choices. \lcont{ -Note that for this control type, \c{sval} is \e{not} dynamically -allocated, whereas it was for \c{C_STRING}. +For controls of this type, \c{u.choices} contains two fields: + +\c const char *choicenames; +\c int selected; + +\c{choicenames} contains a list of strings describing the choices. The +very first character of \c{sval} is used as a delimiter when +processing the rest (so that the strings \cq{:zero:one:two}, +\cq{!zero!one!two} and \cq{xzeroxonextwo} all define a three-element +list containing \cq{zero}, \cq{one} and \cq{two}). + +\c{selected} contains the index of the currently selected element, +numbering from zero (so that in the above example, 0 would mean +\cq{zero} and 2 would mean \cq{two}). + +Note that \c{u.choices.choicenames} is \e{not} dynamically allocated, +unlike \c{u.string.sval}. } \dt \c{C_END} -\dd Marks the end of the array of \c{config_item}s. All other fields -are unused. +\dd Marks the end of the array of \c{config_item}s. There is no +associated member of the union field \c{u} for this type. The array returned from this function is expected to have filled in the initial values of all the controls according to the input @@ -639,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 @@ -724,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. @@ -907,10 +934,10 @@ divide mouse coordinates by it.) in response to the input event; the puzzle was not interested in it at all. -\b Returning the empty string (\cw{""}) indicates that the input +\b Returning the special value \cw{UI_UPDATE} indicates that the input event has resulted in a change being made to the \c{game_ui} which -will require a redraw of the game window, but that no actual -\e{move} was made (i.e. no new \c{game_state} needs to be created). +will require a redraw of the game window, but that no actual \e{move} +was made (i.e. no new \c{game_state} needs to be created). \b Returning anything else indicates that a move was made and that a new \c{game_state} must be created. However, instead of actually @@ -925,7 +952,7 @@ strings can be written to disk when saving the game and fed to The return value from \cw{interpret_move()} is expected to be dynamically allocated if and only if it is not either \cw{NULL} -\e{or} the empty string. +\e{or} the special string constant \c{UI_UPDATE}. After this function is called, the back end is permitted to rely on some subsequent operations happening in sequence: @@ -1028,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. @@ -1934,7 +1961,8 @@ This ensures that thin lines are visible even at small scales. \S{drawing-draw-text} \cw{draw_text()} \c void draw_text(drawing *dr, int x, int y, int fonttype, -\c int fontsize, int align, int colour, char *text); +\c int fontsize, int align, int colour, +\c const char *text); Draws text in the puzzle window. @@ -2095,7 +2123,7 @@ printing routines, that code may safely call \cw{draw_update()}.) \S{drawing-status-bar} \cw{status_bar()} -\c void status_bar(drawing *dr, char *text); +\c void status_bar(drawing *dr, const char *text); Sets the text in the game's status bar to \c{text}. The text is copied from the supplied buffer, so the caller is free to deallocate or @@ -2366,7 +2394,8 @@ function \cw{drawing_new()} (see \k{drawing-new}). \S{drawingapi-draw-text} \cw{draw_text()} \c void (*draw_text)(void *handle, int x, int y, int fonttype, -\c int fontsize, int align, int colour, char *text); +\c int fontsize, int align, int colour, +\c const char *text); This function behaves exactly like the back end \cw{draw_text()} function; see \k{drawing-draw-text}. @@ -2469,7 +2498,7 @@ called unless drawing is attempted. \S{drawingapi-status-bar} \cw{status_bar()} -\c void (*status_bar)(void *handle, char *text); +\c void (*status_bar)(void *handle, const char *text); This function behaves exactly like the back end \cw{status_bar()} function; see \k{drawing-status-bar}. @@ -3129,8 +3158,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 @@ -3151,7 +3180,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, const 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 @@ -3219,7 +3248,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. @@ -3267,8 +3296,7 @@ visually activate and deactivate a redo button. \H{midend-serialise} \cw{midend_serialise()} \c void midend_serialise(midend *me, -\c void (*write)(void *ctx, void *buf, int len), -\c void *wctx); +\c void (*write)(void *ctx, const void *buf, int len), void *wctx); Calling this function causes the mid-end to convert its entire internal state into a long ASCII text string, and to pass that @@ -3291,9 +3319,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 @@ -3330,9 +3357,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 @@ -3482,7 +3508,7 @@ calling \cw{midend_timer()}. \H{frontend-fatal} \cw{fatal()} -\c void fatal(char *fmt, ...); +\c void fatal(const char *fmt, ...); This is called by some utility functions if they encounter a genuinely fatal error such as running out of memory. It is a @@ -3737,10 +3763,10 @@ quite everywhere.) \c void free_cfg(config_item *cfg); -This function correctly frees an array of \c{config_item}s, -including walking the array until it gets to the end and freeing -precisely those \c{sval} fields which are expected to be dynamically -allocated. +This function correctly frees an array of \c{config_item}s, including +walking the array until it gets to the end and freeing any subsidiary +data items in each \c{u} sub-union which are expected to be +dynamically allocated. (See \k{backend-configure} for details of the \c{config_item} structure.) diff --git a/apps/plugins/puzzles/src/dominosa.c b/apps/plugins/puzzles/src/dominosa.c index c86ba19dfa..a072ac6168 100644 --- a/apps/plugins/puzzles/src/dominosa.c +++ b/apps/plugins/puzzles/src/dominosa.c @@ -169,18 +169,14 @@ static config_item *game_configure(const game_params *params) ret[0].name = "Maximum number on dominoes"; ret[0].type = C_STRING; sprintf(buf, "%d", params->n); - ret[0].sval = dupstr(buf); - ret[0].ival = 0; + ret[0].u.string.sval = dupstr(buf); ret[1].name = "Ensure unique solution"; ret[1].type = C_BOOLEAN; - ret[1].sval = NULL; - ret[1].ival = params->unique; + ret[1].u.boolean.bval = params->unique; ret[2].name = NULL; ret[2].type = C_END; - ret[2].sval = NULL; - ret[2].ival = 0; return ret; } @@ -189,13 +185,13 @@ static game_params *custom_params(const config_item *cfg) { game_params *ret = snew(game_params); - ret->n = atoi(cfg[0].sval); - ret->unique = cfg[1].ival; + ret->n = atoi(cfg[0].u.string.sval); + ret->unique = cfg[1].u.boolean.bval; 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"; @@ -748,12 +744,12 @@ 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; int i, j; - char *ret; + const char *ret; ret = NULL; occurrences = snewn(n+1, int); @@ -875,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; @@ -1119,7 +1115,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, move_cursor(button, &ui->cur_x, &ui->cur_y, 2*w-1, 2*h-1, 0); - return ""; + return UI_UPDATE; } else if (IS_CURSOR_SELECT(button)) { int d1, d2; @@ -1152,7 +1148,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, } else { return NULL; } - return ""; + return UI_UPDATE; } return NULL; diff --git a/apps/plugins/puzzles/src/drawing.c b/apps/plugins/puzzles/src/drawing.c index a10a7f06d6..caf0b4b43a 100644 --- a/apps/plugins/puzzles/src/drawing.c +++ b/apps/plugins/puzzles/src/drawing.c @@ -71,7 +71,7 @@ void drawing_free(drawing *dr) } void draw_text(drawing *dr, int x, int y, int fonttype, int fontsize, - int align, int colour, char *text) + int align, int colour, const char *text) { dr->api->draw_text(dr->handle, x, y, fonttype, fontsize, align, colour, text); @@ -190,7 +190,7 @@ char *text_fallback(drawing *dr, const char *const *strings, int nstrings) return NULL; /* placate optimiser */ } -void status_bar(drawing *dr, char *text) +void status_bar(drawing *dr, const char *text) { char *rewritten; diff --git a/apps/plugins/puzzles/src/emcc.c b/apps/plugins/puzzles/src/emcc.c index 23ab333f5d..563fbe2799 100644 --- a/apps/plugins/puzzles/src/emcc.c +++ b/apps/plugins/puzzles/src/emcc.c @@ -122,7 +122,7 @@ void get_random_seed(void **randseed, int *randseedsize) * Fatal error, called in cases of complete despair such as when * malloc() has returned NULL. */ -void fatal(char *fmt, ...) +void fatal(const char *fmt, ...) { char buf[512]; va_list ap; @@ -136,7 +136,7 @@ void fatal(char *fmt, ...) js_error_box(buf); } -void debug_printf(char *fmt, ...) +void debug_printf(const char *fmt, ...) { char buf[512]; va_list ap; @@ -384,7 +384,8 @@ static void js_unclip(void *handle) } static void js_draw_text(void *handle, int x, int y, int fonttype, - int fontsize, int align, int colour, char *text) + int fontsize, int align, int colour, + const char *text) { char fontstyle[80]; int halign; @@ -515,7 +516,7 @@ static void js_end_draw(void *handle) js_canvas_end_draw(); } -static void js_status_bar(void *handle, char *text) +static void js_status_bar(void *handle, const char *text) { js_canvas_set_statusbar(text); } @@ -599,13 +600,14 @@ static void cfg_start(int which) for (i = 0; cfg[i].type != C_END; i++) { switch (cfg[i].type) { case C_STRING: - js_dialog_string(i, cfg[i].name, cfg[i].sval); + js_dialog_string(i, cfg[i].name, cfg[i].u.string.sval); break; case C_BOOLEAN: - js_dialog_boolean(i, cfg[i].name, cfg[i].ival); + js_dialog_boolean(i, cfg[i].name, cfg[i].u.boolean.bval); break; case C_CHOICES: - js_dialog_choices(i, cfg[i].name, cfg[i].sval, cfg[i].ival); + js_dialog_choices(i, cfg[i].name, cfg[i].u.choices.choicenames, + cfg[i].u.choices.selected); break; } } @@ -619,12 +621,29 @@ static void cfg_start(int which) */ void dlg_return_sval(int index, const char *val) { - sfree(cfg[index].sval); - cfg[index].sval = dupstr(val); + config_item *i = cfg + index; + switch (i->type) { + case C_STRING: + sfree(i->u.string.sval); + i->u.string.sval = dupstr(val); + break; + default: + assert(0 && "Bad type for return_sval"); + } } void dlg_return_ival(int index, int val) { - cfg[index].ival = val; + config_item *i = cfg + index; + switch (i->type) { + case C_BOOLEAN: + i->u.boolean.bval = val; + break; + case C_CHOICES: + i->u.choices.selected = val; + break; + default: + assert(0 && "Bad type for return_ival"); + } } /* @@ -638,7 +657,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) { /* @@ -748,7 +767,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); } @@ -768,7 +787,7 @@ struct savefile_write_ctx { size_t pos; }; -static void savefile_write(void *vctx, void *buf, int len) +static void savefile_write(void *vctx, const void *buf, int len) { struct savefile_write_ctx *ctx = (struct savefile_write_ctx *)vctx; if (ctx->buffer) @@ -845,7 +864,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/apps/plugins/puzzles/src/fifteen.c b/apps/plugins/puzzles/src/fifteen.c index aee89071ca..f749e96b24 100644 --- a/apps/plugins/puzzles/src/fifteen.c +++ b/apps/plugins/puzzles/src/fifteen.c @@ -111,19 +111,15 @@ static config_item *game_configure(const game_params *params) ret[0].name = "Width"; ret[0].type = C_STRING; sprintf(buf, "%d", params->w); - ret[0].sval = dupstr(buf); - ret[0].ival = 0; + ret[0].u.string.sval = dupstr(buf); ret[1].name = "Height"; ret[1].type = C_STRING; sprintf(buf, "%d", params->h); - ret[1].sval = dupstr(buf); - ret[1].ival = 0; + ret[1].u.string.sval = dupstr(buf); ret[2].name = NULL; ret[2].type = C_END; - ret[2].sval = NULL; - ret[2].ival = 0; return ret; } @@ -132,13 +128,13 @@ static game_params *custom_params(const config_item *cfg) { game_params *ret = snew(game_params); - ret->w = atoi(cfg[0].sval); - ret->h = atoi(cfg[1].sval); + ret->w = atoi(cfg[0].u.string.sval); + ret->h = atoi(cfg[1].u.string.sval); 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"; @@ -274,10 +270,10 @@ 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; + const char *err; int i, area; int *used; @@ -383,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"); } @@ -1130,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/apps/plugins/puzzles/src/filling.c b/apps/plugins/puzzles/src/filling.c index d8d0c8cbb0..7e71eb25b4 100644 --- a/apps/plugins/puzzles/src/filling.c +++ b/apps/plugins/puzzles/src/filling.c @@ -68,7 +68,7 @@ static unsigned char verbose; -static void printv(char *fmt, ...) { +static void printv(const char *fmt, ...) { #ifndef PALM if (verbose) { va_list va; @@ -161,19 +161,15 @@ static config_item *game_configure(const game_params *params) ret[0].name = "Width"; ret[0].type = C_STRING; sprintf(buf, "%d", params->w); - ret[0].sval = dupstr(buf); - ret[0].ival = 0; + ret[0].u.string.sval = dupstr(buf); ret[1].name = "Height"; ret[1].type = C_STRING; sprintf(buf, "%d", params->h); - ret[1].sval = dupstr(buf); - ret[1].ival = 0; + ret[1].u.string.sval = dupstr(buf); ret[2].name = NULL; ret[2].type = C_END; - ret[2].sval = NULL; - ret[2].ival = 0; return ret; } @@ -182,13 +178,13 @@ static game_params *custom_params(const config_item *cfg) { game_params *ret = snew(game_params); - ret->w = atoi(cfg[0].sval); - ret->h = atoi(cfg[1].sval); + ret->w = atoi(cfg[0].u.string.sval); + ret->h = atoi(cfg[1].u.string.sval); 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"; @@ -1270,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); @@ -1342,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; @@ -1449,22 +1445,22 @@ static char *interpret_move(const game_state *state, game_ui *ui, ui->sel[w*ty+tx] = 1; } ui->cur_visible = 0; - return ""; /* redraw */ + return UI_UPDATE; } if (IS_CURSOR_MOVE(button)) { ui->cur_visible = 1; move_cursor(button, &ui->cur_x, &ui->cur_y, w, h, 0); if (ui->keydragging) goto select_square; - return ""; + return UI_UPDATE; } if (button == CURSOR_SELECT) { if (!ui->cur_visible) { ui->cur_visible = 1; - return ""; + return UI_UPDATE; } ui->keydragging = !ui->keydragging; - if (!ui->keydragging) return ""; + if (!ui->keydragging) return UI_UPDATE; select_square: if (!ui->sel) { @@ -1473,12 +1469,12 @@ static char *interpret_move(const game_state *state, game_ui *ui, } if (!state->shared->clues[w*ui->cur_y + ui->cur_x]) ui->sel[w*ui->cur_y + ui->cur_x] = 1; - return ""; + return UI_UPDATE; } if (button == CURSOR_SELECT2) { if (!ui->cur_visible) { ui->cur_visible = 1; - return ""; + return UI_UPDATE; } if (!ui->sel) { ui->sel = snewn(w*h, int); @@ -1492,14 +1488,14 @@ static char *interpret_move(const game_state *state, game_ui *ui, sfree(ui->sel); ui->sel = NULL; } - return ""; + return UI_UPDATE; } if (button == '\b' || button == 27) { sfree(ui->sel); ui->sel = NULL; ui->keydragging = FALSE; - return ""; + return UI_UPDATE; } if (button < '0' || button > '9') return NULL; @@ -1534,7 +1530,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, sfree(ui->sel); ui->sel = NULL; /* Need to update UI at least, as we cleared the selection */ - return move ? move : ""; + return move ? move : UI_UPDATE; } static game_state *execute_move(const game_state *state, const char *move) diff --git a/apps/plugins/puzzles/src/flip.c b/apps/plugins/puzzles/src/flip.c index c7126fb7d9..9e5716a118 100644 --- a/apps/plugins/puzzles/src/flip.c +++ b/apps/plugins/puzzles/src/flip.c @@ -149,24 +149,20 @@ static config_item *game_configure(const game_params *params) ret[0].name = "Width"; ret[0].type = C_STRING; sprintf(buf, "%d", params->w); - ret[0].sval = dupstr(buf); - ret[0].ival = 0; + ret[0].u.string.sval = dupstr(buf); ret[1].name = "Height"; ret[1].type = C_STRING; sprintf(buf, "%d", params->h); - ret[1].sval = dupstr(buf); - ret[1].ival = 0; + ret[1].u.string.sval = dupstr(buf); ret[2].name = "Shape type"; ret[2].type = C_CHOICES; - ret[2].sval = ":Crosses:Random"; - ret[2].ival = params->matrix_type; + ret[2].u.choices.choicenames = ":Crosses:Random"; + ret[2].u.choices.selected = params->matrix_type; ret[3].name = NULL; ret[3].type = C_END; - ret[3].sval = NULL; - ret[3].ival = 0; return ret; } @@ -175,14 +171,14 @@ static game_params *custom_params(const config_item *cfg) { game_params *ret = snew(game_params); - ret->w = atoi(cfg[0].sval); - ret->h = atoi(cfg[1].sval); - ret->matrix_type = cfg[2].ival; + ret->w = atoi(cfg[0].u.string.sval); + ret->h = atoi(cfg[1].u.string.sval); + ret->matrix_type = cfg[2].u.choices.selected; 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"; @@ -596,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; @@ -673,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; @@ -951,7 +947,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, tx = ui->cx; ty = ui->cy; ui->cdraw = 1; } - nullret = ""; + nullret = UI_UPDATE; if (tx >= 0 && tx < w && ty >= 0 && ty < h) { /* @@ -985,7 +981,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, ui->cx = min(max(ui->cx, 0), state->w - 1); ui->cy = min(max(ui->cy, 0), state->h - 1); ui->cdraw = 1; - nullret = ""; + nullret = UI_UPDATE; } return nullret; diff --git a/apps/plugins/puzzles/src/flood.c b/apps/plugins/puzzles/src/flood.c index 59e160cfc3..854469a49a 100644 --- a/apps/plugins/puzzles/src/flood.c +++ b/apps/plugins/puzzles/src/flood.c @@ -170,31 +170,25 @@ static config_item *game_configure(const game_params *params) ret[0].name = "Width"; ret[0].type = C_STRING; sprintf(buf, "%d", params->w); - ret[0].sval = dupstr(buf); - ret[0].ival = 0; + ret[0].u.string.sval = dupstr(buf); ret[1].name = "Height"; ret[1].type = C_STRING; sprintf(buf, "%d", params->h); - ret[1].sval = dupstr(buf); - ret[1].ival = 0; + ret[1].u.string.sval = dupstr(buf); ret[2].name = "Colours"; ret[2].type = C_STRING; sprintf(buf, "%d", params->colours); - ret[2].sval = dupstr(buf); - ret[2].ival = 0; + ret[2].u.string.sval = dupstr(buf); ret[3].name = "Extra moves permitted"; ret[3].type = C_STRING; sprintf(buf, "%d", params->leniency); - ret[3].sval = dupstr(buf); - ret[3].ival = 0; + ret[3].u.string.sval = dupstr(buf); ret[4].name = NULL; ret[4].type = C_END; - ret[4].sval = NULL; - ret[4].ival = 0; return ret; } @@ -203,15 +197,15 @@ static game_params *custom_params(const config_item *cfg) { game_params *ret = snew(game_params); - ret->w = atoi(cfg[0].sval); - ret->h = atoi(cfg[1].sval); - ret->colours = atoi(cfg[2].sval); - ret->leniency = atoi(cfg[3].sval); + ret->w = atoi(cfg[0].u.string.sval); + ret->h = atoi(cfg[1].u.string.sval); + ret->colours = atoi(cfg[2].u.string.sval); + ret->leniency = atoi(cfg[3].u.string.sval); 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 < 2) return "Grid must contain at least two squares"; @@ -597,7 +591,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; @@ -691,7 +685,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; @@ -832,19 +826,19 @@ static char *interpret_move(const game_state *state, game_ui *ui, } else if (button == CURSOR_LEFT && ui->cx > 0) { ui->cx--; ui->cursor_visible = TRUE; - return ""; + return UI_UPDATE; } else if (button == CURSOR_RIGHT && ui->cx+1 < w) { ui->cx++; ui->cursor_visible = TRUE; - return ""; + return UI_UPDATE; } else if (button == CURSOR_UP && ui->cy > 0) { ui->cy--; ui->cursor_visible = TRUE; - return ""; + return UI_UPDATE; } else if (button == CURSOR_DOWN && ui->cy+1 < h) { ui->cy++; ui->cursor_visible = TRUE; - return ""; + return UI_UPDATE; } else if (button == CURSOR_SELECT) { tx = ui->cx; ty = ui->cy; diff --git a/apps/plugins/puzzles/src/galaxies.c b/apps/plugins/puzzles/src/galaxies.c index f4f75c629c..5d7dbdf933 100644 --- a/apps/plugins/puzzles/src/galaxies.c +++ b/apps/plugins/puzzles/src/galaxies.c @@ -248,24 +248,20 @@ static config_item *game_configure(const game_params *params) ret[0].name = "Width"; ret[0].type = C_STRING; sprintf(buf, "%d", params->w); - ret[0].sval = dupstr(buf); - ret[0].ival = 0; + ret[0].u.string.sval = dupstr(buf); ret[1].name = "Height"; ret[1].type = C_STRING; sprintf(buf, "%d", params->h); - ret[1].sval = dupstr(buf); - ret[1].ival = 0; + ret[1].u.string.sval = dupstr(buf); ret[2].name = "Difficulty"; ret[2].type = C_CHOICES; - ret[2].sval = DIFFCONFIG; - ret[2].ival = params->diff; + ret[2].u.choices.choicenames = DIFFCONFIG; + ret[2].u.choices.selected = params->diff; ret[3].name = NULL; ret[3].type = C_END; - ret[3].sval = NULL; - ret[3].ival = 0; return ret; } @@ -274,14 +270,14 @@ static game_params *custom_params(const config_item *cfg) { game_params *ret = snew(game_params); - ret->w = atoi(cfg[0].sval); - ret->h = atoi(cfg[1].sval); - ret->diff = cfg[2].ival; + ret->w = atoi(cfg[0].u.string.sval); + ret->h = atoi(cfg[1].u.string.sval); + ret->diff = cfg[2].u.choices.selected; 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"; @@ -671,7 +667,8 @@ static char *diff_game(const game_state *src, const game_state *dest, int issolve) { int movelen = 0, movesize = 256, x, y, len; - char *move = snewn(movesize, char), buf[80], *sep = ""; + char *move = snewn(movesize, char), buf[80]; + const char *sep = ""; char achar = issolve ? 'a' : 'A'; space *sps, *spd; @@ -1527,10 +1524,10 @@ static int dots_too_close(game_state *state) } static game_state *load_game(const game_params *params, const char *desc, - char **why_r) + const char **why_r) { game_state *state = blank_game(params->w, params->h); - char *why = NULL; + const char *why = NULL; int i, x, y, n; unsigned int df; @@ -1574,9 +1571,9 @@ 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; + const char *why = NULL; game_state *dummy = load_game(params, desc, &why); if (dummy) { free_game(dummy); @@ -2258,7 +2255,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; @@ -2553,13 +2550,13 @@ static char *interpret_move(const game_state *state, game_ui *ui, ui->dy = y; ui->dotx = dot->x; ui->doty = dot->y; - return ""; + return UI_UPDATE; } } else if (button == RIGHT_DRAG && ui->dragging) { /* just move the drag coords. */ ui->dx = x; ui->dy = y; - return ""; + return UI_UPDATE; } else if (button == RIGHT_RELEASE && ui->dragging) { ui->dragging = FALSE; @@ -2574,7 +2571,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, * is a null move; just update the ui and finish. */ if (px == ui->srcx && py == ui->srcy) - return ""; + return UI_UPDATE; /* * Otherwise, we remove the arrow from its starting @@ -2601,7 +2598,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, if (buf[0]) return dupstr(buf); else - return ""; + return UI_UPDATE; } else if (IS_CURSOR_MOVE(button)) { move_cursor(button, &ui->cur_x, &ui->cur_y, state->sx-1, state->sy-1, 0); if (ui->cur_x < 1) ui->cur_x = 1; @@ -2611,11 +2608,11 @@ static char *interpret_move(const game_state *state, game_ui *ui, ui->dx = SCOORD(ui->cur_x); ui->dy = SCOORD(ui->cur_y); } - return ""; + return UI_UPDATE; } else if (IS_CURSOR_SELECT(button)) { if (!ui->cur_visible) { ui->cur_visible = 1; - return ""; + return UI_UPDATE; } sp = &SPACE(state, ui->cur_x, ui->cur_y); if (ui->dragging) { @@ -2637,7 +2634,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, ui->dy = SCOORD(ui->cur_y); ui->dotx = ui->srcx = ui->cur_x; ui->doty = ui->srcy = ui->cur_y; - return ""; + return UI_UPDATE; } else if (sp->flags & F_TILE_ASSOC) { assert(sp->type == s_tile); ui->dragging = TRUE; @@ -2647,7 +2644,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, ui->doty = sp->doty; ui->srcx = ui->cur_x; ui->srcy = ui->cur_y; - return ""; + return UI_UPDATE; } else if (sp->type == s_edge) { sprintf(buf, "E%d,%d", ui->cur_x, ui->cur_y); return dupstr(buf); @@ -3775,7 +3772,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/apps/plugins/puzzles/src/grid.c b/apps/plugins/puzzles/src/grid.c index 4929b5c7d3..52648e5a92 100644 --- a/apps/plugins/puzzles/src/grid.c +++ b/apps/plugins/puzzles/src/grid.c @@ -1529,8 +1529,8 @@ static void grid_size_triangular(int width, int height, *yextent = height * vec_y; } -static char *grid_validate_desc_triangular(grid_type type, int width, - int height, const char *desc) +static const char *grid_validate_desc_triangular(grid_type type, int width, + int height, const char *desc) { /* * Triangular grids: an absent description is valid (indicating @@ -2855,8 +2855,9 @@ static char *grid_new_desc_penrose(grid_type type, int width, int height, random return dupstr(gd); } -static char *grid_validate_desc_penrose(grid_type type, int width, int height, - const char *desc) +static const char *grid_validate_desc_penrose(grid_type type, + int width, int height, + const char *desc) { int tilesize = PENROSE_TILESIZE, startsz, depth, xoff, yoff, aoff, inner_radius; double outer_radius; @@ -3032,8 +3033,8 @@ char *grid_new_desc(grid_type type, int width, int height, random_state *rs) } } -char *grid_validate_desc(grid_type type, int width, int height, - const char *desc) +const char *grid_validate_desc(grid_type type, int width, int height, + const char *desc) { if (type == GRID_PENROSE_P2 || type == GRID_PENROSE_P3) { return grid_validate_desc_penrose(type, width, height, desc); @@ -3048,7 +3049,7 @@ char *grid_validate_desc(grid_type type, int width, int height, grid *grid_new(grid_type type, int width, int height, const char *desc) { - char *err = grid_validate_desc(type, width, height, desc); + const char *err = grid_validate_desc(type, width, height, desc); if (err) assert(!"Invalid grid description."); return grid_news[type](width, height, desc); diff --git a/apps/plugins/puzzles/src/grid.h b/apps/plugins/puzzles/src/grid.h index fb8ac48790..19079a44b8 100644 --- a/apps/plugins/puzzles/src/grid.h +++ b/apps/plugins/puzzles/src/grid.h @@ -116,8 +116,8 @@ typedef enum grid_type { GRIDGEN_LIST(ENUM) GRID_TYPE_MAX } grid_type; /* Free directly after use if non-NULL. Will never contain an underscore * (so clients can safely use that as a separator). */ char *grid_new_desc(grid_type type, int width, int height, random_state *rs); -char *grid_validate_desc(grid_type type, int width, int height, - const char *desc); +const char *grid_validate_desc(grid_type type, int width, int height, + const char *desc); grid *grid_new(grid_type type, int width, int height, const char *desc); diff --git a/apps/plugins/puzzles/src/gtk.c b/apps/plugins/puzzles/src/gtk.c index c212522957..37ba8078e2 100644 --- a/apps/plugins/puzzles/src/gtk.c +++ b/apps/plugins/puzzles/src/gtk.c @@ -71,7 +71,7 @@ #ifdef DEBUGGING static FILE *debug_fp = NULL; -void dputs(char *buf) +void dputs(const char *buf) { if (!debug_fp) { debug_fp = fopen("debug.log", "w"); @@ -85,7 +85,7 @@ void dputs(char *buf) } } -void debug_printf(char *fmt, ...) +void debug_printf(const char *fmt, ...) { char buf[4096]; va_list ap; @@ -101,7 +101,7 @@ void debug_printf(char *fmt, ...) * Error reporting functions used elsewhere. */ -void fatal(char *fmt, ...) +void fatal(const char *fmt, ...) { va_list ap; @@ -189,6 +189,38 @@ struct frontend { int drawing_area_shrink_pending; int menubar_is_local; #endif +#if GTK_CHECK_VERSION(3,0,0) + /* + * This is used to get round an annoying lack of GTK notification + * message. If we request a window resize with + * gtk_window_resize(), we normally get back a "configure" event + * on the window and on its drawing area, and we respond to the + * latter by doing an appropriate resize of the puzzle. If the + * window is maximised, so that gtk_window_resize() _doesn't_ + * change its size, then that configure event never shows up. But + * if we requested the resize in response to a change of puzzle + * parameters (say, the user selected a differently-sized preset + * from the menu), then we would still like to be _notified_ that + * the window size was staying the same, so that we can respond by + * choosing an appropriate tile size for the new puzzle preset in + * the existing window size. + * + * Fortunately, in GTK 3, we may not get a "configure" event on + * the drawing area in this situation, but we still get a + * "size_allocate" event on the whole window (which, in other + * situations when we _do_ get a "configure" on the area, turns up + * second). So we treat _that_ event as indicating that if the + * "configure" event hasn't already shown up then it's not going + * to arrive. + * + * This flag is where we bookkeep this system. On + * gtk_window_resize we set this flag to true; the area's + * configure handler sets it back to false; then if that doesn't + * happen, the window's size_allocate handler does a fallback + * puzzle resize when it sees this flag still set to true. + */ + int awaiting_resize_ack; +#endif }; struct blitter { @@ -232,7 +264,7 @@ void frontend_default_colour(frontend *fe, float *output) #endif } -void gtk_status_bar(void *handle, char *text) +void gtk_status_bar(void *handle, const char *text) { frontend *fe = (frontend *)handle; @@ -968,7 +1000,7 @@ void gtk_unclip(void *handle) } void gtk_draw_text(void *handle, int x, int y, int fonttype, int fontsize, - int align, int colour, char *text) + int align, int colour, const char *text) { frontend *fe = (frontend *)handle; int i; @@ -1338,15 +1370,10 @@ static gint map_window(GtkWidget *widget, GdkEvent *event, return TRUE; } -static gint configure_area(GtkWidget *widget, - GdkEventConfigure *event, gpointer data) +static void resize_puzzle_to_area(frontend *fe, int x, int y) { - frontend *fe = (frontend *)data; - int x, y; int oldw = fe->w, oldpw = fe->pw, oldh = fe->h, oldph = fe->ph; - x = event->width; - y = event->height; fe->w = x; fe->h = y; midend_size(fe->me, &x, &y, TRUE); @@ -1363,10 +1390,31 @@ static gint configure_area(GtkWidget *widget, } midend_force_redraw(fe->me); +} +static gint configure_area(GtkWidget *widget, + GdkEventConfigure *event, gpointer data) +{ + frontend *fe = (frontend *)data; + resize_puzzle_to_area(fe, event->width, event->height); + fe->awaiting_resize_ack = FALSE; return TRUE; } +#if GTK_CHECK_VERSION(3,0,0) +static void window_size_alloc(GtkWidget *widget, GtkAllocation *allocation, + gpointer data) +{ + frontend *fe = (frontend *)data; + if (fe->awaiting_resize_ack) { + GtkAllocation a; + gtk_widget_get_allocation(fe->area, &a); + resize_puzzle_to_area(fe, a.width, a.height); + fe->awaiting_resize_ack = FALSE; + } +} +#endif + static gint timer_func(gpointer data) { frontend *fe = (frontend *)data; @@ -1444,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; @@ -1539,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); } @@ -1547,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); @@ -1593,22 +1641,25 @@ static void editbox_changed(GtkEditable *ed, gpointer data) { config_item *i = (config_item *)data; - sfree(i->sval); - i->sval = dupstr(gtk_entry_get_text(GTK_ENTRY(ed))); + assert(i->type == C_STRING); + sfree(i->u.string.sval); + i->u.string.sval = dupstr(gtk_entry_get_text(GTK_ENTRY(ed))); } static void button_toggled(GtkToggleButton *tb, gpointer data) { config_item *i = (config_item *)data; - i->ival = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(tb)); + assert(i->type == C_BOOLEAN); + i->u.boolean.bval = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(tb)); } static void droplist_sel(GtkComboBox *combo, gpointer data) { config_item *i = (config_item *)data; - i->ival = gtk_combo_box_get_active(combo); + assert(i->type == C_CHOICES); + i->u.choices.selected = gtk_combo_box_get_active(combo); } static int get_config(frontend *fe, int which) @@ -1703,7 +1754,7 @@ static int get_config(frontend *fe, int which) GTK_EXPAND | GTK_SHRINK | GTK_FILL, 3, 3); #endif - gtk_entry_set_text(GTK_ENTRY(w), i->sval); + gtk_entry_set_text(GTK_ENTRY(w), i->u.string.sval); g_signal_connect(G_OBJECT(w), "changed", G_CALLBACK(editbox_changed), i); g_signal_connect(G_OBJECT(w), "key_press_event", @@ -1728,7 +1779,8 @@ static int get_config(frontend *fe, int which) GTK_EXPAND | GTK_SHRINK | GTK_FILL, 3, 3); #endif - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(w), i->ival); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(w), + i->u.boolean.bval); gtk_widget_show(w); break; @@ -1751,15 +1803,16 @@ static int get_config(frontend *fe, int which) { int c; - char *p, *q, *name; + const char *p, *q; + char *name; GtkListStore *model; GtkCellRenderer *cr; GtkTreeIter iter; model = gtk_list_store_new(1, G_TYPE_STRING); - c = *i->sval; - p = i->sval+1; + c = *i->u.choices.choicenames; + p = i->u.choices.choicenames+1; while (*p) { q = p; @@ -1780,7 +1833,8 @@ static int get_config(frontend *fe, int which) w = gtk_combo_box_new_with_model(GTK_TREE_MODEL(model)); - gtk_combo_box_set_active(GTK_COMBO_BOX(w), i->ival); + gtk_combo_box_set_active(GTK_COMBO_BOX(w), + i->u.choices.selected); cr = gtk_cell_renderer_text_new(); gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(w), cr, TRUE); @@ -1881,8 +1935,7 @@ static void changed_preset(frontend *fe) struct preset_menu_entry *entry = (struct preset_menu_entry *)g_object_get_data( G_OBJECT(gs->data), "user-data"); - - if (entry && entry->id != n) + if (!entry || entry->id != n) gtk_check_menu_item_set_active( GTK_CHECK_MENU_ITEM(gs->data), FALSE); else @@ -1890,7 +1943,7 @@ static void changed_preset(frontend *fe) } if (found) gtk_check_menu_item_set_active( - GTK_CHECK_MENU_ITEM(found->data), FALSE); + GTK_CHECK_MENU_ITEM(found->data), TRUE); } fe->preset_threaded = FALSE; @@ -1996,6 +2049,7 @@ static void resize_fe(frontend *fe) #if GTK_CHECK_VERSION(3,0,0) gtk_window_resize(GTK_WINDOW(fe->window), x, y + window_extra_height(fe)); + fe->awaiting_resize_ack = TRUE; #else fe->drawing_area_shrink_pending = FALSE; gtk_drawing_area_size(GTK_DRAWING_AREA(fe->area), x, y); @@ -2114,7 +2168,7 @@ static void filesel_ok(GtkButton *button, gpointer data) fe->filesel_name = dupstr(name); } -static char *file_selector(frontend *fe, char *title, int save) +static char *file_selector(frontend *fe, const char *title, int save) { GtkWidget *filesel = gtk_file_selection_new(title); @@ -2145,7 +2199,7 @@ static char *file_selector(frontend *fe, char *title, int save) #else -static char *file_selector(frontend *fe, char *title, int save) +static char *file_selector(frontend *fe, const char *title, int save) { char *filesel_name = NULL; @@ -2177,7 +2231,7 @@ struct savefile_write_ctx { int error; }; -static void savefile_write(void *wctx, void *buf, int len) +static void savefile_write(void *wctx, const void *buf, int len) { struct savefile_write_ctx *ctx = (struct savefile_write_ctx *)wctx; if (fwrite(buf, 1, len, ctx->fp) < len) @@ -2244,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); @@ -2275,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); @@ -2341,7 +2396,7 @@ static void menu_about_event(GtkMenuItem *menuitem, gpointer data) } static GtkWidget *add_menu_ui_item( - frontend *fe, GtkContainer *cont, char *text, int action, + frontend *fe, GtkContainer *cont, const char *text, int action, int accel_key, int accel_keyqual) { GtkWidget *menuitem = gtk_menu_item_new_with_label(text); @@ -2434,7 +2489,7 @@ static frontend *new_window(char *arg, int argtype, char **error) fe->me = midend_new(fe, &thegame, >k_drawing, fe); if (arg) { - char *err; + const char *err; FILE *fp; errbuf[0] = '\0'; @@ -2522,6 +2577,10 @@ static frontend *new_window(char *arg, int argtype, char **error) } #endif +#if GTK_CHECK_VERSION(3,0,0) + fe->awaiting_resize_ack = FALSE; +#endif + fe->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(fe->window), thegame.name); @@ -2786,6 +2845,10 @@ static frontend *new_window(char *arg, int argtype, char **error) G_CALLBACK(configure_area), fe); g_signal_connect(G_OBJECT(fe->window), "configure_event", G_CALLBACK(configure_window), fe); +#if GTK_CHECK_VERSION(3,0,0) + g_signal_connect(G_OBJECT(fe->window), "size_allocate", + G_CALLBACK(window_size_alloc), fe); +#endif gtk_widget_add_events(GTK_WIDGET(fe->area), GDK_BUTTON_PRESS_MASK | @@ -2865,7 +2928,7 @@ int main(int argc, char **argv) int soln = FALSE, colour = FALSE; float scale = 1.0F; float redo_proportion = 0.0F; - char *savefile = NULL, *savesuffix = NULL; + const char *savefile = NULL, *savesuffix = NULL; char *arg = NULL; int argtype = ARG_EITHER; char *screenshot_file = NULL; @@ -3108,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) { @@ -3162,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); @@ -3207,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/apps/plugins/puzzles/src/guess.c b/apps/plugins/puzzles/src/guess.c index 8f058638da..a14f3bdc4d 100644 --- a/apps/plugins/puzzles/src/guess.c +++ b/apps/plugins/puzzles/src/guess.c @@ -74,7 +74,7 @@ static game_params *dup_params(const game_params *params) } static const struct { - char *name; + const char *name; game_params params; } guess_presets[] = { {"Standard", {6, 4, 10, FALSE, TRUE}}, @@ -166,35 +166,28 @@ static config_item *game_configure(const game_params *params) ret[0].name = "Colours"; ret[0].type = C_STRING; sprintf(buf, "%d", params->ncolours); - ret[0].sval = dupstr(buf); - ret[0].ival = 0; + ret[0].u.string.sval = dupstr(buf); ret[1].name = "Pegs per guess"; ret[1].type = C_STRING; sprintf(buf, "%d", params->npegs); - ret[1].sval = dupstr(buf); - ret[1].ival = 0; + ret[1].u.string.sval = dupstr(buf); ret[2].name = "Guesses"; ret[2].type = C_STRING; sprintf(buf, "%d", params->nguesses); - ret[2].sval = dupstr(buf); - ret[2].ival = 0; + ret[2].u.string.sval = dupstr(buf); ret[3].name = "Allow blanks"; ret[3].type = C_BOOLEAN; - ret[3].sval = NULL; - ret[3].ival = params->allow_blank; + ret[3].u.boolean.bval = params->allow_blank; ret[4].name = "Allow duplicates"; ret[4].type = C_BOOLEAN; - ret[4].sval = NULL; - ret[4].ival = params->allow_multiple; + ret[4].u.boolean.bval = params->allow_multiple; ret[5].name = NULL; ret[5].type = C_END; - ret[5].sval = NULL; - ret[5].ival = 0; return ret; } @@ -203,17 +196,17 @@ static game_params *custom_params(const config_item *cfg) { game_params *ret = snew(game_params); - ret->ncolours = atoi(cfg[0].sval); - ret->npegs = atoi(cfg[1].sval); - ret->nguesses = atoi(cfg[2].sval); + ret->ncolours = atoi(cfg[0].u.string.sval); + ret->npegs = atoi(cfg[1].u.string.sval); + ret->nguesses = atoi(cfg[2].u.string.sval); - ret->allow_blank = cfg[3].ival; - ret->allow_multiple = cfg[4].ival; + ret->allow_blank = cfg[3].u.boolean.bval; + ret->allow_multiple = cfg[4].u.boolean.bval; 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"; @@ -287,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; @@ -367,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"); } @@ -447,7 +440,8 @@ static void free_ui(game_ui *ui) static char *encode_ui(const game_ui *ui) { - char *ret, *p, *sep; + char *ret, *p; + const char *sep; int i; /* @@ -621,7 +615,8 @@ static int mark_pegs(pegrow guess, const pegrow solution, int ncols) static char *encode_move(const game_state *from, game_ui *ui) { - char *buf, *p, *sep; + char *buf, *p; + const char *sep; int len, i; len = ui->curr_pegs->npegs * 20 + 2; @@ -779,7 +774,7 @@ static char *interpret_move(const game_state *from, game_ui *ui, */ if (button == 'l' || button == 'L') { ui->show_labels = !ui->show_labels; - return ""; + return UI_UPDATE; } if (from->solved) return NULL; @@ -836,13 +831,13 @@ static char *interpret_move(const game_state *from, game_ui *ui, ui->drag_y = y; debug(("Start dragging, col = %d, (%d,%d)", ui->drag_col, ui->drag_x, ui->drag_y)); - ret = ""; + ret = UI_UPDATE; } } else if (button == LEFT_DRAG && ui->drag_col) { ui->drag_x = x; ui->drag_y = y; debug(("Keep dragging, (%d,%d)", ui->drag_x, ui->drag_y)); - ret = ""; + ret = UI_UPDATE; } else if (button == LEFT_RELEASE && ui->drag_col) { if (over_guess > -1) { debug(("Dropping colour %d onto guess peg %d", @@ -859,13 +854,13 @@ static char *interpret_move(const game_state *from, game_ui *ui, ui->drag_opeg = -1; ui->display_cur = 0; debug(("Stop dragging.")); - ret = ""; + ret = UI_UPDATE; } else if (button == RIGHT_BUTTON) { if (over_guess > -1) { /* we use ths feedback in the game_ui to signify * 'carry this peg to the next guess as well'. */ ui->holds[over_guess] = 1 - ui->holds[over_guess]; - ret = ""; + ret = UI_UPDATE; } } else if (button == LEFT_RELEASE && over_hint && ui->markable) { /* NB this won't trigger if on the end of a drag; that's on @@ -880,10 +875,10 @@ static char *interpret_move(const game_state *from, game_ui *ui, ui->colour_cur++; if (button == CURSOR_UP && ui->colour_cur > 0) ui->colour_cur--; - ret = ""; + ret = UI_UPDATE; } else if (button == 'h' || button == 'H' || button == '?') { compute_hint(from, ui); - ret = ""; + ret = UI_UPDATE; } else if (button == CURSOR_LEFT || button == CURSOR_RIGHT) { int maxcur = from->params.npegs; if (ui->markable) maxcur++; @@ -893,25 +888,25 @@ static char *interpret_move(const game_state *from, game_ui *ui, ui->peg_cur++; if (button == CURSOR_LEFT && ui->peg_cur > 0) ui->peg_cur--; - ret = ""; + ret = UI_UPDATE; } else if (IS_CURSOR_SELECT(button)) { ui->display_cur = 1; if (ui->peg_cur == from->params.npegs) { ret = encode_move(from, ui); } else { set_peg(&from->params, ui, ui->peg_cur, ui->colour_cur+1); - ret = ""; + ret = UI_UPDATE; } } else if (button == 'D' || button == 'd' || button == '\b') { ui->display_cur = 1; set_peg(&from->params, ui, ui->peg_cur, 0); - ret = ""; + ret = UI_UPDATE; } else if (button == CURSOR_SELECT2) { if (ui->peg_cur == from->params.npegs) return NULL; ui->display_cur = 1; ui->holds[ui->peg_cur] = 1 - ui->holds[ui->peg_cur]; - ret = ""; + ret = UI_UPDATE; } return ret; } diff --git a/apps/plugins/puzzles/src/inertia.c b/apps/plugins/puzzles/src/inertia.c index 918f9797e5..22cf235f20 100644 --- a/apps/plugins/puzzles/src/inertia.c +++ b/apps/plugins/puzzles/src/inertia.c @@ -168,19 +168,15 @@ static config_item *game_configure(const game_params *params) ret[0].name = "Width"; ret[0].type = C_STRING; sprintf(buf, "%d", params->w); - ret[0].sval = dupstr(buf); - ret[0].ival = 0; + ret[0].u.string.sval = dupstr(buf); ret[1].name = "Height"; ret[1].type = C_STRING; sprintf(buf, "%d", params->h); - ret[1].sval = dupstr(buf); - ret[1].ival = 0; + ret[1].u.string.sval = dupstr(buf); ret[2].name = NULL; ret[2].type = C_END; - ret[2].sval = NULL; - ret[2].ival = 0; return ret; } @@ -189,13 +185,13 @@ static game_params *custom_params(const config_item *cfg) { game_params *ret = snew(game_params); - ret->w = atoi(cfg[0].sval); - ret->h = atoi(cfg[1].sval); + ret->w = atoi(cfg[0].u.string.sval); + ret->h = atoi(cfg[1].u.string.sval); 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 @@ -589,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; @@ -733,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; @@ -742,7 +738,8 @@ static char *solve_game(const game_state *state, const game_state *currstate, int *unvisited; int circuitlen, circuitsize; int head, tail, pass, i, j, n, x, y, d, dd; - char *err, *soln, *p; + const char *err; + char *soln, *p; /* * Before anything else, deal with the special case in which @@ -1737,7 +1734,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/apps/plugins/puzzles/src/keen.c b/apps/plugins/puzzles/src/keen.c index fdaae32e5d..ec7af12985 100644 --- a/apps/plugins/puzzles/src/keen.c +++ b/apps/plugins/puzzles/src/keen.c @@ -183,23 +183,19 @@ static config_item *game_configure(const game_params *params) ret[0].name = "Grid size"; ret[0].type = C_STRING; sprintf(buf, "%d", params->w); - ret[0].sval = dupstr(buf); - ret[0].ival = 0; + ret[0].u.string.sval = dupstr(buf); ret[1].name = "Difficulty"; ret[1].type = C_CHOICES; - ret[1].sval = DIFFCONFIG; - ret[1].ival = params->diff; + ret[1].u.choices.choicenames = DIFFCONFIG; + ret[1].u.choices.selected = params->diff; ret[2].name = "Multiplication only"; ret[2].type = C_BOOLEAN; - ret[2].sval = NULL; - ret[2].ival = params->multiplication_only; + ret[2].u.boolean.bval = params->multiplication_only; ret[3].name = NULL; ret[3].type = C_END; - ret[3].sval = NULL; - ret[3].ival = 0; return ret; } @@ -208,14 +204,14 @@ static game_params *custom_params(const config_item *cfg) { game_params *ret = snew(game_params); - ret->w = atoi(cfg[0].sval); - ret->diff = cfg[1].ival; - ret->multiplication_only = cfg[2].ival; + ret->w = atoi(cfg[0].u.string.sval); + ret->diff = cfg[1].u.choices.selected; + ret->multiplication_only = cfg[2].u.boolean.bval; 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"; @@ -731,7 +727,7 @@ static char *encode_block_structure(char *p, int w, int *dsf) return q; } -static char *parse_block_structure(const char **p, int w, int *dsf) +static const char *parse_block_structure(const char **p, int w, int *dsf) { int a = w*w; int pos = 0; @@ -1207,11 +1203,11 @@ 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; - char *ret; + const char *ret; const char *p = desc; int i; @@ -1349,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; @@ -1616,7 +1612,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, ui->hpencil = 0; } ui->hcursor = 0; - return ""; /* UI activity occurred */ + return UI_UPDATE; } if (button == RIGHT_BUTTON) { /* @@ -1636,19 +1632,19 @@ static char *interpret_move(const game_state *state, game_ui *ui, ui->hshow = 0; } ui->hcursor = 0; - return ""; /* UI activity occurred */ + return UI_UPDATE; } } if (IS_CURSOR_MOVE(button)) { move_cursor(button, &ui->hx, &ui->hy, w, w, 0); ui->hshow = ui->hcursor = 1; - return ""; + return UI_UPDATE; } if (ui->hshow && (button == CURSOR_SELECT)) { ui->hpencil = 1 - ui->hpencil; ui->hcursor = 1; - return ""; + return UI_UPDATE; } if (ui->hshow && @@ -2383,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/apps/plugins/puzzles/src/latin.c b/apps/plugins/puzzles/src/latin.c index 03d78aff1f..50fae3cfea 100644 --- a/apps/plugins/puzzles/src/latin.c +++ b/apps/plugins/puzzles/src/latin.c @@ -73,7 +73,7 @@ void latin_solver_place(struct latin_solver *solver, int x, int y, int n) int latin_solver_elim(struct latin_solver *solver, int start, int step #ifdef STANDALONE_SOLVER - , char *fmt, ... + , const char *fmt, ... #endif ) { @@ -150,7 +150,7 @@ int latin_solver_set(struct latin_solver *solver, struct latin_solver_scratch *scratch, int start, int step1, int step2 #ifdef STANDALONE_SOLVER - , char *fmt, ... + , const char *fmt, ... #endif ) { @@ -499,7 +499,7 @@ int latin_solver_forcing(struct latin_solver *solver, (xt == x || yt == y)) { #ifdef STANDALONE_SOLVER if (solver_show_working) { - char *sep = ""; + const char *sep = ""; int xl, yl; printf("%*sforcing chain, %s at ends of ", solver_recurse_depth*4, "", @@ -775,7 +775,7 @@ static int latin_solver_recurse #ifdef STANDALONE_SOLVER if (solver_show_working) { - char *sep = ""; + const char *sep = ""; printf("%*srecursing on (%d,%d) [", solver_recurse_depth*4, "", x+1, y+1); for (i = 0; i < j; i++) { diff --git a/apps/plugins/puzzles/src/latin.h b/apps/plugins/puzzles/src/latin.h index 4b09f16ce1..e13050e9a8 100644 --- a/apps/plugins/puzzles/src/latin.h +++ b/apps/plugins/puzzles/src/latin.h @@ -39,7 +39,7 @@ void latin_solver_place(struct latin_solver *solver, int x, int y, int n); /* Positional elimination. */ int latin_solver_elim(struct latin_solver *solver, int start, int step #ifdef STANDALONE_SOLVER - , char *fmt, ... + , const char *fmt, ... #endif ); @@ -49,7 +49,7 @@ int latin_solver_set(struct latin_solver *solver, struct latin_solver_scratch *scratch, int start, int step1, int step2 #ifdef STANDALONE_SOLVER - , char *fmt, ... + , const char *fmt, ... #endif ); diff --git a/apps/plugins/puzzles/src/lightup.c b/apps/plugins/puzzles/src/lightup.c index 4dd46c8392..fd363e076e 100644 --- a/apps/plugins/puzzles/src/lightup.c +++ b/apps/plugins/puzzles/src/lightup.c @@ -299,37 +299,32 @@ static config_item *game_configure(const game_params *params) ret[0].name = "Width"; ret[0].type = C_STRING; sprintf(buf, "%d", params->w); - ret[0].sval = dupstr(buf); - ret[0].ival = 0; + ret[0].u.string.sval = dupstr(buf); ret[1].name = "Height"; ret[1].type = C_STRING; sprintf(buf, "%d", params->h); - ret[1].sval = dupstr(buf); - ret[1].ival = 0; + ret[1].u.string.sval = dupstr(buf); ret[2].name = "%age of black squares"; ret[2].type = C_STRING; sprintf(buf, "%d", params->blackpc); - ret[2].sval = dupstr(buf); - ret[2].ival = 0; + ret[2].u.string.sval = dupstr(buf); ret[3].name = "Symmetry"; ret[3].type = C_CHOICES; - ret[3].sval = ":None" + ret[3].u.choices.choicenames = ":None" ":2-way mirror:2-way rotational" ":4-way mirror:4-way rotational"; - ret[3].ival = params->symm; + ret[3].u.choices.selected = params->symm; ret[4].name = "Difficulty"; ret[4].type = C_CHOICES; - ret[4].sval = ":Easy:Tricky:Hard"; - ret[4].ival = params->difficulty; + ret[4].u.choices.choicenames = ":Easy:Tricky:Hard"; + ret[4].u.choices.selected = params->difficulty; ret[5].name = NULL; ret[5].type = C_END; - ret[5].sval = NULL; - ret[5].ival = 0; return ret; } @@ -338,16 +333,16 @@ static game_params *custom_params(const config_item *cfg) { game_params *ret = snew(game_params); - ret->w = atoi(cfg[0].sval); - ret->h = atoi(cfg[1].sval); - ret->blackpc = atoi(cfg[2].sval); - ret->symm = cfg[3].ival; - ret->difficulty = cfg[4].ival; + ret->w = atoi(cfg[0].u.string.sval); + ret->h = atoi(cfg[1].u.string.sval); + ret->blackpc = atoi(cfg[2].u.string.sval); + ret->symm = cfg[3].u.choices.selected; + ret->difficulty = cfg[4].u.choices.selected; 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"; @@ -1629,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++) { @@ -1700,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]; @@ -1882,7 +1877,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, enum { NONE, FLIP_LIGHT, FLIP_IMPOSSIBLE } action = NONE; int cx = -1, cy = -1; unsigned int flags; - char buf[80], *nullret = NULL, *empty = "", c; + char buf[80], *nullret = UI_UPDATE, *empty = UI_UPDATE, c; if (button == LEFT_BUTTON || button == RIGHT_BUTTON) { if (ui->cur_visible) @@ -2331,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/apps/plugins/puzzles/src/loopy.c b/apps/plugins/puzzles/src/loopy.c index 92b27ab516..5f1940e945 100644 --- a/apps/plugins/puzzles/src/loopy.c +++ b/apps/plugins/puzzles/src/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); @@ -295,7 +295,7 @@ static grid_type grid_types[] = { GRIDLIST(GRID_GRIDTYPE) }; #define NUM_GRID_TYPES (sizeof(grid_types) / sizeof(grid_types[0])) static const struct { int amin, omin; - char *aerr, *oerr; + const char *aerr, *oerr; } grid_size_limits[] = { GRIDLIST(GRID_SIZES) }; /* Generates a (dynamically allocated) new grid, according to the @@ -640,29 +640,25 @@ static config_item *game_configure(const game_params *params) ret[0].name = "Width"; ret[0].type = C_STRING; sprintf(buf, "%d", params->w); - ret[0].sval = dupstr(buf); - ret[0].ival = 0; + ret[0].u.string.sval = dupstr(buf); ret[1].name = "Height"; ret[1].type = C_STRING; sprintf(buf, "%d", params->h); - ret[1].sval = dupstr(buf); - ret[1].ival = 0; + ret[1].u.string.sval = dupstr(buf); ret[2].name = "Grid type"; ret[2].type = C_CHOICES; - ret[2].sval = GRID_CONFIGS; - ret[2].ival = params->type; + ret[2].u.choices.choicenames = GRID_CONFIGS; + ret[2].u.choices.selected = params->type; ret[3].name = "Difficulty"; ret[3].type = C_CHOICES; - ret[3].sval = DIFFCONFIG; - ret[3].ival = params->diff; + ret[3].u.choices.choicenames = DIFFCONFIG; + ret[3].u.choices.selected = params->diff; ret[4].name = NULL; ret[4].type = C_END; - ret[4].sval = NULL; - ret[4].ival = 0; return ret; } @@ -671,15 +667,15 @@ static game_params *custom_params(const config_item *cfg) { game_params *ret = snew(game_params); - ret->w = atoi(cfg[0].sval); - ret->h = atoi(cfg[1].sval); - ret->type = cfg[2].ival; - ret->diff = cfg[3].ival; + ret->w = atoi(cfg[0].u.string.sval); + ret->h = atoi(cfg[1].u.string.sval); + ret->type = cfg[2].u.choices.selected; + ret->diff = cfg[3].u.choices.selected; 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"; @@ -760,11 +756,12 @@ 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; - char *grid_desc, *ret; + char *grid_desc; + const char *ret; /* It's pretty inefficient to do this just for validation. All we need to * know is the precise number of faces. */ @@ -2912,7 +2909,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; @@ -3691,7 +3688,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/apps/plugins/puzzles/src/magnets.c b/apps/plugins/puzzles/src/magnets.c index 553ca0d0da..ebb537663a 100644 --- a/apps/plugins/puzzles/src/magnets.c +++ b/apps/plugins/puzzles/src/magnets.c @@ -193,29 +193,24 @@ static config_item *game_configure(const game_params *params) ret[0].name = "Width"; ret[0].type = C_STRING; sprintf(buf, "%d", params->w); - ret[0].sval = dupstr(buf); - ret[0].ival = 0; + ret[0].u.string.sval = dupstr(buf); ret[1].name = "Height"; ret[1].type = C_STRING; sprintf(buf, "%d", params->h); - ret[1].sval = dupstr(buf); - ret[1].ival = 0; + ret[1].u.string.sval = dupstr(buf); ret[2].name = "Difficulty"; ret[2].type = C_CHOICES; - ret[2].sval = DIFFCONFIG; - ret[2].ival = params->diff; + ret[2].u.choices.choicenames = DIFFCONFIG; + ret[2].u.choices.selected = params->diff; ret[3].name = "Strip clues"; ret[3].type = C_BOOLEAN; - ret[3].sval = NULL; - ret[3].ival = params->stripclues; + ret[3].u.boolean.bval = params->stripclues; ret[4].name = NULL; ret[4].type = C_END; - ret[4].sval = NULL; - ret[4].ival = 0; return ret; } @@ -224,15 +219,15 @@ static game_params *custom_params(const config_item *cfg) { game_params *ret = snew(game_params); - ret->w = atoi(cfg[0].sval); - ret->h = atoi(cfg[1].sval); - ret->diff = cfg[2].ival; - ret->stripclues = cfg[3].ival; + ret->w = atoi(cfg[0].u.string.sval); + ret->h = atoi(cfg[1].u.string.sval); + ret->diff = cfg[2].u.choices.selected; + ret->stripclues = cfg[3].u.boolean.bval; 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"; @@ -539,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); @@ -1455,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; @@ -1804,11 +1799,11 @@ static char *interpret_move(const game_state *state, game_ui *ui, if (IS_CURSOR_MOVE(button)) { move_cursor(button, &ui->cur_x, &ui->cur_y, state->w, state->h, 0); ui->cur_visible = 1; - return ""; + return UI_UPDATE; } else if (IS_CURSOR_SELECT(button)) { if (!ui->cur_visible) { ui->cur_visible = 1; - return ""; + return UI_UPDATE; } action = (button == CURSOR_SELECT) ? CYCLE_MAGNET : CYCLE_NEUTRAL; gx = ui->cur_x; @@ -1817,7 +1812,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, (button == LEFT_BUTTON || button == RIGHT_BUTTON)) { if (ui->cur_visible) { ui->cur_visible = 0; - nullret = ""; + nullret = UI_UPDATE; } action = (button == LEFT_BUTTON) ? CYCLE_MAGNET : CYCLE_NEUTRAL; } else if (button == LEFT_BUTTON && is_clue(state, gx, gy)) { @@ -2540,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/apps/plugins/puzzles/src/map.c b/apps/plugins/puzzles/src/map.c index 54073bad0d..cdcd5861a8 100644 --- a/apps/plugins/puzzles/src/map.c +++ b/apps/plugins/puzzles/src/map.c @@ -213,30 +213,25 @@ static config_item *game_configure(const game_params *params) ret[0].name = "Width"; ret[0].type = C_STRING; sprintf(buf, "%d", params->w); - ret[0].sval = dupstr(buf); - ret[0].ival = 0; + ret[0].u.string.sval = dupstr(buf); ret[1].name = "Height"; ret[1].type = C_STRING; sprintf(buf, "%d", params->h); - ret[1].sval = dupstr(buf); - ret[1].ival = 0; + ret[1].u.string.sval = dupstr(buf); ret[2].name = "Regions"; ret[2].type = C_STRING; sprintf(buf, "%d", params->n); - ret[2].sval = dupstr(buf); - ret[2].ival = 0; + ret[2].u.string.sval = dupstr(buf); ret[3].name = "Difficulty"; ret[3].type = C_CHOICES; - ret[3].sval = DIFFCONFIG; - ret[3].ival = params->diff; + ret[3].u.choices.choicenames = DIFFCONFIG; + ret[3].u.choices.selected = params->diff; ret[4].name = NULL; ret[4].type = C_END; - ret[4].sval = NULL; - ret[4].ival = 0; return ret; } @@ -245,15 +240,15 @@ static game_params *custom_params(const config_item *cfg) { game_params *ret = snew(game_params); - ret->w = atoi(cfg[0].sval); - ret->h = atoi(cfg[1].sval); - ret->n = atoi(cfg[2].sval); - ret->diff = cfg[3].ival; + ret->w = atoi(cfg[0].u.string.sval); + ret->h = atoi(cfg[1].u.string.sval); + ret->n = atoi(cfg[2].u.string.sval); + ret->diff = cfg[3].u.choices.selected; 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"; @@ -878,7 +873,7 @@ static const char colnames[FOUR] = { 'R', 'Y', 'G', 'B' }; static int place_colour(struct solver_scratch *sc, int *colouring, int index, int colour #ifdef SOLVER_DIAGNOSTICS - , char *verb + , const char *verb #endif ) { @@ -925,7 +920,7 @@ static char *colourset(char *buf, int set) { int i; char *p = buf; - char *sep = ""; + const char *sep = ""; for (i = 0; i < FOUR; i++) if (set & (1 << i)) { @@ -1219,7 +1214,8 @@ static int map_solver(struct solver_scratch *sc, (sc->possible[k] & currc)) { #ifdef SOLVER_DIAGNOSTICS if (verbose) { - char buf[80], *sep = ""; + char buf[80]; + const char *sep = ""; int r; printf("%*sforcing chain, colour %s, ", @@ -1704,8 +1700,8 @@ static char *new_game_desc(const game_params *params, random_state *rs, return ret; } -static char *parse_edge_list(const game_params *params, const char **desc, - int *map) +static const char *parse_edge_list(const game_params *params, + const char **desc, int *map) { int w = params->w, h = params->h, wh = w*h, n = params->n; int i, k, pos, state; @@ -1781,12 +1777,12 @@ 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; int *map; - char *ret; + const char *ret; map = snewn(2*wh, int); ret = parse_edge_list(params, &desc, map); @@ -1846,7 +1842,7 @@ static game_state *new_game(midend *me, const game_params *params, p = desc; { - char *ret; + const char *ret; ret = parse_edge_list(params, &p, state->map->map); assert(!ret); } @@ -2191,7 +2187,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) { /* @@ -2375,7 +2371,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, */ if (button == 'l' || button == 'L') { ui->show_numbers = !ui->show_numbers; - return ""; + return UI_UPDATE; } if (IS_CURSOR_MOVE(button)) { @@ -2385,14 +2381,14 @@ static char *interpret_move(const game_state *state, game_ui *ui, ui->cur_lastmove = button; ui->dragx = COORD(ui->cur_x) + TILESIZE/2 + EPSILON_X(button); ui->dragy = COORD(ui->cur_y) + TILESIZE/2 + EPSILON_Y(button); - return ""; + return UI_UPDATE; } if (IS_CURSOR_SELECT(button)) { if (!ui->cur_visible) { ui->dragx = COORD(ui->cur_x) + TILESIZE/2 + EPSILON_X(ui->cur_lastmove); ui->dragy = COORD(ui->cur_y) + TILESIZE/2 + EPSILON_Y(ui->cur_lastmove); ui->cur_visible = 1; - return ""; + return UI_UPDATE; } if (ui->drag_colour == -2) { /* not currently cursor-dragging, start. */ int r = region_from_coords(state, ds, ui->dragx, ui->dragy); @@ -2404,7 +2400,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, ui->drag_pencil = 0; } ui->cur_moved = 0; - return ""; + return UI_UPDATE; } else { /* currently cursor-dragging; drop the colour in the new region. */ x = COORD(ui->cur_x) + TILESIZE/2 + EPSILON_X(ui->cur_lastmove); y = COORD(ui->cur_y) + TILESIZE/2 + EPSILON_Y(ui->cur_lastmove); @@ -2430,14 +2426,14 @@ static char *interpret_move(const game_state *state, game_ui *ui, ui->dragx = x; ui->dragy = y; ui->cur_visible = 0; - return ""; + return UI_UPDATE; } if ((button == LEFT_DRAG || button == RIGHT_DRAG) && ui->drag_colour > -2) { ui->dragx = x; ui->dragy = y; - return ""; + return UI_UPDATE; } if ((button == LEFT_RELEASE || button == RIGHT_RELEASE) && @@ -2461,18 +2457,18 @@ drag_dropped: ui->drag_colour = -2; if (r < 0) - return ""; /* drag into border; do nothing else */ + return UI_UPDATE; /* drag into border; do nothing else */ if (state->map->immutable[r]) - return ""; /* can't change this region */ + return UI_UPDATE; /* can't change this region */ if (state->colouring[r] == c && state->pencil[r] == p) - return ""; /* don't _need_ to change this region */ + return UI_UPDATE; /* don't _need_ to change this region */ if (alt_button) { if (state->colouring[r] >= 0) { /* Can't pencil on a coloured region */ - return ""; + return UI_UPDATE; } else if (c >= 0) { /* Right-dragging from colour to blank toggles one pencil */ p = state->pencil[r] ^ (1 << c); @@ -3240,7 +3236,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/apps/plugins/puzzles/src/maxflow.c b/apps/plugins/puzzles/src/maxflow.c index 028946b9bd..97ae8c487d 100644 --- a/apps/plugins/puzzles/src/maxflow.c +++ b/apps/plugins/puzzles/src/maxflow.c @@ -80,7 +80,7 @@ int maxflow_with_scratch(void *scratch, int nv, int source, int sink, /* * Now do the BFS loop. */ - while (head < tail && prev[sink] <= 0) { + while (head < tail && prev[sink] < 0) { from = todo[head++]; /* diff --git a/apps/plugins/puzzles/src/midend.c b/apps/plugins/puzzles/src/midend.c index 09b59b25e2..4ccb1f94a0 100644 --- a/apps/plugins/puzzles/src/midend.c +++ b/apps/plugins/puzzles/src/midend.c @@ -63,6 +63,9 @@ struct midend { int nstates, statesize, statepos; struct midend_state_entry *states; + char *newgame_undo_buf; + int newgame_undo_len, newgame_undo_size; + game_params *params, *curparams; game_drawstate *drawstate; game_ui *ui; @@ -94,6 +97,30 @@ struct midend { } \ } while (0) +/* + * Structure storing all the decoded data from reading a serialised + * game. We keep it in one of these while we check its sanity, and + * only once we're completely satisfied do we install it all in the + * midend structure proper. + */ +struct deserialise_data { + char *seed, *parstr, *desc, *privdesc; + char *auxinfo, *uistr, *cparstr; + float elapsed; + game_params *params, *cparams; + game_ui *ui; + struct midend_state_entry *states; + int nstates, statepos; +}; + +/* + * Forward reference. + */ +static const char *midend_deserialise_internal( + midend *me, int (*read)(void *ctx, void *buf, int len), void *rctx, + const char *(*check)(void *ctx, midend *, const struct deserialise_data *), + void *cctx); + void midend_reset_tilesize(midend *me) { me->preferred_tilesize = me->ourgame->preferred_tilesize; @@ -131,6 +158,8 @@ midend *midend_new(frontend *fe, const game *ourgame, me->random = random_new(randseed, randseedsize); me->nstates = me->statesize = me->statepos = 0; me->states = NULL; + me->newgame_undo_buf = NULL; + me->newgame_undo_size = me->newgame_undo_len = 0; me->params = ourgame->default_params(); me->game_id_change_notify_function = NULL; me->game_id_change_notify_ctx = NULL; @@ -228,6 +257,7 @@ void midend_free(midend *me) if (me->drawing) drawing_free(me->drawing); random_free(me->random); + sfree(me->newgame_undo_buf); sfree(me->states); sfree(me->desc); sfree(me->privdesc); @@ -354,8 +384,40 @@ void midend_force_redraw(midend *me) midend_redraw(me); } +static void newgame_serialise_write(void *ctx, const void *buf, int len) +{ + midend *const me = ctx; + int new_len; + + assert(len < INT_MAX - me->newgame_undo_len); + new_len = me->newgame_undo_len + len; + if (new_len > me->newgame_undo_size) { + me->newgame_undo_size = new_len + new_len / 4 + 1024; + me->newgame_undo_buf = sresize(me->newgame_undo_buf, + me->newgame_undo_size, char); + } + memcpy(me->newgame_undo_buf + me->newgame_undo_len, buf, len); + me->newgame_undo_len = new_len; +} + void midend_new_game(midend *me) { + me->newgame_undo_len = 0; + if (me->nstates != 0) { + /* + * Serialise the whole of the game that we're about to + * supersede, so that the 'New Game' action can be undone + * later. But if nstates == 0, that means there _isn't_ a + * current game (not even a starting position), because this + * is the initial call to midend_new_game when the midend is + * first set up; in that situation, we want to avoid writing + * out any serialisation, because it would be useless anyway + * and just confuse us into thinking we had something to undo + * to. + */ + midend_serialise(me, newgame_serialise_write, me); + } + midend_stop_anim(me); midend_free_game(me); @@ -434,7 +496,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, @@ -469,7 +532,7 @@ void midend_new_game(midend *me) int midend_can_undo(midend *me) { - return (me->statepos > 1); + return (me->statepos > 1 || me->newgame_undo_len); } int midend_can_redo(midend *me) @@ -477,8 +540,82 @@ int midend_can_redo(midend *me) return (me->statepos < me->nstates); } +struct newgame_undo_deserialise_read_ctx { + midend *me; + int len, pos; +}; + +static int newgame_undo_deserialise_read(void *ctx, void *buf, int len) +{ + struct newgame_undo_deserialise_read_ctx *const rctx = ctx; + midend *const me = rctx->me; + + int use = min(len, rctx->len - rctx->pos); + memcpy(buf, me->newgame_undo_buf + rctx->pos, use); + rctx->pos += use; + return use; +} + +struct newgame_undo_deserialise_check_ctx { + int refused; +}; + +static const char *newgame_undo_deserialise_check( + void *vctx, midend *me, const struct deserialise_data *data) +{ + struct newgame_undo_deserialise_check_ctx *ctx = + (struct newgame_undo_deserialise_check_ctx *)vctx; + char *old, *new; + + /* + * Undoing a New Game operation is only permitted if it doesn't + * change the game parameters. The point of having the ability at + * all is to recover from the momentary finger error of having hit + * the 'n' key (perhaps in place of some other nearby key), or hit + * the New Game menu item by mistake when aiming for the adjacent + * Restart; in both those situations, the game params are the same + * before and after the new-game operation. + * + * In principle, we could generalise this so that _any_ call to + * midend_new_game could be undone, but that would need all front + * ends to be alert to the possibility that any keystroke passed + * to midend_process_key might (if it turns out to have been one + * of the synonyms for undo, which the frontend doesn't + * necessarily check for) have various knock-on effects like + * needing to select a different preset in the game type menu, or + * even resizing the window. At least for the moment, it's easier + * not to do that, and to simply disallow any newgame-undo that is + * disruptive in either of those ways. + * + * We check both params and cparams, to be as safe as possible. + */ + + old = me->ourgame->encode_params(me->params, TRUE); + new = me->ourgame->encode_params(data->params, TRUE); + if (strcmp(old, new)) { + /* Set a flag to distinguish this deserialise failure + * from one due to faulty decoding */ + ctx->refused = TRUE; + return "Undoing this new-game operation would change params"; + } + + old = me->ourgame->encode_params(me->curparams, TRUE); + new = me->ourgame->encode_params(data->cparams, TRUE); + if (strcmp(old, new)) { + ctx->refused = TRUE; + return "Undoing this new-game operation would change params"; + } + + /* + * Otherwise, fine, go ahead. + */ + return NULL; +} + static int midend_undo(midend *me) { + const char *deserialise_error; + if (me->statepos > 1) { if (me->ui) me->ourgame->changed_state(me->ui, @@ -487,6 +624,36 @@ static int midend_undo(midend *me) me->statepos--; me->dir = -1; return 1; + } else if (me->newgame_undo_len) { + /* This undo cannot be undone with redo */ + struct newgame_undo_deserialise_read_ctx rctx; + struct newgame_undo_deserialise_check_ctx cctx; + rctx.me = me; + rctx.len = me->newgame_undo_len; /* copy for reentrancy safety */ + rctx.pos = 0; + cctx.refused = FALSE; + deserialise_error = midend_deserialise_internal( + me, newgame_undo_deserialise_read, &rctx, + newgame_undo_deserialise_check, &cctx); + if (cctx.refused) { + /* + * Our post-deserialisation check shows that we can't use + * this saved game after all. (deserialise_error will + * contain the dummy error message generated by our check + * function, which we ignore.) + */ + return 0; + } else { + /* + * There should never be any _other_ deserialisation + * error, because this serialised data has been held in + * our memory since it was created, and hasn't had any + * opportunity to be corrupted on disk, accidentally + * replaced by the wrong file, etc., by user error. + */ + assert(!deserialise_error); + return 1; + } } else return 0; } @@ -629,7 +796,7 @@ static int midend_really_process_key(midend *me, int x, int y, int button) } else goto done; } else { - if (!*movestr) + if (movestr == UI_UPDATE) s = me->states[me->statepos-1].state; else { s = me->ourgame->execute_move(me->states[me->statepos-1].state, @@ -1166,7 +1333,8 @@ void midend_request_id_changes(midend *me, void (*notify)(void *), void *ctx) me->game_id_change_notify_ctx = ctx; } -void midend_supersede_game_desc(midend *me, char *desc, char *privdesc) +void midend_supersede_game_desc(midend *me, const char *desc, + const char *privdesc) { sfree(me->desc); sfree(me->privdesc); @@ -1178,7 +1346,8 @@ void midend_supersede_game_desc(midend *me, char *desc, char *privdesc) config_item *midend_get_config(midend *me, int which, char **wintitle) { - char *titlebuf, *parstr, *rest; + char *titlebuf, *parstr; + const char *rest; config_item *ret; char sep; @@ -1207,7 +1376,6 @@ config_item *midend_get_config(midend *me, int which, char **wintitle) ret[0].name = "Game random seed"; else ret[0].name = "Game ID"; - ret[0].ival = 0; /* * For CFG_DESC the text going in here will be a string * encoding of the restricted parameters, plus a colon, @@ -1226,13 +1394,12 @@ config_item *midend_get_config(midend *me, int which, char **wintitle) rest = me->seedstr ? me->seedstr : ""; sep = '#'; } - ret[0].sval = snewn(strlen(parstr) + strlen(rest) + 2, char); - sprintf(ret[0].sval, "%s%c%s", parstr, sep, rest); + ret[0].u.string.sval = snewn(strlen(parstr) + strlen(rest) + 2, char); + sprintf(ret[0].u.string.sval, "%s%c%s", parstr, sep, rest); sfree(parstr); ret[1].type = C_END; - ret[1].name = ret[1].sval = NULL; - ret[1].ival = 0; + ret[1].name = NULL; return ret; } @@ -1241,9 +1408,11 @@ 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, const char *id, int defmode) { - char *error, *par, *desc, *seed; + const char *error; + char *par = NULL; + const char *desc, *seed; game_params *newcurparams, *newparams, *oldparams1, *oldparams2; int free_params; @@ -1256,8 +1425,10 @@ static char *midend_game_id_int(midend *me, char *id, int defmode) * description. So `par' now points to the parameters * string, and `desc' to the description string. */ - *desc++ = '\0'; - par = id; + par = snewn(desc-id + 1, char); + strncpy(par, id, desc-id); + par[desc-id] = '\0'; + desc++; seed = NULL; } else if (seed && (!desc || seed < desc)) { /* @@ -1265,8 +1436,10 @@ static char *midend_game_id_int(midend *me, char *id, int defmode) * So `par' now points to the parameters string, and `seed' * to the seed string. */ - *seed++ = '\0'; - par = id; + par = snewn(seed-id + 1, char); + strncpy(par, id, seed-id); + par[seed-id] = '\0'; + seed++; desc = NULL; } else { /* @@ -1275,12 +1448,14 @@ static char *midend_game_id_int(midend *me, char *id, int defmode) */ if (defmode == DEF_SEED) { seed = id; - par = desc = NULL; + par = NULL; + desc = NULL; } else if (defmode == DEF_DESC) { desc = id; - par = seed = NULL; + par = NULL; + seed = NULL; } else { - par = id; + par = dupstr(id); seed = desc = NULL; } } @@ -1410,10 +1585,12 @@ static char *midend_game_id_int(midend *me, char *id, int defmode) me->genmode = GOT_SEED; } + sfree(par); + return NULL; } -char *midend_game_id(midend *me, char *id) +const char *midend_game_id(midend *me, const char *id) { return midend_game_id_int(me, id, DEF_PARAMS); } @@ -1446,9 +1623,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) { @@ -1467,7 +1644,7 @@ char *midend_set_config(midend *me, int which, config_item *cfg) case CFG_SEED: case CFG_DESC: - error = midend_game_id_int(me, cfg[0].sval, + error = midend_game_id_int(me, cfg[0].u.string.sval, (which == CFG_SEED ? DEF_SEED : DEF_DESC)); if (error) return error; @@ -1494,10 +1671,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"; @@ -1509,6 +1687,7 @@ char *midend_solve(midend *me) movestr = me->ourgame->solve(me->states[0].state, me->states[me->statepos-1].state, me->aux_info, &msg); + assert(movestr != UI_UPDATE); if (!movestr) { if (!msg) msg = "Solve operation failed"; /* _shouldn't_ happen, but can */ @@ -1566,7 +1745,7 @@ int midend_status(midend *me) return me->ourgame->status(me->states[me->statepos-1].state); } -char *midend_rewrite_statusbar(midend *me, char *text) +char *midend_rewrite_statusbar(midend *me, const char *text) { /* * An important special case is that we are occasionally called @@ -1600,7 +1779,7 @@ char *midend_rewrite_statusbar(midend *me, char *text) #define SERIALISE_VERSION "1" void midend_serialise(midend *me, - void (*write)(void *ctx, void *buf, int len), + void (*write)(void *ctx, const void *buf, int len), void *wctx) { int i; @@ -1616,7 +1795,7 @@ void midend_serialise(midend *me, */ #define wr(h,s) do { \ char hbuf[80]; \ - char *str = (s); \ + const char *str = (s); \ char lbuf[9]; \ copy_left_justified(lbuf, sizeof(lbuf), h); \ sprintf(hbuf, "%s:%d:", lbuf, (int)strlen(str)); \ @@ -1748,39 +1927,43 @@ void midend_serialise(midend *me, } /* - * This function returns NULL on success, or an error message. + * Internal version of midend_deserialise, taking an extra check + * function to be called just before beginning to install things in + * the midend. + * + * Like midend_deserialise proper, this function returns NULL on + * success, or an error message. */ -char *midend_deserialise(midend *me, - int (*read)(void *ctx, void *buf, int len), - void *rctx) +static const char *midend_deserialise_internal( + midend *me, int (*read)(void *ctx, void *buf, int len), void *rctx, + const char *(*check)(void *ctx, midend *, const struct deserialise_data *), + void *cctx) { - int nstates = 0, statepos = -1, gotstates = 0; + struct deserialise_data data; + int gotstates = 0; int started = FALSE; int i; char *val = NULL; /* Initially all errors give the same report */ - char *ret = "Data does not appear to be a saved game file"; + const char *ret = "Data does not appear to be a saved game file"; - /* - * We construct all the new state in local variables while we - * check its sanity. Only once we have finished reading the - * serialised data and detected no errors at all do we start - * modifying stuff in the midend passed in. - */ - char *seed = NULL, *parstr = NULL, *desc = NULL, *privdesc = NULL; - char *auxinfo = NULL, *uistr = NULL, *cparstr = NULL; - float elapsed = 0.0F; - game_params *params = NULL, *cparams = NULL; - game_ui *ui = NULL; - struct midend_state_entry *states = NULL; + data.seed = data.parstr = data.desc = data.privdesc = NULL; + data.auxinfo = data.uistr = data.cparstr = NULL; + data.elapsed = 0.0F; + data.params = data.cparams = NULL; + data.ui = NULL; + data.states = NULL; + data.nstates = 0; + data.statepos = -1; /* * Loop round and round reading one key/value pair at a time * from the serialised stream, until we have enough game states * to finish. */ - while (nstates <= 0 || statepos < 0 || gotstates < nstates-1) { + while (data.nstates <= 0 || data.statepos < 0 || + gotstates < data.nstates-1) { char key[9], c; int len; @@ -1852,24 +2035,24 @@ char *midend_deserialise(midend *me, goto cleanup; } } else if (!strcmp(key, "PARAMS")) { - sfree(parstr); - parstr = val; + sfree(data.parstr); + data.parstr = val; val = NULL; } else if (!strcmp(key, "CPARAMS")) { - sfree(cparstr); - cparstr = val; + sfree(data.cparstr); + data.cparstr = val; val = NULL; } else if (!strcmp(key, "SEED")) { - sfree(seed); - seed = val; + sfree(data.seed); + data.seed = val; val = NULL; } else if (!strcmp(key, "DESC")) { - sfree(desc); - desc = val; + sfree(data.desc); + data.desc = val; val = NULL; } else if (!strcmp(key, "PRIVDESC")) { - sfree(privdesc); - privdesc = val; + sfree(data.privdesc); + data.privdesc = val; val = NULL; } else if (!strcmp(key, "AUXINFO")) { unsigned char *tmp; @@ -1877,49 +2060,49 @@ char *midend_deserialise(midend *me, tmp = hex2bin(val, len); obfuscate_bitmap(tmp, len*8, TRUE); - sfree(auxinfo); - auxinfo = snewn(len + 1, char); - memcpy(auxinfo, tmp, len); - auxinfo[len] = '\0'; + sfree(data.auxinfo); + data.auxinfo = snewn(len + 1, char); + memcpy(data.auxinfo, tmp, len); + data.auxinfo[len] = '\0'; sfree(tmp); } else if (!strcmp(key, "UI")) { - sfree(uistr); - uistr = val; + sfree(data.uistr); + data.uistr = val; val = NULL; } else if (!strcmp(key, "TIME")) { - elapsed = (float)atof(val); + data.elapsed = (float)atof(val); } else if (!strcmp(key, "NSTATES")) { - nstates = atoi(val); - if (nstates <= 0) { + data.nstates = atoi(val); + if (data.nstates <= 0) { ret = "Number of states in save file was negative"; goto cleanup; } - if (states) { + if (data.states) { ret = "Two state counts provided in save file"; goto cleanup; } - states = snewn(nstates, struct midend_state_entry); - for (i = 0; i < nstates; i++) { - states[i].state = NULL; - states[i].movestr = NULL; - states[i].movetype = NEWGAME; + data.states = snewn(data.nstates, struct midend_state_entry); + for (i = 0; i < data.nstates; i++) { + data.states[i].state = NULL; + data.states[i].movestr = NULL; + data.states[i].movetype = NEWGAME; } } else if (!strcmp(key, "STATEPOS")) { - statepos = atoi(val); + data.statepos = atoi(val); } else if (!strcmp(key, "MOVE")) { gotstates++; - states[gotstates].movetype = MOVE; - states[gotstates].movestr = val; + data.states[gotstates].movetype = MOVE; + data.states[gotstates].movestr = val; val = NULL; } else if (!strcmp(key, "SOLVE")) { gotstates++; - states[gotstates].movetype = SOLVE; - states[gotstates].movestr = val; + data.states[gotstates].movetype = SOLVE; + data.states[gotstates].movestr = val; val = NULL; } else if (!strcmp(key, "RESTART")) { gotstates++; - states[gotstates].movetype = RESTART; - states[gotstates].movestr = val; + data.states[gotstates].movetype = RESTART; + data.states[gotstates].movestr = val; val = NULL; } } @@ -1928,68 +2111,77 @@ char *midend_deserialise(midend *me, val = NULL; } - params = me->ourgame->default_params(); - me->ourgame->decode_params(params, parstr); - if (me->ourgame->validate_params(params, TRUE)) { + data.params = me->ourgame->default_params(); + me->ourgame->decode_params(data.params, data.parstr); + if (me->ourgame->validate_params(data.params, TRUE)) { ret = "Long-term parameters in save file are invalid"; goto cleanup; } - cparams = me->ourgame->default_params(); - me->ourgame->decode_params(cparams, cparstr); - if (me->ourgame->validate_params(cparams, FALSE)) { + data.cparams = me->ourgame->default_params(); + me->ourgame->decode_params(data.cparams, data.cparstr); + if (me->ourgame->validate_params(data.cparams, FALSE)) { ret = "Short-term parameters in save file are invalid"; goto cleanup; } - if (seed && me->ourgame->validate_params(cparams, TRUE)) { + if (data.seed && me->ourgame->validate_params(data.cparams, TRUE)) { /* * The seed's no use with this version, but we can perfectly * well use the rest of the data. */ - sfree(seed); - seed = NULL; + sfree(data.seed); + data.seed = NULL; } - if (!desc) { + if (!data.desc) { ret = "Game description in save file is missing"; goto cleanup; - } else if (me->ourgame->validate_desc(params, desc)) { + } else if (me->ourgame->validate_desc(data.cparams, data.desc)) { ret = "Game description in save file is invalid"; goto cleanup; } - if (privdesc && me->ourgame->validate_desc(params, privdesc)) { + if (data.privdesc && + me->ourgame->validate_desc(data.cparams, data.privdesc)) { ret = "Game private description in save file is invalid"; goto cleanup; } - if (statepos < 0 || statepos >= nstates) { + if (data.statepos < 0 || data.statepos >= data.nstates) { ret = "Game position in save file is out of range"; } - states[0].state = me->ourgame->new_game(me, params, - privdesc ? privdesc : desc); - for (i = 1; i < nstates; i++) { - assert(states[i].movetype != NEWGAME); - switch (states[i].movetype) { + data.states[0].state = me->ourgame->new_game( + me, data.cparams, data.privdesc ? data.privdesc : data.desc); + for (i = 1; i < data.nstates; i++) { + assert(data.states[i].movetype != NEWGAME); + switch (data.states[i].movetype) { case MOVE: case SOLVE: - states[i].state = me->ourgame->execute_move(states[i-1].state, - states[i].movestr); - if (states[i].state == NULL) { + data.states[i].state = me->ourgame->execute_move( + data.states[i-1].state, data.states[i].movestr); + if (data.states[i].state == NULL) { ret = "Save file contained an invalid move"; goto cleanup; } break; case RESTART: - if (me->ourgame->validate_desc(params, states[i].movestr)) { + if (me->ourgame->validate_desc( + data.cparams, data.states[i].movestr)) { ret = "Save file contained an invalid restart move"; goto cleanup; } - states[i].state = me->ourgame->new_game(me, params, - states[i].movestr); + data.states[i].state = me->ourgame->new_game( + me, data.cparams, data.states[i].movestr); break; } } - ui = me->ourgame->new_ui(states[0].state); - me->ourgame->decode_ui(ui, uistr); + data.ui = me->ourgame->new_ui(data.states[0].state); + me->ourgame->decode_ui(data.ui, data.uistr); + + /* + * Run the externally provided check function, and abort if it + * returns an error message. + */ + if (check && (ret = check(cctx, me, &data)) != NULL) + goto cleanup; /* error message is already in ret */ /* * Now we've run out of possible error conditions, so we're @@ -2002,45 +2194,54 @@ char *midend_deserialise(midend *me, char *tmp; tmp = me->desc; - me->desc = desc; - desc = tmp; + me->desc = data.desc; + data.desc = tmp; tmp = me->privdesc; - me->privdesc = privdesc; - privdesc = tmp; + me->privdesc = data.privdesc; + data.privdesc = tmp; tmp = me->seedstr; - me->seedstr = seed; - seed = tmp; + me->seedstr = data.seed; + data.seed = tmp; tmp = me->aux_info; - me->aux_info = auxinfo; - auxinfo = tmp; + me->aux_info = data.auxinfo; + data.auxinfo = tmp; } me->genmode = GOT_NOTHING; - me->statesize = nstates; - nstates = me->nstates; + me->statesize = data.nstates; + data.nstates = me->nstates; me->nstates = me->statesize; { struct midend_state_entry *tmp; tmp = me->states; - me->states = states; - states = tmp; + me->states = data.states; + data.states = tmp; } - me->statepos = statepos; + me->statepos = data.statepos; + + /* + * Don't save the "new game undo" state. So "new game" twice or + * (in some environments) switching away and back, will make a + * "new game" irreversible. Maybe in the future we will have a + * more sophisticated way to decide when to discard the previous + * game state. + */ + me->newgame_undo_len = 0; { game_params *tmp; tmp = me->params; - me->params = params; - params = tmp; + me->params = data.params; + data.params = tmp; tmp = me->curparams; - me->curparams = cparams; - cparams = tmp; + me->curparams = data.cparams; + data.cparams = tmp; } me->oldstate = NULL; @@ -2051,11 +2252,11 @@ char *midend_deserialise(midend *me, game_ui *tmp; tmp = me->ui; - me->ui = ui; - ui = tmp; + me->ui = data.ui; + data.ui = tmp; } - me->elapsed = elapsed; + me->elapsed = data.elapsed; me->pressed_mouse_button = 0; midend_set_timer(me); @@ -2073,33 +2274,39 @@ char *midend_deserialise(midend *me, cleanup: sfree(val); - sfree(seed); - sfree(parstr); - sfree(cparstr); - sfree(desc); - sfree(privdesc); - sfree(auxinfo); - sfree(uistr); - if (params) - me->ourgame->free_params(params); - if (cparams) - me->ourgame->free_params(cparams); - if (ui) - me->ourgame->free_ui(ui); - if (states) { + sfree(data.seed); + sfree(data.parstr); + sfree(data.cparstr); + sfree(data.desc); + sfree(data.privdesc); + sfree(data.auxinfo); + sfree(data.uistr); + if (data.params) + me->ourgame->free_params(data.params); + if (data.cparams) + me->ourgame->free_params(data.cparams); + if (data.ui) + me->ourgame->free_ui(data.ui); + if (data.states) { int i; - for (i = 0; i < nstates; i++) { - if (states[i].state) - me->ourgame->free_game(states[i].state); - sfree(states[i].movestr); + for (i = 0; i < data.nstates; i++) { + if (data.states[i].state) + me->ourgame->free_game(data.states[i].state); + sfree(data.states[i].movestr); } - sfree(states); + sfree(data.states); } return ret; } +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); +} + /* * This function examines a saved game file just far enough to * determine which game type it contains. It returns NULL on success @@ -2107,15 +2314,16 @@ char *midend_deserialise(midend *me, * 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; char *val = NULL; /* Initially all errors give the same report */ - char *ret = "Data does not appear to be a saved game file"; + const char *ret = "Data does not appear to be a saved game file"; *name = NULL; @@ -2205,7 +2413,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; @@ -2213,7 +2421,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/apps/plugins/puzzles/src/mines.c b/apps/plugins/puzzles/src/mines.c index 107b3ba159..340bb4b8d3 100644 --- a/apps/plugins/puzzles/src/mines.c +++ b/apps/plugins/puzzles/src/mines.c @@ -203,30 +203,24 @@ static config_item *game_configure(const game_params *params) ret[0].name = "Width"; ret[0].type = C_STRING; sprintf(buf, "%d", params->w); - ret[0].sval = dupstr(buf); - ret[0].ival = 0; + ret[0].u.string.sval = dupstr(buf); ret[1].name = "Height"; ret[1].type = C_STRING; sprintf(buf, "%d", params->h); - ret[1].sval = dupstr(buf); - ret[1].ival = 0; + ret[1].u.string.sval = dupstr(buf); ret[2].name = "Mines"; ret[2].type = C_STRING; sprintf(buf, "%d", params->n); - ret[2].sval = dupstr(buf); - ret[2].ival = 0; + ret[2].u.string.sval = dupstr(buf); ret[3].name = "Ensure solubility"; ret[3].type = C_BOOLEAN; - ret[3].sval = NULL; - ret[3].ival = params->unique; + ret[3].u.boolean.bval = params->unique; ret[4].name = NULL; ret[4].type = C_END; - ret[4].sval = NULL; - ret[4].ival = 0; return ret; } @@ -235,17 +229,17 @@ static game_params *custom_params(const config_item *cfg) { game_params *ret = snew(game_params); - ret->w = atoi(cfg[0].sval); - ret->h = atoi(cfg[1].sval); - ret->n = atoi(cfg[2].sval); - if (strchr(cfg[2].sval, '%')) + ret->w = atoi(cfg[0].u.string.sval); + ret->h = atoi(cfg[1].u.string.sval); + ret->n = atoi(cfg[2].u.string.sval); + if (strchr(cfg[2].u.string.sval, '%')) ret->n = ret->n * (ret->w * ret->h) / 100; - ret->unique = cfg[3].ival; + ret->unique = cfg[3].u.boolean.bval; 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. @@ -1996,7 +1990,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; @@ -2306,7 +2300,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"; @@ -2434,14 +2428,14 @@ static char *interpret_move(const game_state *from, game_ui *ui, if (IS_CURSOR_MOVE(button)) { move_cursor(button, &ui->cur_x, &ui->cur_y, from->w, from->h, 0); ui->cur_visible = 1; - return ""; + return UI_UPDATE; } if (IS_CURSOR_SELECT(button)) { int v = from->grid[ui->cur_y * from->w + ui->cur_x]; if (!ui->cur_visible) { ui->cur_visible = 1; - return ""; + return UI_UPDATE; } if (button == CURSOR_SELECT2) { /* As for RIGHT_BUTTON; only works on covered square. */ @@ -2481,7 +2475,7 @@ static char *interpret_move(const game_state *from, game_ui *ui, else if (button == MIDDLE_BUTTON) ui->validradius = 1; ui->cur_visible = 0; - return ""; + return UI_UPDATE; } if (button == RIGHT_BUTTON) { @@ -2509,10 +2503,10 @@ static char *interpret_move(const game_state *from, game_ui *ui, /* * At this stage we must never return NULL: we have adjusted - * the ui, so at worst we return "". + * the ui, so at worst we return UI_UPDATE. */ if (cx < 0 || cx >= from->w || cy < 0 || cy >= from->h) - return ""; + return UI_UPDATE; /* * Left-clicking on a covered square opens a tile. Not @@ -2566,7 +2560,7 @@ uncover: * can. */ char *p = buf; - char *sep = ""; + const char *sep = ""; for (dy = -1; dy <= +1; dy++) for (dx = -1; dx <= +1; dx++) @@ -2590,7 +2584,7 @@ uncover: } } - return ""; + return UI_UPDATE; } } @@ -3235,7 +3229,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/apps/plugins/puzzles/src/misc.c b/apps/plugins/puzzles/src/misc.c index 816d47e43a..83671a2744 100644 --- a/apps/plugins/puzzles/src/misc.c +++ b/apps/plugins/puzzles/src/misc.c @@ -9,13 +9,15 @@ #include "puzzles.h" +char UI_UPDATE[] = ""; + void free_cfg(config_item *cfg) { config_item *i; for (i = cfg; i->type != C_END; i++) if (i->type == C_STRING) - sfree(i->sval); + sfree(i->u.string.sval); sfree(cfg); } @@ -349,7 +351,7 @@ void pos2c(int w, int h, int pos, int *cx, int *cy) void draw_text_outline(drawing *dr, int x, int y, int fonttype, int fontsize, int align, - int text_colour, int outline_colour, char *text) + int text_colour, int outline_colour, const char *text) { if (outline_colour > -1) { draw_text(dr, x-1, y, fonttype, fontsize, align, outline_colour, text); diff --git a/apps/plugins/puzzles/src/nestedvm.c b/apps/plugins/puzzles/src/nestedvm.c index f7a2ae8ec5..0ad0f3fab4 100644 --- a/apps/plugins/puzzles/src/nestedvm.c +++ b/apps/plugins/puzzles/src/nestedvm.c @@ -17,7 +17,7 @@ extern void _pause(); extern int _call_java(int cmd, int arg1, int arg2, int arg3); -void fatal(char *fmt, ...) +void fatal(const char *fmt, ...) { va_list ap; fprintf(stderr, "fatal error: "); @@ -53,7 +53,7 @@ void frontend_default_colour(frontend *fe, float *output) output[0] = output[1]= output[2] = 0.8f; } -void nestedvm_status_bar(void *handle, char *text) +void nestedvm_status_bar(void *handle, const char *text) { _call_java(4,0,(int)text,0); } @@ -79,7 +79,7 @@ void nestedvm_unclip(void *handle) } void nestedvm_draw_text(void *handle, int x, int y, int fonttype, int fontsize, - int align, int colour, char *text) + int align, int colour, const char *text) { frontend *fe = (frontend *)handle; _call_java(5, x + fe->ox, y + fe->oy, @@ -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); @@ -273,19 +273,22 @@ void jcallback_config_ok() void jcallback_config_set_string(int item_ptr, int char_ptr) { config_item *i = (config_item *)item_ptr; char* newval = (char*) char_ptr; - sfree(i->sval); - i->sval = dupstr(newval); + assert(i->type == C_STRING); + sfree(i->u.string.sval); + i->u.string.sval = dupstr(newval); free(newval); } void jcallback_config_set_boolean(int item_ptr, int selected) { config_item *i = (config_item *)item_ptr; - i->ival = selected != 0 ? TRUE : FALSE; + assert(i->type == C_BOOLEAN); + i->u.boolean.bval = selected != 0 ? TRUE : FALSE; } void jcallback_config_set_choice(int item_ptr, int selected) { config_item *i = (config_item *)item_ptr; - i->ival = selected; + assert(i->type == C_CHOICES); + i->u.choices.selected = selected; } static int get_config(frontend *fe, int which) @@ -298,7 +301,18 @@ static int get_config(frontend *fe, int which) _call_java(10, (int)title, 0, 0); for (i = fe->cfg; i->type != C_END; i++) { _call_java(5, (int)i, i->type, (int)i->name); - _call_java(11, (int)i->sval, i->ival, 0); + switch (i->type) { + case C_STRING: + _call_java(11, (int)i->u.string.sval, 0, 0); + break; + case C_BOOLEAN: + _call_java(11, 0, i->u.boolean.bval, 0); + break; + case C_CHOICES: + _call_java(11, (int)i->u.choices.choicenames, + i->u.choices.selected, 0); + break; + } } _call_java(12,0,0,0); free_cfg(fe->cfg); @@ -363,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/apps/plugins/puzzles/src/net.c b/apps/plugins/puzzles/src/net.c index 0b3b82446d..ab2425e4e7 100644 --- a/apps/plugins/puzzles/src/net.c +++ b/apps/plugins/puzzles/src/net.c @@ -270,35 +270,28 @@ static config_item *game_configure(const game_params *params) ret[0].name = "Width"; ret[0].type = C_STRING; sprintf(buf, "%d", params->width); - ret[0].sval = dupstr(buf); - ret[0].ival = 0; + ret[0].u.string.sval = dupstr(buf); ret[1].name = "Height"; ret[1].type = C_STRING; sprintf(buf, "%d", params->height); - ret[1].sval = dupstr(buf); - ret[1].ival = 0; + ret[1].u.string.sval = dupstr(buf); ret[2].name = "Walls wrap around"; ret[2].type = C_BOOLEAN; - ret[2].sval = NULL; - ret[2].ival = params->wrapping; + ret[2].u.boolean.bval = params->wrapping; ret[3].name = "Barrier probability"; ret[3].type = C_STRING; ftoa(buf, params->barrier_probability); - ret[3].sval = dupstr(buf); - ret[3].ival = 0; + ret[3].u.string.sval = dupstr(buf); ret[4].name = "Ensure unique solution"; ret[4].type = C_BOOLEAN; - ret[4].sval = NULL; - ret[4].ival = params->unique; + ret[4].u.boolean.bval = params->unique; ret[5].name = NULL; ret[5].type = C_END; - ret[5].sval = NULL; - ret[5].ival = 0; return ret; } @@ -307,16 +300,16 @@ static game_params *custom_params(const config_item *cfg) { game_params *ret = snew(game_params); - ret->width = atoi(cfg[0].sval); - ret->height = atoi(cfg[1].sval); - ret->wrapping = cfg[2].ival; - ret->barrier_probability = (float)atof(cfg[3].sval); - ret->unique = cfg[4].ival; + ret->width = atoi(cfg[0].u.string.sval); + ret->height = atoi(cfg[1].u.string.sval); + ret->wrapping = cfg[2].u.boolean.bval; + ret->barrier_probability = (float)atof(cfg[3].u.string.sval); + ret->unique = cfg[4].u.boolean.bval; 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"; @@ -1601,7 +1594,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; @@ -1752,7 +1745,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; @@ -2099,7 +2092,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, if (ui->cur_visible) { ui->cur_visible = FALSE; - nullret = ""; + nullret = UI_UPDATE; } /* @@ -2339,7 +2332,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, OFFSET(ui->cur_x, ui->cur_y, ui->cur_x, ui->cur_y, dir, state); ui->cur_visible = TRUE; } - return ""; + return UI_UPDATE; } else { return NULL; } diff --git a/apps/plugins/puzzles/src/netslide.c b/apps/plugins/puzzles/src/netslide.c index bb9b0999ea..d4d9856295 100644 --- a/apps/plugins/puzzles/src/netslide.c +++ b/apps/plugins/puzzles/src/netslide.c @@ -265,36 +265,29 @@ static config_item *game_configure(const game_params *params) ret[0].name = "Width"; ret[0].type = C_STRING; sprintf(buf, "%d", params->width); - ret[0].sval = dupstr(buf); - ret[0].ival = 0; + ret[0].u.string.sval = dupstr(buf); ret[1].name = "Height"; ret[1].type = C_STRING; sprintf(buf, "%d", params->height); - ret[1].sval = dupstr(buf); - ret[1].ival = 0; + ret[1].u.string.sval = dupstr(buf); ret[2].name = "Walls wrap around"; ret[2].type = C_BOOLEAN; - ret[2].sval = NULL; - ret[2].ival = params->wrapping; + ret[2].u.boolean.bval = params->wrapping; ret[3].name = "Barrier probability"; ret[3].type = C_STRING; ftoa(buf, params->barrier_probability); - ret[3].sval = dupstr(buf); - ret[3].ival = 0; + ret[3].u.string.sval = dupstr(buf); ret[4].name = "Number of shuffling moves"; ret[4].type = C_STRING; sprintf(buf, "%d", params->movetarget); - ret[4].sval = dupstr(buf); - ret[4].ival = 0; + ret[4].u.string.sval = dupstr(buf); ret[5].name = NULL; ret[5].type = C_END; - ret[5].sval = NULL; - ret[5].ival = 0; return ret; } @@ -303,16 +296,16 @@ static game_params *custom_params(const config_item *cfg) { game_params *ret = snew(game_params); - ret->width = atoi(cfg[0].sval); - ret->height = atoi(cfg[1].sval); - ret->wrapping = cfg[2].ival; - ret->barrier_probability = (float)atof(cfg[3].sval); - ret->movetarget = atoi(cfg[4].sval); + ret->width = atoi(cfg[0].u.string.sval); + ret->height = atoi(cfg[1].u.string.sval); + ret->wrapping = cfg[2].u.boolean.bval; + ret->barrier_probability = (float)atof(cfg[3].u.string.sval); + ret->movetarget = atoi(cfg[4].u.string.sval); 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"; @@ -701,7 +694,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; @@ -891,7 +884,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"; @@ -1084,7 +1077,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, } ui->cur_visible = 1; - return ""; + return UI_UPDATE; } if (button == LEFT_BUTTON || button == RIGHT_BUTTON) { @@ -1098,7 +1091,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, } else { /* 'click' when cursor is invisible just makes cursor visible. */ ui->cur_visible = 1; - return ""; + return UI_UPDATE; } } else return NULL; diff --git a/apps/plugins/puzzles/src/nullfe.c b/apps/plugins/puzzles/src/nullfe.c index ad381a135b..14b6e096c0 100644 --- a/apps/plugins/puzzles/src/nullfe.c +++ b/apps/plugins/puzzles/src/nullfe.c @@ -10,7 +10,7 @@ void frontend_default_colour(frontend *fe, float *output) {} void draw_text(drawing *dr, int x, int y, int fonttype, int fontsize, - int align, int colour, char *text) {} + int align, int colour, const char *text) {} void draw_rect(drawing *dr, int x, int y, int w, int h, int colour) {} void draw_line(drawing *dr, int x1, int y1, int x2, int y2, int colour) {} void draw_thick_line(drawing *dr, float thickness, @@ -41,15 +41,16 @@ int print_rgb_hatched_colour(drawing *dr, float r, float g, float b, int hatch) { return 0; } void print_line_width(drawing *dr, int width) {} void print_line_dotted(drawing *dr, int dotted) {} -void midend_supersede_game_desc(midend *me, char *desc, char *privdesc) {} -void status_bar(drawing *dr, char *text) {} +void midend_supersede_game_desc(midend *me, const char *desc, + const char *privdesc) {} +void status_bar(drawing *dr, const char *text) {} struct preset_menu *preset_menu_new(void) {return NULL;} struct preset_menu *preset_menu_add_submenu(struct preset_menu *parent, char *title) {return NULL;} void preset_menu_add_preset(struct preset_menu *parent, char *title, game_params *params) {} -void fatal(char *fmt, ...) +void fatal(const char *fmt, ...) { va_list ap; @@ -64,7 +65,7 @@ void fatal(char *fmt, ...) } #ifdef DEBUGGING -void debug_printf(char *fmt, ...) +void debug_printf(const char *fmt, ...) { va_list ap; va_start(ap, fmt); diff --git a/apps/plugins/puzzles/src/nullgame.c b/apps/plugins/puzzles/src/nullgame.c index 183b1e39c2..bc19c1e6f0 100644 --- a/apps/plugins/puzzles/src/nullgame.c +++ b/apps/plugins/puzzles/src/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/apps/plugins/puzzles/src/osx.m b/apps/plugins/puzzles/src/osx.m index be29819b62..daa4af1f09 100644 --- a/apps/plugins/puzzles/src/osx.m +++ b/apps/plugins/puzzles/src/osx.m @@ -111,7 +111,7 @@ NSApplication *app; * clearly defined subsystem. */ -void fatal(char *fmt, ...) +void fatal(const char *fmt, ...) { va_list ap; char errorbuf[2048]; @@ -152,7 +152,7 @@ void get_random_seed(void **randseed, int *randseedsize) *randseedsize = sizeof(time_t); } -static void savefile_write(void *wctx, void *buf, int len) +static void savefile_write(void *wctx, const void *buf, int len) { FILE *fp = (FILE *)wctx; fwrite(buf, 1, len, fp); @@ -275,7 +275,7 @@ id initnewitem(NSMenuItem *item, NSMenu *parent, const char *title, return item; } -NSMenuItem *newitem(NSMenu *parent, char *title, char *key, +NSMenuItem *newitem(NSMenu *parent, const char *title, const char *key, id target, SEL action) { return initnewitem([NSMenuItem allocWithZone:[NSMenu menuZone]], @@ -437,7 +437,7 @@ struct frontend { - (void)keyDown:(NSEvent *)ev; - (void)activateTimer; - (void)deactivateTimer; -- (void)setStatusLine:(char *)text; +- (void)setStatusLine:(const char *)text; - (void)resizeForNewGameParams; - (void)updateTypeMenuTick; @end @@ -726,7 +726,7 @@ struct frontend { last_time = now; } -- (void)showError:(char *)message +- (void)showError:(const char *)message { NSAlert *alert; @@ -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); @@ -1103,7 +1103,8 @@ struct frontend { [tf setEditable:YES]; [tf setSelectable:YES]; [tf setBordered:YES]; - [[tf cell] setTitle:[NSString stringWithUTF8String:i->sval]]; + [[tf cell] setTitle:[NSString + stringWithUTF8String:i->u.string.sval]]; [tf sizeToFit]; rect = [tf frame]; /* @@ -1132,7 +1133,7 @@ struct frontend { [b setButtonType:NSSwitchButton]; [b setTitle:[NSString stringWithUTF8String:i->name]]; [b sizeToFit]; - [b setState:(i->ival ? NSOnState : NSOffState)]; + [b setState:(i->u.boolean.bval ? NSOnState : NSOffState)]; rect = [b frame]; if (totalw < rect.size.width + 1) totalw = rect.size.width + 1; if (thish < rect.size.height + 1) thish = rect.size.height + 1; @@ -1161,12 +1162,14 @@ struct frontend { pb = [[NSPopUpButton alloc] initWithFrame:tmprect pullsDown:NO]; [pb setBezelStyle:NSRoundedBezelStyle]; { - char c, *p; + char c; + const char *p; - p = i->sval; + p = i->u.choices.choicenames; c = *p++; while (*p) { - char *q, *copy; + const char *q; + char *copy; q = p; while (*p && *p != c) p++; @@ -1180,7 +1183,7 @@ struct frontend { if (*p) p++; } } - [pb selectItemAtIndex:i->ival]; + [pb selectItemAtIndex:i->u.choices.selected]; [pb sizeToFit]; rect = [pb frame]; @@ -1297,23 +1300,24 @@ struct frontend { if (update) { int k; config_item *i; - char *error; + const char *error; k = 0; for (i = cfg; i->type != C_END; i++) { switch (i->type) { case C_STRING: - sfree(i->sval); - i->sval = dupstr([[[(id)cfg_controls[k+1] cell] + sfree(i->u.string.sval); + i->u.string.sval = dupstr([[[(id)cfg_controls[k+1] cell] title] UTF8String]); k += 2; break; case C_BOOLEAN: - i->ival = [(id)cfg_controls[k] state] == NSOnState; + i->u.boolean.bval = [(id)cfg_controls[k] state] == NSOnState; k++; break; case C_CHOICES: - i->ival = [(id)cfg_controls[k+1] indexOfSelectedItem]; + i->u.choices.selected = + [(id)cfg_controls[k+1] indexOfSelectedItem]; k += 2; break; } @@ -1344,7 +1348,7 @@ struct frontend { [self sheetEndWithStatus:NO]; } -- (void)setStatusLine:(char *)text +- (void)setStatusLine:(const char *)text { [[status cell] setTitle:[NSString stringWithUTF8String:text]]; } @@ -1457,7 +1461,8 @@ static void osx_draw_rect(void *handle, int x, int y, int w, int h, int colour) NSRectFill(r); } static void osx_draw_text(void *handle, int x, int y, int fonttype, - int fontsize, int align, int colour, char *text) + int fontsize, int align, int colour, + const char *text) { frontend *fe = (frontend *)handle; NSString *string = [NSString stringWithUTF8String:text]; @@ -1608,7 +1613,7 @@ static void osx_end_draw(void *handle) frontend *fe = (frontend *)handle; [fe->image unlockFocus]; } -static void osx_status_bar(void *handle, char *text) +static void osx_status_bar(void *handle, const char *text) { frontend *fe = (frontend *)handle; [fe->window setStatusLine:text]; diff --git a/apps/plugins/puzzles/src/palisade.c b/apps/plugins/puzzles/src/palisade.c index b9d578d0f7..5227a1d56c 100644 --- a/apps/plugins/puzzles/src/palisade.c +++ b/apps/plugins/puzzles/src/palisade.c @@ -119,10 +119,20 @@ static config_item *game_configure(const game_params *params) { config_item *ret = snewn(4, config_item); - CONFIG(0, "Width", C_STRING, 0, string(20, "%d", params->w)); - CONFIG(1, "Height", C_STRING, 0, string(20, "%d", params->h)); - CONFIG(2, "Region size", C_STRING, 0, string(20, "%d", params->k)); - CONFIG(3, NULL, C_END, 0, NULL); + ret[0].name = "Width"; + ret[0].type = C_STRING; + ret[0].u.string.sval = string(20, "%d", params->w); + + ret[1].name = "Height"; + ret[1].type = C_STRING; + ret[1].u.string.sval = string(20, "%d", params->h); + + ret[2].name = "Region size"; + ret[2].type = C_STRING; + ret[2].u.string.sval = string(20, "%d", params->k); + + ret[3].name = NULL; + ret[3].type = C_END; return ret; } @@ -131,9 +141,9 @@ static game_params *custom_params(const config_item *cfg) { game_params *params = snew(game_params); - params->w = atoi(cfg[0].sval); - params->h = atoi(cfg[1].sval); - params->k = atoi(cfg[2].sval); + params->w = atoi(cfg[0].u.string.sval); + params->h = atoi(cfg[1].u.string.sval); + params->k = atoi(cfg[2].u.string.sval); return params; } @@ -145,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; @@ -691,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; @@ -772,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; @@ -986,7 +996,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, ui->x, ui->y, flag, x, y, newflag); } else { move_cursor(button, &ui->x, &ui->y, w, h, FALSE); - return ""; + return UI_UPDATE; } } diff --git a/apps/plugins/puzzles/src/pattern.c b/apps/plugins/puzzles/src/pattern.c index 270b558bda..e067f3ab0d 100644 --- a/apps/plugins/puzzles/src/pattern.c +++ b/apps/plugins/puzzles/src/pattern.c @@ -148,19 +148,15 @@ static config_item *game_configure(const game_params *params) ret[0].name = "Width"; ret[0].type = C_STRING; sprintf(buf, "%d", params->w); - ret[0].sval = dupstr(buf); - ret[0].ival = 0; + ret[0].u.string.sval = dupstr(buf); ret[1].name = "Height"; ret[1].type = C_STRING; sprintf(buf, "%d", params->h); - ret[1].sval = dupstr(buf); - ret[1].ival = 0; + ret[1].u.string.sval = dupstr(buf); ret[2].name = NULL; ret[2].type = C_END; - ret[2].sval = NULL; - ret[2].ival = 0; return ret; } @@ -169,13 +165,13 @@ static game_params *custom_params(const config_item *cfg) { game_params *ret = snew(game_params); - ret->w = atoi(cfg[0].sval); - ret->h = atoi(cfg[1].sval); + ret->w = atoi(cfg[0].u.string.sval); + ret->h = atoi(cfg[1].u.string.sval); 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"; @@ -891,7 +887,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; @@ -1051,7 +1047,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; @@ -1287,7 +1283,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, ui->drag_start_y = ui->drag_end_y = y; ui->cur_visible = 0; - return ""; /* UI activity occurred */ + return UI_UPDATE; } if (ui->dragging && button == ui->drag) { @@ -1316,7 +1312,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, ui->drag_end_x = x; ui->drag_end_y = y; - return ""; /* UI activity occurred */ + return UI_UPDATE; } if (ui->dragging && button == ui->release) { @@ -1344,7 +1340,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, x1, y1, x2-x1+1, y2-y1+1); return dupstr(buf); } else - return ""; /* UI activity occurred */ + return UI_UPDATE; } if (IS_CURSOR_MOVE(button)) { @@ -1352,12 +1348,12 @@ static char *interpret_move(const game_state *state, game_ui *ui, char buf[80]; move_cursor(button, &ui->cur_x, &ui->cur_y, state->common->w, state->common->h, 0); ui->cur_visible = 1; - if (!control && !shift) return ""; + if (!control && !shift) return UI_UPDATE; newstate = control ? shift ? GRID_UNKNOWN : GRID_FULL : GRID_EMPTY; if (state->grid[y * state->common->w + x] == newstate && state->grid[ui->cur_y * state->common->w + ui->cur_x] == newstate) - return ""; + return UI_UPDATE; sprintf(buf, "%c%d,%d,%d,%d", control ? shift ? 'U' : 'F' : 'E', min(x, ui->cur_x), min(y, ui->cur_y), @@ -1372,7 +1368,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, if (!ui->cur_visible) { ui->cur_visible = 1; - return ""; + return UI_UPDATE; } if (button == CURSOR_SELECT2) @@ -2027,7 +2023,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/apps/plugins/puzzles/src/pearl.c b/apps/plugins/puzzles/src/pearl.c index c6c305f3f2..4f3be50275 100644 --- a/apps/plugins/puzzles/src/pearl.c +++ b/apps/plugins/puzzles/src/pearl.c @@ -234,29 +234,24 @@ static config_item *game_configure(const game_params *params) ret[0].name = "Width"; ret[0].type = C_STRING; sprintf(buf, "%d", params->w); - ret[0].sval = dupstr(buf); - ret[0].ival = 0; + ret[0].u.string.sval = dupstr(buf); ret[1].name = "Height"; ret[1].type = C_STRING; sprintf(buf, "%d", params->h); - ret[1].sval = dupstr(buf); - ret[1].ival = 0; + ret[1].u.string.sval = dupstr(buf); ret[2].name = "Difficulty"; ret[2].type = C_CHOICES; - ret[2].sval = DIFFCONFIG; - ret[2].ival = params->difficulty; + ret[2].u.choices.choicenames = DIFFCONFIG; + ret[2].u.choices.selected = params->difficulty; ret[3].name = "Allow unsoluble"; ret[3].type = C_BOOLEAN; - ret[3].sval = NULL; - ret[3].ival = params->nosolve; + ret[3].u.boolean.bval = params->nosolve; ret[4].name = NULL; ret[4].type = C_END; - ret[4].sval = NULL; - ret[4].ival = 0; return ret; } @@ -265,15 +260,15 @@ static game_params *custom_params(const config_item *cfg) { game_params *ret = snew(game_params); - ret->w = atoi(cfg[0].sval); - ret->h = atoi(cfg[1].sval); - ret->difficulty = cfg[2].ival; - ret->nosolve = cfg[3].ival; + ret->w = atoi(cfg[0].u.string.sval); + ret->h = atoi(cfg[1].u.string.sval); + ret->difficulty = cfg[2].u.choices.selected; + ret->nosolve = cfg[3].u.boolean.bval; 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"; @@ -1392,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; @@ -1726,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; @@ -2022,11 +2017,11 @@ static char *mark_in_direction(const game_state *state, int x, int y, int dir, char ch = primary ? 'F' : 'M', *other; - if (!INGRID(state, x, y) || !INGRID(state, x2, y2)) return ""; + if (!INGRID(state, x, y) || !INGRID(state, x2, y2)) return UI_UPDATE; /* disallow laying a mark over a line, or vice versa. */ other = primary ? state->marks : state->lines; - if (other[y*w+x] & dir || other[y2*w+x2] & dir2) return ""; + if (other[y*w+x] & dir || other[y2*w+x2] & dir2) return UI_UPDATE; sprintf(buf, "%c%d,%d,%d;%c%d,%d,%d", ch, dir, x, y, ch, dir2, x2, y2); return dupstr(buf); @@ -2060,12 +2055,12 @@ static char *interpret_move(const game_state *state, game_ui *ui, ui->dragcoords[0] = gy * w + gx; ui->ndragcoords = 0; /* will be 1 once drag is confirmed */ - return ""; + return UI_UPDATE; } if (button == LEFT_DRAG && ui->ndragcoords >= 0) { update_ui_drag(state, ui, gx, gy); - return ""; + return UI_UPDATE; } if (IS_MOUSE_RELEASE(button)) release = TRUE; @@ -2087,30 +2082,30 @@ static char *interpret_move(const game_state *state, game_ui *ui, if (ui->ndragcoords >= 0) update_ui_drag(state, ui, ui->curx, ui->cury); } - return ""; + return UI_UPDATE; } if (IS_CURSOR_SELECT(button)) { if (!ui->cursor_active) { ui->cursor_active = TRUE; - return ""; + return UI_UPDATE; } else if (button == CURSOR_SELECT) { if (ui->ndragcoords == -1) { ui->ndragcoords = 0; ui->dragcoords[0] = ui->cury * w + ui->curx; ui->clickx = CENTERED_COORD(ui->curx); ui->clicky = CENTERED_COORD(ui->cury); - return ""; + return UI_UPDATE; } else release = TRUE; } else if (button == CURSOR_SELECT2 && ui->ndragcoords >= 0) { ui->ndragcoords = -1; - return ""; + return UI_UPDATE; } } if (button == 27 || button == '\b') { ui->ndragcoords = -1; - return ""; + return UI_UPDATE; } if (release) { @@ -2142,7 +2137,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, ui->ndragcoords = -1; - return buf ? buf : ""; + return buf ? buf : UI_UPDATE; } else if (ui->ndragcoords == 0) { /* Click (or tiny drag). Work out which edge we were * closest to. */ @@ -2163,12 +2158,12 @@ static char *interpret_move(const game_state *state, game_ui *ui, cx = CENTERED_COORD(gx); cy = CENTERED_COORD(gy); - if (!INGRID(state, gx, gy)) return ""; + if (!INGRID(state, gx, gy)) return UI_UPDATE; if (max(abs(x-cx),abs(y-cy)) < TILE_SIZE/4) { /* TODO closer to centre of grid: process as a cell click not an edge click. */ - return ""; + return UI_UPDATE; } else { int direction; if (abs(x-cx) < abs(y-cy)) { @@ -2712,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/apps/plugins/puzzles/src/pegs.c b/apps/plugins/puzzles/src/pegs.c index 8286851954..565ba9417f 100644 --- a/apps/plugins/puzzles/src/pegs.c +++ b/apps/plugins/puzzles/src/pegs.c @@ -149,24 +149,20 @@ static config_item *game_configure(const game_params *params) ret[0].name = "Width"; ret[0].type = C_STRING; sprintf(buf, "%d", params->w); - ret[0].sval = dupstr(buf); - ret[0].ival = 0; + ret[0].u.string.sval = dupstr(buf); ret[1].name = "Height"; ret[1].type = C_STRING; sprintf(buf, "%d", params->h); - ret[1].sval = dupstr(buf); - ret[1].ival = 0; + ret[1].u.string.sval = dupstr(buf); ret[2].name = "Board type"; ret[2].type = C_CHOICES; - ret[2].sval = TYPECONFIG; - ret[2].ival = params->type; + ret[2].u.choices.choicenames = TYPECONFIG; + ret[2].u.choices.selected = params->type; ret[3].name = NULL; ret[3].type = C_END; - ret[3].sval = NULL; - ret[3].ival = 0; return ret; } @@ -175,14 +171,14 @@ static game_params *custom_params(const config_item *cfg) { game_params *ret = snew(game_params); - ret->w = atoi(cfg[0].sval); - ret->h = atoi(cfg[1].sval); - ret->type = cfg[2].ival; + ret->w = atoi(cfg[0].u.string.sval); + ret->h = atoi(cfg[1].u.string.sval); + ret->type = cfg[2].u.choices.selected; 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"; @@ -660,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; @@ -711,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; } @@ -848,7 +844,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, ui->dx = x; ui->dy = y; ui->cur_visible = ui->cur_jumping = 0; - return ""; /* ui modified */ + return UI_UPDATE; } } else if (button == LEFT_DRAG && ui->dragging) { /* @@ -856,7 +852,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, */ ui->dx = x; ui->dy = y; - return ""; /* ui modified */ + return UI_UPDATE; } else if (button == LEFT_RELEASE && ui->dragging) { int tx, ty, dx, dy; @@ -868,18 +864,18 @@ static char *interpret_move(const game_state *state, game_ui *ui, tx = FROMCOORD(x); ty = FROMCOORD(y); if (tx < 0 || tx >= w || ty < 0 || ty >= h) - return ""; /* target out of range */ + return UI_UPDATE; /* target out of range */ dx = tx - ui->sx; dy = ty - ui->sy; if (max(abs(dx),abs(dy)) != 2 || min(abs(dx),abs(dy)) != 0) - return ""; /* move length was wrong */ + return UI_UPDATE; /* move length was wrong */ dx /= 2; dy /= 2; if (state->grid[ty*w+tx] != GRID_HOLE || state->grid[(ty-dy)*w+(tx-dx)] != GRID_PEG || state->grid[ui->sy*w+ui->sx] != GRID_PEG) - return ""; /* grid contents were invalid */ + return UI_UPDATE; /* grid contents were invalid */ /* * We have a valid move. Encode it simply as source and @@ -899,7 +895,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, ui->cur_x = cx; ui->cur_y = cy; } - return ""; + return UI_UPDATE; } else { int dx, dy, mx, my, jx, jy; @@ -922,21 +918,21 @@ static char *interpret_move(const game_state *state, game_ui *ui, ui->cur_x = jx; ui->cur_y = jy; return dupstr(buf); } - return ""; + return UI_UPDATE; } } else if (IS_CURSOR_SELECT(button)) { if (!ui->cur_visible) { ui->cur_visible = 1; - return ""; + return UI_UPDATE; } if (ui->cur_jumping) { ui->cur_jumping = 0; - return ""; + return UI_UPDATE; } if (state->grid[ui->cur_y*w+ui->cur_x] == GRID_PEG) { /* cursor is on peg: next arrow-move wil jump. */ ui->cur_jumping = 1; - return ""; + return UI_UPDATE; } return NULL; } diff --git a/apps/plugins/puzzles/src/ps.c b/apps/plugins/puzzles/src/ps.c index 2394cc5e8e..ac021aa80a 100644 --- a/apps/plugins/puzzles/src/ps.c +++ b/apps/plugins/puzzles/src/ps.c @@ -21,7 +21,7 @@ struct psdata { drawing *drawing; }; -static void ps_printf(psdata *ps, char *fmt, ...) +static void ps_printf(psdata *ps, const char *fmt, ...) { va_list ap; @@ -73,7 +73,7 @@ static void ps_fill(psdata *ps, int colour) } } -static void ps_setcolour_internal(psdata *ps, int colour, char *suffix) +static void ps_setcolour_internal(psdata *ps, int colour, const char *suffix) { int hatch; float r, g, b; @@ -102,7 +102,8 @@ static void ps_stroke(psdata *ps, int colour) } static void ps_draw_text(void *handle, int x, int y, int fonttype, - int fontsize, int align, int colour, char *text) + int fontsize, int align, int colour, + const char *text) { psdata *ps = (psdata *)handle; diff --git a/apps/plugins/puzzles/src/puzzles.h b/apps/plugins/puzzles/src/puzzles.h index 73b31ea7f9..47f4b7edd5 100644 --- a/apps/plugins/puzzles/src/puzzles.h +++ b/apps/plugins/puzzles/src/puzzles.h @@ -137,30 +137,36 @@ typedef struct psdata psdata; */ enum { C_STRING, C_CHOICES, C_BOOLEAN, C_END }; struct config_item { - /* - * `name' is never dynamically allocated. - */ - char *name; - /* - * `type' contains one of the above values. - */ + /* Not dynamically allocated */ + const char *name; + /* Value from the above C_* enum */ int type; - /* - * For C_STRING, `sval' is always dynamically allocated and - * non-NULL. For C_BOOLEAN and C_END, `sval' is always NULL. - * For C_CHOICES, `sval' is non-NULL, _not_ dynamically - * allocated, and contains a set of option strings separated by - * a delimiter. The delimeter is also the first character in - * the string, so for example ":Foo:Bar:Baz" gives three - * options `Foo', `Bar' and `Baz'. - */ - char *sval; - /* - * For C_BOOLEAN, this is TRUE or FALSE. For C_CHOICES, it - * indicates the chosen index from the `sval' list. In the - * above example, 0==Foo, 1==Bar and 2==Baz. - */ - int ival; + union { + struct { /* if type == C_STRING */ + /* Always dynamically allocated and non-NULL */ + char *sval; + } string; + struct { /* if type == C_CHOICES */ + /* + * choicenames is non-NULL, not dynamically allocated, and + * contains a set of option strings separated by a + * delimiter. The delimiter is also the first character in + * the string, so for example ":Foo:Bar:Baz" gives three + * options `Foo', `Bar' and `Baz'. + */ + const char *choicenames; + /* + * Indicates the chosen index from the options in + * choicenames. In the above example, 0==Foo, 1==Bar and + * 2==Baz. + */ + int selected; + } choices; + struct { + /* just TRUE or FALSE */ + int bval; + } boolean; + } u; }; /* @@ -218,12 +224,12 @@ game_params *preset_menu_lookup_by_id(struct preset_menu *menu, int id); /* We can't use #ifdef DEBUG, because Cygwin defines it by default. */ #ifdef DEBUGGING #define debug(x) (debug_printf x) -void debug_printf(char *fmt, ...); +void debug_printf(const char *fmt, ...); #else #define debug(x) #endif -void fatal(char *fmt, ...); +void fatal(const char *fmt, ...); void frontend_default_colour(frontend *fe, float *output); void deactivate_timer(frontend *fe); void activate_timer(frontend *fe); @@ -235,7 +241,7 @@ void get_random_seed(void **randseed, int *randseedsize); drawing *drawing_new(const drawing_api *api, midend *me, void *handle); void drawing_free(drawing *dr); void draw_text(drawing *dr, int x, int y, int fonttype, int fontsize, - int align, int colour, char *text); + int align, int colour, const char *text); void draw_rect(drawing *dr, int x, int y, int w, int h, int colour); void draw_line(drawing *dr, int x1, int y1, int x2, int y2, int colour); void draw_polygon(drawing *dr, int *coords, int npoints, @@ -250,7 +256,7 @@ void start_draw(drawing *dr); void draw_update(drawing *dr, int x, int y, int w, int h); void end_draw(drawing *dr); char *text_fallback(drawing *dr, const char *const *strings, int nstrings); -void status_bar(drawing *dr, char *text); +void status_bar(drawing *dr, const char *text); blitter *blitter_new(drawing *dr, int w, int h); void blitter_free(drawing *dr, blitter *bl); /* save puts the portion of the current display with top-left corner @@ -305,29 +311,31 @@ 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, const 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); -void midend_supersede_game_desc(midend *me, char *desc, char *privdesc); -char *midend_rewrite_statusbar(midend *me, char *text); +void midend_supersede_game_desc(midend *me, const char *desc, + const char *privdesc); +char *midend_rewrite_statusbar(midend *me, const char *text); void midend_serialise(midend *me, - void (*write)(void *ctx, void *buf, int len), + void (*write)(void *ctx, const 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); /* @@ -385,7 +393,7 @@ void pos2c(int w, int h, int pos, int *cx, int *cy); * by one pixel; useful for highlighting. Outline is omitted if -1. */ void draw_text_outline(drawing *dr, int x, int y, int fonttype, int fontsize, int align, - int text_colour, int outline_colour, char *text); + int text_colour, int outline_colour, const char *text); /* Copies text left-justified with spaces. Length of string must be * less than buffer size. */ @@ -587,17 +595,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); @@ -642,7 +650,7 @@ struct game { */ struct drawing_api { void (*draw_text)(void *handle, int x, int y, int fonttype, int fontsize, - int align, int colour, char *text); + int align, int colour, const char *text); void (*draw_rect)(void *handle, int x, int y, int w, int h, int colour); void (*draw_line)(void *handle, int x1, int y1, int x2, int y2, int colour); @@ -655,7 +663,7 @@ struct drawing_api { void (*unclip)(void *handle); void (*start_draw)(void *handle); void (*end_draw)(void *handle); - void (*status_bar)(void *handle, char *text); + void (*status_bar)(void *handle, const char *text); blitter *(*blitter_new)(void *handle, int w, int h); void (*blitter_free)(void *handle, blitter *bl); void (*blitter_save)(void *handle, blitter *bl, int x, int y); @@ -688,6 +696,14 @@ extern const int gamecount; extern const game thegame; #endif +/* + * Special string value to return from interpret_move in the case + * where the game UI has been updated but no actual move is being + * appended to the undo chain. Must be declared as a non-const char, + * but should never actually be modified by anyone. + */ +extern char UI_UPDATE[]; + /* A little bit of help to lazy developers */ #define DEFAULT_STATUSBAR_TEXT "Use status_bar() to fill this in." diff --git a/apps/plugins/puzzles/src/range.c b/apps/plugins/puzzles/src/range.c index 4dd39b97cd..41c6a352d3 100644 --- a/apps/plugins/puzzles/src/range.c +++ b/apps/plugins/puzzles/src/range.c @@ -66,7 +66,7 @@ #define setmember(obj, field) ( (obj) . field = field ) -static char *nfmtstr(int n, char *fmt, ...) { +static char *nfmtstr(int n, const char *fmt, ...) { va_list va; char *ret = snewn(n+1, char); va_start(va, fmt); @@ -170,18 +170,14 @@ static config_item *game_configure(const game_params *params) ret[0].name = "Width"; ret[0].type = C_STRING; - ret[0].sval = nfmtstr(10, "%d", params->w); - ret[0].ival = 0; + ret[0].u.string.sval = nfmtstr(10, "%d", params->w); ret[1].name = "Height"; ret[1].type = C_STRING; - ret[1].sval = nfmtstr(10, "%d", params->h); - ret[1].ival = 0; + ret[1].u.string.sval = nfmtstr(10, "%d", params->h); ret[2].name = NULL; ret[2].type = C_END; - ret[2].sval = NULL; - ret[2].ival = 0; return ret; } @@ -189,8 +185,8 @@ static config_item *game_configure(const game_params *params) static game_params *custom_params(const config_item *configuration) { game_params *ret = snew(game_params); - ret->w = atoi(configuration[0].sval); - ret->h = atoi(configuration[1].sval); + ret->w = atoi(configuration[0].u.string.sval); + ret->h = atoi(configuration[1].u.string.sval); return ret; } @@ -312,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); @@ -910,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"; @@ -1077,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; @@ -1360,14 +1356,14 @@ static char *interpret_move(const game_state *state, game_ui *ui, else if (do_post) return nfmtstr(40, "W,%d,%d", ui->r, ui->c); else - return ""; + return UI_UPDATE; } else if (!out_of_bounds(ui->r + dr[i], ui->c + dc[i], w, h)) { ui->r += dr[i]; ui->c += dc[i]; } } else ui->cursor_show = TRUE; - return ""; + return UI_UPDATE; } if (action == hint) { diff --git a/apps/plugins/puzzles/src/rect.c b/apps/plugins/puzzles/src/rect.c index 247138cedb..c9923ad196 100644 --- a/apps/plugins/puzzles/src/rect.c +++ b/apps/plugins/puzzles/src/rect.c @@ -183,30 +183,24 @@ static config_item *game_configure(const game_params *params) ret[0].name = "Width"; ret[0].type = C_STRING; sprintf(buf, "%d", params->w); - ret[0].sval = dupstr(buf); - ret[0].ival = 0; + ret[0].u.string.sval = dupstr(buf); ret[1].name = "Height"; ret[1].type = C_STRING; sprintf(buf, "%d", params->h); - ret[1].sval = dupstr(buf); - ret[1].ival = 0; + ret[1].u.string.sval = dupstr(buf); ret[2].name = "Expansion factor"; ret[2].type = C_STRING; ftoa(buf, params->expandfactor); - ret[2].sval = dupstr(buf); - ret[2].ival = 0; + ret[2].u.string.sval = dupstr(buf); ret[3].name = "Ensure unique solution"; ret[3].type = C_BOOLEAN; - ret[3].sval = NULL; - ret[3].ival = params->unique; + ret[3].u.boolean.bval = params->unique; ret[4].name = NULL; ret[4].type = C_END; - ret[4].sval = NULL; - ret[4].ival = 0; return ret; } @@ -215,15 +209,15 @@ static game_params *custom_params(const config_item *cfg) { game_params *ret = snew(game_params); - ret->w = atoi(cfg[0].sval); - ret->h = atoi(cfg[1].sval); - ret->expandfactor = (float)atof(cfg[2].sval); - ret->unique = cfg[3].ival; + ret->w = atoi(cfg[0].u.string.sval); + ret->h = atoi(cfg[1].u.string.sval); + ret->expandfactor = (float)atof(cfg[2].u.string.sval); + ret->unique = cfg[3].u.boolean.bval; 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"; @@ -1782,7 +1776,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; @@ -1983,7 +1977,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; @@ -2410,7 +2404,7 @@ static char *interpret_move(const game_state *from, game_ui *ui, move_cursor(button, &ui->cur_x, &ui->cur_y, from->w, from->h, 0); ui->cur_visible = TRUE; active = TRUE; - if (!ui->cur_dragging) return ""; + if (!ui->cur_dragging) return UI_UPDATE; coord_round((float)ui->cur_x + 0.5F, (float)ui->cur_y + 0.5F, &xc, &yc); } else if (IS_CURSOR_SELECT(button)) { if (ui->drag_start_x >= 0 && !ui->cur_dragging) { @@ -2423,7 +2417,7 @@ static char *interpret_move(const game_state *from, game_ui *ui, if (!ui->cur_visible) { assert(!ui->cur_dragging); ui->cur_visible = TRUE; - return ""; + return UI_UPDATE; } coord_round((float)ui->cur_x + 0.5F, (float)ui->cur_y + 0.5F, &xc, &yc); erasing = (button == CURSOR_SELECT2); @@ -2444,7 +2438,7 @@ static char *interpret_move(const game_state *from, game_ui *ui, reset_ui(ui); /* cancel keyboard dragging */ ui->cur_dragging = FALSE; } - return ""; + return UI_UPDATE; } else if (button != LEFT_DRAG && button != RIGHT_DRAG) { return NULL; } @@ -2528,7 +2522,7 @@ static char *interpret_move(const game_state *from, game_ui *ui, if (ret) return ret; /* a move has been made */ else if (active) - return ""; /* UI activity has occurred */ + return UI_UPDATE; else return NULL; } diff --git a/apps/plugins/puzzles/src/samegame.c b/apps/plugins/puzzles/src/samegame.c index 88edad32b1..d7d06764bf 100644 --- a/apps/plugins/puzzles/src/samegame.c +++ b/apps/plugins/puzzles/src/samegame.c @@ -241,35 +241,29 @@ static config_item *game_configure(const game_params *params) ret[0].name = "Width"; ret[0].type = C_STRING; sprintf(buf, "%d", params->w); - ret[0].sval = dupstr(buf); - ret[0].ival = 0; + ret[0].u.string.sval = dupstr(buf); ret[1].name = "Height"; ret[1].type = C_STRING; sprintf(buf, "%d", params->h); - ret[1].sval = dupstr(buf); - ret[1].ival = 0; + ret[1].u.string.sval = dupstr(buf); ret[2].name = "No. of colours"; ret[2].type = C_STRING; sprintf(buf, "%d", params->ncols); - ret[2].sval = dupstr(buf); - ret[2].ival = 0; + ret[2].u.string.sval = dupstr(buf); ret[3].name = "Scoring system"; ret[3].type = C_CHOICES; - ret[3].sval = ":(n-1)^2:(n-2)^2"; - ret[3].ival = params->scoresub-1; + ret[3].u.choices.choicenames = ":(n-1)^2:(n-2)^2"; + ret[3].u.choices.selected = params->scoresub-1; ret[4].name = "Ensure solubility"; ret[4].type = C_BOOLEAN; - ret[4].sval = NULL; - ret[4].ival = params->soluble; + ret[4].u.boolean.bval = params->soluble; ret[5].name = NULL; ret[5].type = C_END; - ret[5].sval = NULL; - ret[5].ival = 0; return ret; } @@ -278,16 +272,16 @@ static game_params *custom_params(const config_item *cfg) { game_params *ret = snew(game_params); - ret->w = atoi(cfg[0].sval); - ret->h = atoi(cfg[1].sval); - ret->ncols = atoi(cfg[2].sval); - ret->scoresub = cfg[3].ival + 1; - ret->soluble = cfg[4].ival; + ret->w = atoi(cfg[0].u.string.sval); + ret->h = atoi(cfg[1].u.string.sval); + ret->ncols = atoi(cfg[2].u.string.sval); + ret->scoresub = cfg[3].u.choices.selected + 1; + ret->soluble = cfg[4].u.boolean.bval; 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"; @@ -948,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; @@ -1018,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; } @@ -1114,7 +1108,8 @@ static void game_changed_state(game_ui *ui, const game_state *oldstate, static char *sel_movedesc(game_ui *ui, const game_state *state) { int i; - char *ret, *sep, buf[80]; + char *ret, buf[80]; + const char *sep; int retlen, retsize; retsize = 256; @@ -1273,7 +1268,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, int x, int y, int button) { int tx, ty; - char *ret = ""; + char *ret = UI_UPDATE; ui->displaysel = 0; diff --git a/apps/plugins/puzzles/src/signpost.c b/apps/plugins/puzzles/src/signpost.c index a61ec8b536..edcf63a823 100644 --- a/apps/plugins/puzzles/src/signpost.c +++ b/apps/plugins/puzzles/src/signpost.c @@ -387,24 +387,19 @@ static config_item *game_configure(const game_params *params) ret[0].name = "Width"; ret[0].type = C_STRING; sprintf(buf, "%d", params->w); - ret[0].sval = dupstr(buf); - ret[0].ival = 0; + ret[0].u.string.sval = dupstr(buf); ret[1].name = "Height"; ret[1].type = C_STRING; sprintf(buf, "%d", params->h); - ret[1].sval = dupstr(buf); - ret[1].ival = 0; + ret[1].u.string.sval = dupstr(buf); ret[2].name = "Start and end in corners"; ret[2].type = C_BOOLEAN; - ret[2].sval = NULL; - ret[2].ival = params->force_corner_start; + ret[2].u.boolean.bval = params->force_corner_start; ret[3].name = NULL; ret[3].type = C_END; - ret[3].sval = NULL; - ret[3].ival = 0; return ret; } @@ -413,14 +408,14 @@ static game_params *custom_params(const config_item *cfg) { game_params *ret = snew(game_params); - ret->w = atoi(cfg[0].sval); - ret->h = atoi(cfg[1].sval); - ret->force_corner_start = cfg[2].ival; + ret->w = atoi(cfg[0].u.string.sval); + ret->h = atoi(cfg[1].u.string.sval); + ret->force_corner_start = cfg[2].u.boolean.bval; 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"; @@ -502,10 +497,11 @@ static void free_game(game_state *state) } static void unpick_desc(const game_params *params, const char *desc, - game_state **sout, char **mout) + game_state **sout, const char **mout) { game_state *state = blank_game(params->w, params->h); - char *msg = NULL, c; + const char *msg = NULL; + char c; int num = 0, i = 0; while (*desc) { @@ -848,9 +844,9 @@ 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; + const char *ret = NULL; unpick_desc(params, desc, NULL, &ret); return ret; @@ -1342,7 +1338,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; @@ -1441,18 +1437,20 @@ static char *interpret_move(const game_state *state, game_ui *ui, ui->dx = COORD(ui->cx) + TILE_SIZE/2; ui->dy = COORD(ui->cy) + TILE_SIZE/2; } - return ""; + return UI_UPDATE; } else if (IS_CURSOR_SELECT(button)) { if (!ui->cshow) ui->cshow = 1; else if (ui->dragging) { ui->dragging = FALSE; - if (ui->sx == ui->cx && ui->sy == ui->cy) return ""; + if (ui->sx == ui->cx && ui->sy == ui->cy) return UI_UPDATE; if (ui->drag_is_from) { - if (!isvalidmove(state, 0, ui->sx, ui->sy, ui->cx, ui->cy)) return ""; + if (!isvalidmove(state, 0, ui->sx, ui->sy, ui->cx, ui->cy)) + return UI_UPDATE; sprintf(buf, "L%d,%d-%d,%d", ui->sx, ui->sy, ui->cx, ui->cy); } else { - if (!isvalidmove(state, 0, ui->cx, ui->cy, ui->sx, ui->sy)) return ""; + if (!isvalidmove(state, 0, ui->cx, ui->cy, ui->sx, ui->sy)) + return UI_UPDATE; sprintf(buf, "L%d,%d-%d,%d", ui->cx, ui->cy, ui->sx, ui->sy); } return dupstr(buf); @@ -1464,7 +1462,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, ui->dy = COORD(ui->cy) + TILE_SIZE/2; ui->drag_is_from = (button == CURSOR_SELECT) ? 1 : 0; } - return ""; + return UI_UPDATE; } if (IS_MOUSE_DOWN(button)) { if (ui->cshow) { @@ -1492,29 +1490,31 @@ static char *interpret_move(const game_state *state, game_ui *ui, ui->dx = mx; ui->dy = my; ui->cshow = 0; - return ""; + return UI_UPDATE; } else if (IS_MOUSE_DRAG(button) && ui->dragging) { ui->dx = mx; ui->dy = my; - return ""; + return UI_UPDATE; } else if (IS_MOUSE_RELEASE(button) && ui->dragging) { ui->dragging = FALSE; - if (ui->sx == x && ui->sy == y) return ""; /* single click */ + if (ui->sx == x && ui->sy == y) return UI_UPDATE; /* single click */ if (!INGRID(state, x, y)) { int si = ui->sy*w+ui->sx; if (state->prev[si] == -1 && state->next[si] == -1) - return ""; + return UI_UPDATE; sprintf(buf, "%c%d,%d", (int)(ui->drag_is_from ? 'C' : 'X'), ui->sx, ui->sy); return dupstr(buf); } if (ui->drag_is_from) { - if (!isvalidmove(state, 0, ui->sx, ui->sy, x, y)) return ""; + if (!isvalidmove(state, 0, ui->sx, ui->sy, x, y)) + return UI_UPDATE; sprintf(buf, "L%d,%d-%d,%d", ui->sx, ui->sy, x, y); } else { - if (!isvalidmove(state, 0, x, y, ui->sx, ui->sy)) return ""; + if (!isvalidmove(state, 0, x, y, ui->sx, ui->sy)) + return UI_UPDATE; sprintf(buf, "L%d,%d-%d,%d", x, y, ui->sx, ui->sy); } return dupstr(buf); @@ -1523,7 +1523,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, else if ((button == 'x' || button == 'X') && ui->cshow) { int si = ui->cy*w + ui->cx; if (state->prev[si] == -1 && state->next[si] == -1) - return ""; + return UI_UPDATE; sprintf(buf, "%c%d,%d", (int)((button == 'x') ? 'C' : 'X'), ui->cx, ui->cy); return dupstr(buf); @@ -1560,7 +1560,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; @@ -2330,7 +2330,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; @@ -2374,7 +2375,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/apps/plugins/puzzles/src/singles.c b/apps/plugins/puzzles/src/singles.c index 5fe054c663..5929d82932 100644 --- a/apps/plugins/puzzles/src/singles.c +++ b/apps/plugins/puzzles/src/singles.c @@ -222,24 +222,20 @@ static config_item *game_configure(const game_params *params) ret[0].name = "Width"; ret[0].type = C_STRING; sprintf(buf, "%d", params->w); - ret[0].sval = dupstr(buf); - ret[0].ival = 0; + ret[0].u.string.sval = dupstr(buf); ret[1].name = "Height"; ret[1].type = C_STRING; sprintf(buf, "%d", params->h); - ret[1].sval = dupstr(buf); - ret[1].ival = 0; + ret[1].u.string.sval = dupstr(buf); ret[2].name = "Difficulty"; ret[2].type = C_CHOICES; - ret[2].sval = DIFFCONFIG; - ret[2].ival = params->diff; + ret[2].u.choices.choicenames = DIFFCONFIG; + ret[2].u.choices.selected = params->diff; ret[3].name = NULL; ret[3].type = C_END; - ret[3].sval = NULL; - ret[3].ival = 0; return ret; } @@ -248,14 +244,14 @@ static game_params *custom_params(const config_item *cfg) { game_params *ret = snew(game_params); - ret->w = atoi(cfg[0].sval); - ret->h = atoi(cfg[1].sval); - ret->diff = cfg[2].ival; + ret->w = atoi(cfg[0].u.string.sval); + ret->h = atoi(cfg[1].u.string.sval); + ret->diff = cfg[2].u.choices.selected; 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"; @@ -334,10 +330,10 @@ static int c2n(char c) { } static void unpick_desc(const game_params *params, const char *desc, - game_state **sout, char **mout) + game_state **sout, const char **mout) { game_state *state = blank_game(params->w, params->h); - char *msg = NULL; + const char *msg = NULL; int num = 0, i = 0; if (strlen(desc) != state->n) { @@ -1185,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; @@ -1414,9 +1410,9 @@ 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; + const char *ret = NULL; unpick_desc(params, desc, NULL, &ret); return ret; @@ -1522,7 +1518,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, action = TOGGLE_CIRCLE; } } - if (action == UI) return ""; + if (action == UI) return UI_UPDATE; if (action == TOGGLE_BLACK || action == TOGGLE_CIRCLE) { i = y * state->w + x; @@ -1910,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/apps/plugins/puzzles/src/sixteen.c b/apps/plugins/puzzles/src/sixteen.c index aaf524a0d6..9fa7032f02 100644 --- a/apps/plugins/puzzles/src/sixteen.c +++ b/apps/plugins/puzzles/src/sixteen.c @@ -140,25 +140,20 @@ static config_item *game_configure(const game_params *params) ret[0].name = "Width"; ret[0].type = C_STRING; sprintf(buf, "%d", params->w); - ret[0].sval = dupstr(buf); - ret[0].ival = 0; + ret[0].u.string.sval = dupstr(buf); ret[1].name = "Height"; ret[1].type = C_STRING; sprintf(buf, "%d", params->h); - ret[1].sval = dupstr(buf); - ret[1].ival = 0; + ret[1].u.string.sval = dupstr(buf); ret[2].name = "Number of shuffling moves"; ret[2].type = C_STRING; sprintf(buf, "%d", params->movetarget); - ret[2].sval = dupstr(buf); - ret[2].ival = 0; + ret[2].u.string.sval = dupstr(buf); ret[3].name = NULL; ret[3].type = C_END; - ret[3].sval = NULL; - ret[3].ival = 0; return ret; } @@ -167,14 +162,14 @@ static game_params *custom_params(const config_item *cfg) { game_params *ret = snew(game_params); - ret->w = atoi(cfg[0].sval); - ret->h = atoi(cfg[1].sval); - ret->movetarget = atoi(cfg[2].sval); + ret->w = atoi(cfg[0].u.string.sval); + ret->h = atoi(cfg[1].u.string.sval); + ret->movetarget = atoi(cfg[2].u.string.sval); 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"; @@ -402,10 +397,9 @@ 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; + const char *p, *err; int i, area; int *used; @@ -510,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"); } @@ -619,7 +613,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, if (IS_CURSOR_MOVE(button) || pad) { if (!ui->cur_visible) { ui->cur_visible = 1; - return ""; + return UI_UPDATE; } if (control || shift || ui->cur_mode) { @@ -674,7 +668,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, } ui->cur_visible = 1; - return ""; + return UI_UPDATE; } } @@ -692,11 +686,11 @@ static char *interpret_move(const game_state *state, game_ui *ui, const enum cursor_mode m = (button == CURSOR_SELECT2 ? lock_position : lock_tile); ui->cur_mode = (ui->cur_mode == m ? unlocked : m); - return ""; + return UI_UPDATE; } } else { ui->cur_visible = 1; - return ""; + return UI_UPDATE; } } else { return NULL; @@ -711,7 +705,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, else if (cy == state->h && cx >= 0 && cx < state->w) dy = +1, dx = 0; else - return ""; /* invalid click location */ + return UI_UPDATE; /* invalid click location */ /* reverse direction if right hand button is pressed */ if (button == RIGHT_BUTTON || button == CURSOR_SELECT2) { diff --git a/apps/plugins/puzzles/src/slant.c b/apps/plugins/puzzles/src/slant.c index 5f9f4f6fed..3fd66115b1 100644 --- a/apps/plugins/puzzles/src/slant.c +++ b/apps/plugins/puzzles/src/slant.c @@ -184,24 +184,20 @@ static config_item *game_configure(const game_params *params) ret[0].name = "Width"; ret[0].type = C_STRING; sprintf(buf, "%d", params->w); - ret[0].sval = dupstr(buf); - ret[0].ival = 0; + ret[0].u.string.sval = dupstr(buf); ret[1].name = "Height"; ret[1].type = C_STRING; sprintf(buf, "%d", params->h); - ret[1].sval = dupstr(buf); - ret[1].ival = 0; + ret[1].u.string.sval = dupstr(buf); ret[2].name = "Difficulty"; ret[2].type = C_CHOICES; - ret[2].sval = DIFFCONFIG; - ret[2].ival = params->diff; + ret[2].u.choices.choicenames = DIFFCONFIG; + ret[2].u.choices.selected = params->diff; ret[3].name = NULL; ret[3].type = C_END; - ret[3].sval = NULL; - ret[3].ival = 0; return ret; } @@ -210,14 +206,14 @@ static game_params *custom_params(const config_item *cfg) { game_params *ret = snew(game_params); - ret->w = atoi(cfg[0].sval); - ret->h = atoi(cfg[1].sval); - ret->diff = cfg[2].ival; + ret->w = atoi(cfg[0].u.string.sval); + ret->h = atoi(cfg[1].u.string.sval); + ret->diff = cfg[2].u.choices.selected; 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 @@ -417,7 +413,7 @@ static void fill_square(int w, int h, int x, int y, int v, } static int vbitmap_clear(int w, int h, struct solver_scratch *sc, - int x, int y, int vbits, char *reason, ...) + int x, int y, int vbits, const char *reason, ...) { int done_something = FALSE; int vbit; @@ -738,7 +734,7 @@ static int slant_solve(int w, int h, const signed char *clues, int fs, bs, v; int c1, c2; #ifdef SOLVER_DIAGNOSTICS - char *reason = ""; + const char *reason = ""; #endif if (soln[y*w+x]) @@ -1216,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; @@ -1460,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; @@ -1683,7 +1679,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, } else if (IS_CURSOR_SELECT(button)) { if (!ui->cur_visible) { ui->cur_visible = 1; - return ""; + return UI_UPDATE; } x = ui->cur_x; y = ui->cur_y; @@ -1692,7 +1688,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, } else if (IS_CURSOR_MOVE(button)) { move_cursor(button, &ui->cur_x, &ui->cur_y, w, h, 0); ui->cur_visible = 1; - return ""; + return UI_UPDATE; } else if (button == '\\' || button == '\b' || button == '/') { int x = ui->cur_x, y = ui->cur_y; if (button == ("\\" "\b" "/")[state->soln[y*w + x] + 1]) return NULL; @@ -2193,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/apps/plugins/puzzles/src/solo.c b/apps/plugins/puzzles/src/solo.c index 0d383c39aa..ef2852f1d9 100644 --- a/apps/plugins/puzzles/src/solo.c +++ b/apps/plugins/puzzles/src/solo.c @@ -299,9 +299,9 @@ static game_params *dup_params(const game_params *params) static int game_fetch_preset(int i, char **name, game_params **params) { static struct { - char *title; + const char *title; game_params params; - } presets[] = { + } const presets[] = { { "2x2 Trivial", { 2, 2, SYMM_ROT2, DIFF_BLOCK, DIFF_KMINMAX, FALSE, FALSE } }, { "2x3 Basic", { 2, 3, SYMM_ROT2, DIFF_SIMPLE, DIFF_KMINMAX, FALSE, FALSE } }, { "3x3 Trivial", { 3, 3, SYMM_ROT2, DIFF_BLOCK, DIFF_KMINMAX, FALSE, FALSE } }, @@ -445,46 +445,39 @@ static config_item *game_configure(const game_params *params) ret[0].name = "Columns of sub-blocks"; ret[0].type = C_STRING; sprintf(buf, "%d", params->c); - ret[0].sval = dupstr(buf); - ret[0].ival = 0; + ret[0].u.string.sval = dupstr(buf); ret[1].name = "Rows of sub-blocks"; ret[1].type = C_STRING; sprintf(buf, "%d", params->r); - ret[1].sval = dupstr(buf); - ret[1].ival = 0; + ret[1].u.string.sval = dupstr(buf); ret[2].name = "\"X\" (require every number in each main diagonal)"; ret[2].type = C_BOOLEAN; - ret[2].sval = NULL; - ret[2].ival = params->xtype; + ret[2].u.boolean.bval = params->xtype; ret[3].name = "Jigsaw (irregularly shaped sub-blocks)"; ret[3].type = C_BOOLEAN; - ret[3].sval = NULL; - ret[3].ival = (params->r == 1); + ret[3].u.boolean.bval = (params->r == 1); ret[4].name = "Killer (digit sums)"; ret[4].type = C_BOOLEAN; - ret[4].sval = NULL; - ret[4].ival = params->killer; + ret[4].u.boolean.bval = params->killer; ret[5].name = "Symmetry"; ret[5].type = C_CHOICES; - ret[5].sval = ":None:2-way rotation:4-way rotation:2-way mirror:" + ret[5].u.choices.choicenames = ":None:2-way rotation:4-way rotation:2-way mirror:" "2-way diagonal mirror:4-way mirror:4-way diagonal mirror:" "8-way mirror"; - ret[5].ival = params->symm; + ret[5].u.choices.selected = params->symm; ret[6].name = "Difficulty"; ret[6].type = C_CHOICES; - ret[6].sval = ":Trivial:Basic:Intermediate:Advanced:Extreme:Unreasonable"; - ret[6].ival = params->diff; + ret[6].u.choices.choicenames = ":Trivial:Basic:Intermediate:Advanced:Extreme:Unreasonable"; + ret[6].u.choices.selected = params->diff; ret[7].name = NULL; ret[7].type = C_END; - ret[7].sval = NULL; - ret[7].ival = 0; return ret; } @@ -493,22 +486,22 @@ static game_params *custom_params(const config_item *cfg) { game_params *ret = snew(game_params); - ret->c = atoi(cfg[0].sval); - ret->r = atoi(cfg[1].sval); - ret->xtype = cfg[2].ival; - if (cfg[3].ival) { + ret->c = atoi(cfg[0].u.string.sval); + ret->r = atoi(cfg[1].u.string.sval); + ret->xtype = cfg[2].u.boolean.bval; + if (cfg[3].u.boolean.bval) { ret->c *= ret->r; ret->r = 1; } - ret->killer = cfg[4].ival; - ret->symm = cfg[5].ival; - ret->diff = cfg[6].ival; + ret->killer = cfg[4].u.boolean.bval; + ret->symm = cfg[5].u.choices.selected; + ret->diff = cfg[6].u.choices.selected; ret->kdiff = DIFF_KINTERSECT; 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"; @@ -838,19 +831,20 @@ static void solver_place(struct solver_usage *usage, int x, int y, int n) */ struct solver_scratch; static int solver_elim(struct solver_usage *usage, int *indices, - char *fmt, ...) __attribute__((format(printf,3,4))); + const char *fmt, ...) + __attribute__((format(printf,3,4))); static int solver_intersect(struct solver_usage *usage, - int *indices1, int *indices2, char *fmt, ...) + int *indices1, int *indices2, const char *fmt, ...) __attribute__((format(printf,4,5))); static int solver_set(struct solver_usage *usage, struct solver_scratch *scratch, - int *indices, char *fmt, ...) + int *indices, const char *fmt, ...) __attribute__((format(printf,4,5))); #endif static int solver_elim(struct solver_usage *usage, int *indices #ifdef STANDALONE_SOLVER - , char *fmt, ... + , const char *fmt, ... #endif ) { @@ -914,7 +908,7 @@ static int solver_elim(struct solver_usage *usage, int *indices static int solver_intersect(struct solver_usage *usage, int *indices1, int *indices2 #ifdef STANDALONE_SOLVER - , char *fmt, ... + , const char *fmt, ... #endif ) { @@ -992,7 +986,7 @@ static int solver_set(struct solver_usage *usage, struct solver_scratch *scratch, int *indices #ifdef STANDALONE_SOLVER - , char *fmt, ... + , const char *fmt, ... #endif ) { @@ -1358,7 +1352,7 @@ static int solver_forcing(struct solver_usage *usage, (ondiag1(yt*cr+xt) && ondiag1(y*cr+x)))))) { #ifdef STANDALONE_SOLVER if (solver_show_working) { - char *sep = ""; + const char *sep = ""; int xl, yl; printf("%*sforcing chain, %d at ends of ", solver_recurse_depth*4, "", orign); @@ -2523,7 +2517,7 @@ static void solver(int cr, struct block_structure *blocks, #ifdef STANDALONE_SOLVER if (solver_show_working) { - char *sep = ""; + const char *sep = ""; printf("%*srecursing on (%d,%d) [", solver_recurse_depth*4, "", x + 1, y + 1); for (i = 0; i < j; i++) { @@ -3161,7 +3155,8 @@ static int symmetries(const game_params *params, int x, int y, static char *encode_solve_move(int cr, digit *grid) { int i, len; - char *ret, *p, *sep; + char *ret, *p; + const char *sep; /* * It's surprisingly easy to work out _exactly_ how long this @@ -3861,7 +3856,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; @@ -3929,7 +3925,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; @@ -3959,11 +3955,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); @@ -4036,10 +4032,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) @@ -4116,7 +4112,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++; @@ -4134,7 +4130,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++; @@ -4234,7 +4230,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; @@ -4586,7 +4582,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, ui->hpencil = 0; } ui->hcursor = 0; - return ""; /* UI activity occurred */ + return UI_UPDATE; } if (button == RIGHT_BUTTON) { /* @@ -4606,19 +4602,19 @@ static char *interpret_move(const game_state *state, game_ui *ui, ui->hshow = 0; } ui->hcursor = 0; - return ""; /* UI activity occurred */ + return UI_UPDATE; } } if (IS_CURSOR_MOVE(button)) { move_cursor(button, &ui->hx, &ui->hy, cr, cr, 0); ui->hshow = ui->hcursor = 1; - return ""; + return UI_UPDATE; } if (ui->hshow && (button == CURSOR_SELECT)) { ui->hpencil = 1 - ui->hpencil; ui->hcursor = 1; - return ""; + return UI_UPDATE; } if (ui->hshow && @@ -5584,7 +5580,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/apps/plugins/puzzles/src/tents.c b/apps/plugins/puzzles/src/tents.c index 4ffeb7be64..48d420e5b7 100644 --- a/apps/plugins/puzzles/src/tents.c +++ b/apps/plugins/puzzles/src/tents.c @@ -371,24 +371,20 @@ static config_item *game_configure(const game_params *params) ret[0].name = "Width"; ret[0].type = C_STRING; sprintf(buf, "%d", params->w); - ret[0].sval = dupstr(buf); - ret[0].ival = 0; + ret[0].u.string.sval = dupstr(buf); ret[1].name = "Height"; ret[1].type = C_STRING; sprintf(buf, "%d", params->h); - ret[1].sval = dupstr(buf); - ret[1].ival = 0; + ret[1].u.string.sval = dupstr(buf); ret[2].name = "Difficulty"; ret[2].type = C_CHOICES; - ret[2].sval = DIFFCONFIG; - ret[2].ival = params->diff; + ret[2].u.choices.choicenames = DIFFCONFIG; + ret[2].u.choices.selected = params->diff; ret[3].name = NULL; ret[3].type = C_END; - ret[3].sval = NULL; - ret[3].ival = 0; return ret; } @@ -397,14 +393,14 @@ static game_params *custom_params(const config_item *cfg) { game_params *ret = snew(game_params); - ret->w = atoi(cfg[0].sval); - ret->h = atoi(cfg[1].sval); - ret->diff = cfg[2].ival; + ret->w = atoi(cfg[0].u.string.sval); + ret->h = atoi(cfg[1].u.string.sval); + ret->diff = cfg[2].u.choices.selected; 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 @@ -1190,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; @@ -1316,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; @@ -1559,13 +1555,14 @@ static char *interpret_move(const game_state *state, game_ui *ui, ui->dsy = ui->dey = y; ui->drag_ok = TRUE; ui->cdisp = 0; - return ""; /* ui updated */ + return UI_UPDATE; } if ((IS_MOUSE_DRAG(button) || IS_MOUSE_RELEASE(button)) && ui->drag_button > 0) { int xmin, ymin, xmax, ymax; - char *buf, *sep; + char *buf; + const char *sep; int buflen, bufsize, tmplen; x = FROMCOORD(x); @@ -1590,14 +1587,14 @@ static char *interpret_move(const game_state *state, game_ui *ui, } if (IS_MOUSE_DRAG(button)) - return ""; /* ui updated */ + return UI_UPDATE; /* * The drag has been released. Enact it. */ if (!ui->drag_ok) { ui->drag_button = -1; - return ""; /* drag was just cancelled */ + return UI_UPDATE; /* drag was just cancelled */ } xmin = min(ui->dsx, ui->dex); @@ -1635,7 +1632,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, if (buflen == 0) { sfree(buf); - return ""; /* ui updated (drag was terminated) */ + return UI_UPDATE; /* drag was terminated */ } else { buf[buflen] = '\0'; return buf; @@ -1663,7 +1660,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, if (len) return dupstr(tmpbuf); } else move_cursor(button, &ui->cx, &ui->cy, w, h, 0); - return ""; + return UI_UPDATE; } if (ui->cdisp) { char rep = 0; @@ -1690,7 +1687,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, } } else if (IS_CURSOR_SELECT(button)) { ui->cdisp = 1; - return ""; + return UI_UPDATE; } return NULL; @@ -2654,7 +2651,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/apps/plugins/puzzles/src/towers.c b/apps/plugins/puzzles/src/towers.c index a3a7e55a45..9ccc6ae185 100644 --- a/apps/plugins/puzzles/src/towers.c +++ b/apps/plugins/puzzles/src/towers.c @@ -212,18 +212,15 @@ static config_item *game_configure(const game_params *params) ret[0].name = "Grid size"; ret[0].type = C_STRING; sprintf(buf, "%d", params->w); - ret[0].sval = dupstr(buf); - ret[0].ival = 0; + ret[0].u.string.sval = dupstr(buf); ret[1].name = "Difficulty"; ret[1].type = C_CHOICES; - ret[1].sval = DIFFCONFIG; - ret[1].ival = params->diff; + ret[1].u.choices.choicenames = DIFFCONFIG; + ret[1].u.choices.selected = params->diff; ret[2].name = NULL; ret[2].type = C_END; - ret[2].sval = NULL; - ret[2].ival = 0; return ret; } @@ -232,13 +229,13 @@ static game_params *custom_params(const config_item *cfg) { game_params *ret = snew(game_params); - ret->w = atoi(cfg[0].sval); - ret->diff = cfg[1].ival; + ret->w = atoi(cfg[0].u.string.sval); + ret->diff = cfg[1].u.choices.selected; 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"; @@ -802,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; @@ -970,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; @@ -1349,7 +1346,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, ui->hpencil = 0; } ui->hcursor = 0; - return ""; /* UI activity occurred */ + return UI_UPDATE; } if (button == RIGHT_BUTTON) { /* @@ -1369,7 +1366,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, ui->hshow = 0; } ui->hcursor = 0; - return ""; /* UI activity occurred */ + return UI_UPDATE; } } else if (button == LEFT_BUTTON) { if (is_clue(state, tx, ty)) { @@ -1394,13 +1391,13 @@ static char *interpret_move(const game_state *state, game_ui *ui, } move_cursor(button, &ui->hx, &ui->hy, w, w, 0); ui->hshow = ui->hcursor = 1; - return ""; + return UI_UPDATE; } if (ui->hshow && (button == CURSOR_SELECT)) { ui->hpencil = 1 - ui->hpencil; ui->hcursor = 1; - return ""; + return UI_UPDATE; } if (ui->hshow && @@ -2021,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/apps/plugins/puzzles/src/tracks.c b/apps/plugins/puzzles/src/tracks.c index 578813b1a3..3899007c94 100644 --- a/apps/plugins/puzzles/src/tracks.c +++ b/apps/plugins/puzzles/src/tracks.c @@ -148,28 +148,24 @@ static config_item *game_configure(const game_params *params) ret[0].name = "Width"; ret[0].type = C_STRING; sprintf(buf, "%d", params->w); - ret[0].sval = dupstr(buf); - ret[0].ival = 0; + ret[0].u.string.sval = dupstr(buf); ret[1].name = "Height"; ret[1].type = C_STRING; sprintf(buf, "%d", params->h); - ret[1].sval = dupstr(buf); - ret[1].ival = 0; + ret[1].u.string.sval = dupstr(buf); ret[2].name = "Difficulty"; ret[2].type = C_CHOICES; - ret[2].sval = DIFFCONFIG; - ret[2].ival = params->diff; + ret[2].u.choices.choicenames = DIFFCONFIG; + ret[2].u.choices.selected = params->diff; ret[3].name = "Disallow consecutive 1 clues"; ret[3].type = C_BOOLEAN; - ret[3].ival = params->single_ones; + ret[3].u.boolean.bval = params->single_ones; ret[4].name = NULL; ret[4].type = C_END; - ret[4].sval = NULL; - ret[4].ival = 0; return ret; } @@ -178,15 +174,15 @@ static game_params *custom_params(const config_item *cfg) { game_params *ret = snew(game_params); - ret->w = atoi(cfg[0].sval); - ret->h = atoi(cfg[1].sval); - ret->diff = cfg[2].ival; - ret->single_ones = cfg[3].ival; + ret->w = atoi(cfg[0].u.string.sval); + ret->h = atoi(cfg[1].u.string.sval); + ret->diff = cfg[2].u.choices.selected; + ret->single_ones = cfg[3].u.boolean.bval; 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 @@ -786,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; @@ -1368,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; @@ -1922,13 +1918,13 @@ static char *interpret_move(const game_state *state, game_ui *ui, ui->drag_sx = ui->drag_ex = gx; ui->drag_sy = ui->drag_ey = gy; - return ""; + return UI_UPDATE; } if (IS_MOUSE_DRAG(button)) { ui->cursor_active = FALSE; update_ui_drag(state, ui, gx, gy); - return ""; + return UI_UPDATE; } if (IS_MOUSE_RELEASE(button)) { @@ -1965,12 +1961,12 @@ static char *interpret_move(const game_state *state, game_ui *ui, cy = CENTERED_COORD(gy); if (!INGRID(state, gx, gy) || FROMCOORD(x) != gx || FROMCOORD(y) != gy) - return ""; + return UI_UPDATE; if (max(abs(x-cx),abs(y-cy)) < TILE_SIZE/4) { if (ui_can_flip_square(state, gx, gy, button == RIGHT_RELEASE)) return square_flip_str(state, gx, gy, button == RIGHT_RELEASE, tmpbuf); - return ""; + return UI_UPDATE; } else { if (abs(x-cx) < abs(y-cy)) { /* Closest to top/bottom edge. */ @@ -1984,7 +1980,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, return edge_flip_str(state, gx, gy, direction, button == RIGHT_RELEASE, tmpbuf); else - return ""; + return UI_UPDATE; } } } @@ -1997,7 +1993,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, if (!ui->cursor_active) { ui->cursor_active = TRUE; - return ""; + return UI_UPDATE; } ui->curx = ui->curx + dx; @@ -2008,17 +2004,17 @@ static char *interpret_move(const game_state *state, game_ui *ui, } ui->curx = min(max(ui->curx, 1), 2*w-1); ui->cury = min(max(ui->cury, 1), 2*h-1); - return ""; + return UI_UPDATE; } if (IS_CURSOR_SELECT(button)) { if (!ui->cursor_active) { ui->cursor_active = TRUE; - return ""; + return UI_UPDATE; } /* click on square corner does nothing (shouldn't get here) */ if ((ui->curx % 2) == 0 && (ui->cury % 2 == 0)) - return ""; + return UI_UPDATE; gx = ui->curx / 2; gy = ui->cury / 2; @@ -2030,7 +2026,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, else if (!direction && ui_can_flip_square(state, gx, gy, button == CURSOR_SELECT2)) return square_flip_str(state, gx, gy, button == CURSOR_SELECT2, tmpbuf); - return ""; + return UI_UPDATE; } #if 0 @@ -2140,7 +2136,7 @@ enum { COL_GRID, COL_CLUE, COL_CURSOR, COL_TRACK, COL_TRACK_CLUE, COL_SLEEPER, COL_DRAGON, COL_DRAGOFF, - COL_ERROR, COL_FLASH, + COL_ERROR, COL_FLASH, COL_ERROR_BACKGROUND, NCOLOURS }; @@ -2152,11 +2148,12 @@ static float *game_colours(frontend *fe, int *ncolours) game_mkhighlight(fe, ret, COL_BACKGROUND, COL_HIGHLIGHT, COL_LOWLIGHT); for (i = 0; i < 3; i++) { - ret[COL_TRACK_CLUE * 3 + i] = 0.0F; - ret[COL_TRACK * 3 + i] = 0.5F; - ret[COL_CLUE * 3 + i] = 0.0F; - ret[COL_GRID * 3 + i] = 0.75F; - ret[COL_CURSOR * 3 + i] = 0.6F; + ret[COL_TRACK_CLUE * 3 + i] = 0.0F; + ret[COL_TRACK * 3 + i] = 0.5F; + ret[COL_CLUE * 3 + i] = 0.0F; + ret[COL_GRID * 3 + i] = 0.75F; + ret[COL_CURSOR * 3 + i] = 0.6F; + ret[COL_ERROR_BACKGROUND * 3 + i] = 1.0F; } ret[COL_SLEEPER * 3 + 0] = 0.5F; @@ -2417,7 +2414,7 @@ static void draw_square(drawing *dr, game_drawstate *ds, draw_update(dr, ox, oy, TILE_SIZE, TILE_SIZE); } -static void draw_clue(drawing *dr, game_drawstate *ds, int w, int clue, int i, int col) +static void draw_clue(drawing *dr, game_drawstate *ds, int w, int clue, int i, int col, int bg) { int cx, cy, tsz = TILE_SIZE/2; char buf[20]; @@ -2432,7 +2429,7 @@ static void draw_clue(drawing *dr, game_drawstate *ds, int w, int clue, int i, i draw_rect(dr, cx - tsz + GRID_LINE_TL, cy - tsz + GRID_LINE_TL, TILE_SIZE - GRID_LINE_ALL, TILE_SIZE - GRID_LINE_ALL, - COL_BACKGROUND); + bg); sprintf(buf, "%d", clue); draw_text(dr, cx, cy, FONT_VARIABLE, tsz, ALIGN_VCENTRE|ALIGN_HCENTRE, col, buf); @@ -2518,7 +2515,8 @@ static void game_redraw(drawing *dr, game_drawstate *ds, const game_state *oldst if (force || (state->num_errors[i] != ds->num_errors[i])) { ds->num_errors[i] = state->num_errors[i]; draw_clue(dr, ds, w, state->numbers->numbers[i], i, - ds->num_errors[i] ? COL_ERROR : COL_CLUE); + ds->num_errors[i] ? COL_ERROR : COL_CLUE, + ds->num_errors[i] ? COL_ERROR_BACKGROUND : COL_BACKGROUND); } } @@ -2608,7 +2606,8 @@ static void game_print(drawing *dr, const game_state *state, int tilesize) /* clue numbers, and loop ends */ for (i = 0; i < w+h; i++) - draw_clue(dr, ds, w, state->numbers->numbers[i], i, black); + draw_clue(dr, ds, w, state->numbers->numbers[i], i, + black, COL_BACKGROUND); draw_loop_ends(dr, ds, state, black); /* clue tracks / solution */ diff --git a/apps/plugins/puzzles/src/twiddle.c b/apps/plugins/puzzles/src/twiddle.c index 224c0418f1..cbf6f761ef 100644 --- a/apps/plugins/puzzles/src/twiddle.c +++ b/apps/plugins/puzzles/src/twiddle.c @@ -80,9 +80,9 @@ static game_params *dup_params(const game_params *params) static int game_fetch_preset(int i, char **name, game_params **params) { static struct { - char *title; + const char *title; game_params params; - } presets[] = { + } const presets[] = { { "3x3 rows only", { 3, 3, 2, TRUE, FALSE } }, { "3x3 normal", { 3, 3, 2, FALSE, FALSE } }, { "3x3 orientable", { 3, 3, 2, FALSE, TRUE } }, @@ -156,41 +156,33 @@ static config_item *game_configure(const game_params *params) ret[0].name = "Width"; ret[0].type = C_STRING; sprintf(buf, "%d", params->w); - ret[0].sval = dupstr(buf); - ret[0].ival = 0; + ret[0].u.string.sval = dupstr(buf); ret[1].name = "Height"; ret[1].type = C_STRING; sprintf(buf, "%d", params->h); - ret[1].sval = dupstr(buf); - ret[1].ival = 0; + ret[1].u.string.sval = dupstr(buf); ret[2].name = "Rotating block size"; ret[2].type = C_STRING; sprintf(buf, "%d", params->n); - ret[2].sval = dupstr(buf); - ret[2].ival = 0; + ret[2].u.string.sval = dupstr(buf); ret[3].name = "One number per row"; ret[3].type = C_BOOLEAN; - ret[3].sval = NULL; - ret[3].ival = params->rowsonly; + ret[3].u.boolean.bval = params->rowsonly; ret[4].name = "Orientation matters"; ret[4].type = C_BOOLEAN; - ret[4].sval = NULL; - ret[4].ival = params->orientable; + ret[4].u.boolean.bval = params->orientable; ret[5].name = "Number of shuffling moves"; ret[5].type = C_STRING; sprintf(buf, "%d", params->movetarget); - ret[5].sval = dupstr(buf); - ret[5].ival = 0; + ret[5].u.string.sval = dupstr(buf); ret[6].name = NULL; ret[6].type = C_END; - ret[6].sval = NULL; - ret[6].ival = 0; return ret; } @@ -199,17 +191,17 @@ static game_params *custom_params(const config_item *cfg) { game_params *ret = snew(game_params); - ret->w = atoi(cfg[0].sval); - ret->h = atoi(cfg[1].sval); - ret->n = atoi(cfg[2].sval); - ret->rowsonly = cfg[3].ival; - ret->orientable = cfg[4].ival; - ret->movetarget = atoi(cfg[5].sval); + ret->w = atoi(cfg[0].u.string.sval); + ret->h = atoi(cfg[1].u.string.sval); + ret->n = atoi(cfg[2].u.string.sval); + ret->rowsonly = cfg[3].u.boolean.bval; + ret->orientable = cfg[4].u.boolean.bval; + ret->movetarget = atoi(cfg[5].u.string.sval); 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"; @@ -432,7 +424,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; @@ -543,7 +535,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"); } @@ -663,7 +655,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, if (button == CURSOR_DOWN && (ui->cur_y+n) < (h)) ui->cur_y++; ui->cur_visible = 1; - return ""; + return UI_UPDATE; } if (button == LEFT_BUTTON || button == RIGHT_BUTTON) { @@ -687,7 +679,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, dir = (button == CURSOR_SELECT2) ? -1 : +1; } else { ui->cur_visible = 1; - return ""; + return UI_UPDATE; } } else if (button == 'a' || button == 'A' || button==MOD_NUM_KEYPAD+'7') { x = y = 0; diff --git a/apps/plugins/puzzles/src/undead.c b/apps/plugins/puzzles/src/undead.c index b1f536e8d0..df0735e469 100644 --- a/apps/plugins/puzzles/src/undead.c +++ b/apps/plugins/puzzles/src/undead.c @@ -163,24 +163,20 @@ static config_item *game_configure(const game_params *params) ret[0].name = "Width"; ret[0].type = C_STRING; sprintf(buf, "%d", params->w); - ret[0].sval = dupstr(buf); - ret[0].ival = 0; + ret[0].u.string.sval = dupstr(buf); ret[1].name = "Height"; ret[1].type = C_STRING; sprintf(buf, "%d", params->h); - ret[1].sval = dupstr(buf); - ret[1].ival = 0; + ret[1].u.string.sval = dupstr(buf); ret[2].name = "Difficulty"; ret[2].type = C_CHOICES; - ret[2].sval = DIFFCONFIG; - ret[2].ival = params->diff; + ret[2].u.choices.choicenames = DIFFCONFIG; + ret[2].u.choices.selected = params->diff; ret[3].name = NULL; ret[3].type = C_END; - ret[3].sval = NULL; - ret[3].ival = 0; return ret; } @@ -189,13 +185,13 @@ static game_params *custom_params(const config_item *cfg) { game_params *ret = snew(game_params); - ret->w = atoi(cfg[0].sval); - ret->h = atoi(cfg[1].sval); - ret->diff = cfg[2].ival; + ret->w = atoi(cfg[0].u.string.sval); + ret->h = atoi(cfg[1].u.string.sval); + ret->diff = cfg[2].u.choices.selected; 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"; @@ -1440,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; @@ -1493,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; @@ -1725,7 +1721,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, if (button == 'a' || button == 'A') { ui->ascii = !ui->ascii; - return ""; + return UI_UPDATE; } if (button == 'm' || button == 'M') { @@ -1771,12 +1767,12 @@ static char *interpret_move(const game_state *state, game_ui *ui, case CURSOR_LEFT: ui->hx -= (ui->hx > 1) ? 1 : 0; break; } ui->hshow = ui->hcursor = 1; - return ""; + return UI_UPDATE; } if (ui->hshow && button == CURSOR_SELECT) { ui->hpencil = 1 - ui->hpencil; ui->hcursor = 1; - return ""; + return UI_UPDATE; } if (ui->hshow == 1 && ui->hpencil == 1) { @@ -1814,12 +1810,12 @@ static char *interpret_move(const game_state *state, game_ui *ui, if (button == LEFT_BUTTON) { ui->hshow = 1; ui->hpencil = 0; ui->hcursor = 0; ui->hx = gx; ui->hy = gy; - return ""; + return UI_UPDATE; } else if (button == RIGHT_BUTTON && g == 7) { ui->hshow = 1; ui->hpencil = 1; ui->hcursor = 0; ui->hx = gx; ui->hy = gy; - return ""; + return UI_UPDATE; } } else if (ui->hshow == 1) { @@ -1828,36 +1824,36 @@ static char *interpret_move(const game_state *state, game_ui *ui, if (gx == ui->hx && gy == ui->hy) { ui->hshow = 0; ui->hpencil = 0; ui->hcursor = 0; ui->hx = 0; ui->hy = 0; - return ""; + return UI_UPDATE; } else { ui->hshow = 1; ui->hpencil = 0; ui->hcursor = 0; ui->hx = gx; ui->hy = gy; - return ""; + return UI_UPDATE; } } else { ui->hshow = 1; ui->hpencil = 0; ui->hcursor = 0; ui->hx = gx; ui->hy = gy; - return ""; + return UI_UPDATE; } } else if (button == RIGHT_BUTTON) { if (ui->hpencil == 0 && g == 7) { ui->hshow = 1; ui->hpencil = 1; ui->hcursor = 0; ui->hx = gx; ui->hy = gy; - return ""; + return UI_UPDATE; } else { if (gx == ui->hx && gy == ui->hy) { ui->hshow = 0; ui->hpencil = 0; ui->hcursor = 0; ui->hx = 0; ui->hy = 0; - return ""; + return UI_UPDATE; } else if (g == 7) { ui->hshow = 1; ui->hpencil = 1; ui->hcursor = 0; ui->hx = gx; ui->hy = gy; - return ""; + return UI_UPDATE; } } } diff --git a/apps/plugins/puzzles/src/unequal.c b/apps/plugins/puzzles/src/unequal.c index a63b7d8ed0..cb477c9e37 100644 --- a/apps/plugins/puzzles/src/unequal.c +++ b/apps/plugins/puzzles/src/unequal.c @@ -218,24 +218,21 @@ static config_item *game_configure(const game_params *params) ret[0].name = "Mode"; ret[0].type = C_CHOICES; - ret[0].sval = ":Unequal:Adjacent"; - ret[0].ival = params->adjacent; + ret[0].u.choices.choicenames = ":Unequal:Adjacent"; + ret[0].u.choices.selected = params->adjacent; ret[1].name = "Size (s*s)"; ret[1].type = C_STRING; sprintf(buf, "%d", params->order); - ret[1].sval = dupstr(buf); - ret[1].ival = 0; + ret[1].u.string.sval = dupstr(buf); ret[2].name = "Difficulty"; ret[2].type = C_CHOICES; - ret[2].sval = DIFFCONFIG; - ret[2].ival = params->diff; + ret[2].u.choices.choicenames = DIFFCONFIG; + ret[2].u.choices.selected = params->diff; ret[3].name = NULL; ret[3].type = C_END; - ret[3].sval = NULL; - ret[3].ival = 0; return ret; } @@ -244,14 +241,14 @@ static game_params *custom_params(const config_item *cfg) { game_params *ret = snew(game_params); - ret->adjacent = cfg[0].ival; - ret->order = atoi(cfg[1].sval); - ret->diff = cfg[2].ival; + ret->adjacent = cfg[0].u.choices.selected; + ret->order = atoi(cfg[1].u.string.sval); + ret->diff = cfg[2].u.choices.selected; 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"; @@ -1198,12 +1195,12 @@ generate: } static game_state *load_game(const game_params *params, const char *desc, - char **why_r) + const char **why_r) { game_state *state = blank_game(params->order, params->adjacent); const char *p = desc; int i = 0, n, o = params->order, x, y; - char *why = NULL; + const char *why = NULL; while (*p) { while (*p >= 'a' && *p <= 'z') { @@ -1294,9 +1291,9 @@ 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; + const char *why = NULL; game_state *dummy = load_game(params, desc, &why); if (dummy) { free_game(dummy); @@ -1307,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; @@ -1425,7 +1422,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, ui->hshow = 1; } ui->hcursor = 0; - return ""; + return UI_UPDATE; } if (button == RIGHT_BUTTON) { /* pencil highlighting for non-filled squares */ @@ -1439,7 +1436,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, ui->hshow = 1; } ui->hcursor = 0; - return ""; + return UI_UPDATE; } } @@ -1453,11 +1450,12 @@ static char *interpret_move(const game_state *state, game_ui *ui, ny != ui->hy + adjthan[i].dy); ++i); if (i == 4) - return ""; /* invalid direction, i.e. out of the board */ + return UI_UPDATE; /* invalid direction, i.e. out of + * the board */ if (!(GRID(state, flags, ui->hx, ui->hy) & adjthan[i].f || GRID(state, flags, nx, ny ) & adjthan[i].fo)) - return ""; /* no clue to toggle */ + return UI_UPDATE; /* no clue to toggle */ if (state->adjacent) self = (adjthan[i].dx >= 0 && adjthan[i].dy >= 0); @@ -1475,13 +1473,13 @@ static char *interpret_move(const game_state *state, game_ui *ui, } else { move_cursor(button, &ui->hx, &ui->hy, ds->order, ds->order, FALSE); ui->hshow = ui->hcursor = 1; - return ""; + return UI_UPDATE; } } if (ui->hshow && IS_CURSOR_SELECT(button)) { ui->hpencil = 1 - ui->hpencil; ui->hcursor = 1; - return ""; + return UI_UPDATE; } n = c2n(button, state->order); @@ -1568,7 +1566,9 @@ static game_state *execute_move(const game_state *state, const char *move) } return ret; } else if (move[0] == 'H') { - return solver_hint(state, NULL, DIFF_EASY, DIFF_EASY); + ret = solver_hint(state, NULL, DIFF_EASY, DIFF_EASY); + check_complete(ret->nums, ret, 1); + return ret; } else if (move[0] == 'F' && sscanf(move+1, "%d,%d,%d", &x, &y, &n) == 3 && x >= 0 && x < state->order && y >= 0 && y < state->order) { ret = dup_game(state); @@ -2041,7 +2041,7 @@ const char *quis = NULL; #if 0 /* currently unused */ -static void debug_printf(char *fmt, ...) +static void debug_printf(const char *fmt, ...) { char buf[4096]; va_list ap; @@ -2125,7 +2125,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); @@ -2233,7 +2233,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/apps/plugins/puzzles/src/unfinished/group.c b/apps/plugins/puzzles/src/unfinished/group.c index 4a4ad6ce53..b812b041eb 100644 --- a/apps/plugins/puzzles/src/unfinished/group.c +++ b/apps/plugins/puzzles/src/unfinished/group.c @@ -212,23 +212,19 @@ static config_item *game_configure(const game_params *params) ret[0].name = "Grid size"; ret[0].type = C_STRING; sprintf(buf, "%d", params->w); - ret[0].sval = dupstr(buf); - ret[0].ival = 0; + ret[0].u.string.sval = dupstr(buf); ret[1].name = "Difficulty"; ret[1].type = C_CHOICES; - ret[1].sval = DIFFCONFIG; - ret[1].ival = params->diff; + ret[1].u.choices.choicenames = DIFFCONFIG; + ret[1].u.choices.selected = params->diff; ret[2].name = "Show identity"; ret[2].type = C_BOOLEAN; - ret[2].sval = NULL; - ret[2].ival = params->id; + ret[2].u.boolean.bval = params->id; ret[3].name = NULL; ret[3].type = C_END; - ret[3].sval = NULL; - ret[3].ival = 0; return ret; } @@ -237,14 +233,14 @@ static game_params *custom_params(const config_item *cfg) { game_params *ret = snew(game_params); - ret->w = atoi(cfg[0].sval); - ret->diff = cfg[1].ival; - ret->id = cfg[2].ival; + ret->w = atoi(cfg[0].u.string.sval); + ret->diff = cfg[1].u.choices.selected; + ret->id = cfg[2].u.boolean.bval; 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"; @@ -781,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; @@ -811,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; @@ -911,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; @@ -1281,13 +1277,13 @@ static char *interpret_move(const game_state *state, game_ui *ui, ui->drag |= 4; /* some movement has happened */ if (tcoord >= 0 && tcoord < w) { ui->dragpos = tcoord; - return ""; + return UI_UPDATE; } } else if (IS_MOUSE_RELEASE(button)) { if (ui->drag & 4) { ui->drag = 0; /* end drag */ if (state->sequence[ui->dragpos] == ui->dragnum) - return ""; /* drag was a no-op overall */ + return UI_UPDATE; /* drag was a no-op overall */ sprintf(buf, "D%d,%d", ui->dragnum, ui->dragpos); return dupstr(buf); } else { @@ -1298,7 +1294,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, state->sequence[ui->edgepos]); return dupstr(buf); } else - return ""; /* no-op */ + return UI_UPDATE; /* no-op */ } } } else if (IS_MOUSE_DOWN(button)) { @@ -1321,7 +1317,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, ui->hpencil = 0; } ui->hcursor = 0; - return ""; /* UI activity occurred */ + return UI_UPDATE; } if (button == RIGHT_BUTTON) { /* @@ -1345,20 +1341,20 @@ static char *interpret_move(const game_state *state, game_ui *ui, ui->hshow = 0; } ui->hcursor = 0; - return ""; /* UI activity occurred */ + return UI_UPDATE; } } else if (tx >= 0 && tx < w && ty == -1) { ui->drag = 2; ui->dragnum = state->sequence[tx]; ui->dragpos = tx; ui->edgepos = FROMCOORD(x + TILESIZE/2); - return ""; + return UI_UPDATE; } else if (ty >= 0 && ty < w && tx == -1) { ui->drag = 1; ui->dragnum = state->sequence[ty]; ui->dragpos = ty; ui->edgepos = FROMCOORD(y + TILESIZE/2); - return ""; + return UI_UPDATE; } } else if (IS_MOUSE_DRAG(button)) { if (!ui->hpencil && @@ -1371,7 +1367,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, ui->odx = ui->ody = 0; ui->odn = 1; } - return ""; + return UI_UPDATE; } if (IS_CURSOR_MOVE(button)) { @@ -1381,13 +1377,13 @@ static char *interpret_move(const game_state *state, game_ui *ui, ui->hx = state->sequence[cx]; ui->hy = state->sequence[cy]; ui->hshow = ui->hcursor = 1; - return ""; + return UI_UPDATE; } if (ui->hshow && (button == CURSOR_SELECT)) { ui->hpencil = 1 - ui->hpencil; ui->hcursor = 1; - return ""; + return UI_UPDATE; } if (ui->hshow && @@ -2110,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/apps/plugins/puzzles/src/unfinished/path.c b/apps/plugins/puzzles/src/unfinished/path.c index 61d6c61c6a..d4ec5d87cc 100644 --- a/apps/plugins/puzzles/src/unfinished/path.c +++ b/apps/plugins/puzzles/src/unfinished/path.c @@ -770,7 +770,7 @@ int main(void) #ifdef TEST_GENERAL #include -void fatal(char *fmt, ...) +void fatal(const char *fmt, ...) { va_list ap; diff --git a/apps/plugins/puzzles/src/unfinished/separate.c b/apps/plugins/puzzles/src/unfinished/separate.c index a7b4fc96e1..7fd8da8202 100644 --- a/apps/plugins/puzzles/src/unfinished/separate.c +++ b/apps/plugins/puzzles/src/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/apps/plugins/puzzles/src/unfinished/slide.c b/apps/plugins/puzzles/src/unfinished/slide.c index 9d4fce1461..9770013235 100644 --- a/apps/plugins/puzzles/src/unfinished/slide.c +++ b/apps/plugins/puzzles/src/unfinished/slide.c @@ -244,25 +244,20 @@ static config_item *game_configure(const game_params *params) ret[0].name = "Width"; ret[0].type = C_STRING; sprintf(buf, "%d", params->w); - ret[0].sval = dupstr(buf); - ret[0].ival = 0; + ret[0].u.string.sval = dupstr(buf); ret[1].name = "Height"; ret[1].type = C_STRING; sprintf(buf, "%d", params->h); - ret[1].sval = dupstr(buf); - ret[1].ival = 0; + ret[1].u.string.sval = dupstr(buf); ret[2].name = "Solution length limit"; ret[2].type = C_STRING; sprintf(buf, "%d", params->maxmoves); - ret[2].sval = dupstr(buf); - ret[2].ival = 0; + ret[2].u.string.sval = dupstr(buf); ret[3].name = NULL; ret[3].type = C_END; - ret[3].sval = NULL; - ret[3].ival = 0; return ret; } @@ -271,14 +266,14 @@ static game_params *custom_params(const config_item *cfg) { game_params *ret = snew(game_params); - ret->w = atoi(cfg[0].sval); - ret->h = atoi(cfg[1].sval); - ret->maxmoves = atoi(cfg[2].sval); + ret->w = atoi(cfg[0].u.string.sval); + ret->h = atoi(cfg[1].u.string.sval); + ret->maxmoves = atoi(cfg[2].u.string.sval); 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); @@ -891,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; @@ -1126,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; @@ -1349,7 +1344,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, * And that's it. Update the display to reflect the start * of a drag. */ - return ""; + return UI_UPDATE; } else if (button == LEFT_DRAG && ui->dragging) { int dist, distlimit, dx, dy, s, px, py; @@ -1376,7 +1371,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, if (px >= 0 && px < w && py >= 0 && py < h && ui->reachable[py*w+px]) { ui->drag_currpos = py*w+px; - return ""; + return UI_UPDATE; } } } diff --git a/apps/plugins/puzzles/src/unfinished/sokoban.c b/apps/plugins/puzzles/src/unfinished/sokoban.c index 2f0af35bc2..1264690416 100644 --- a/apps/plugins/puzzles/src/unfinished/sokoban.c +++ b/apps/plugins/puzzles/src/unfinished/sokoban.c @@ -210,19 +210,15 @@ static config_item *game_configure(const game_params *params) ret[0].name = "Width"; ret[0].type = C_STRING; sprintf(buf, "%d", params->w); - ret[0].sval = dupstr(buf); - ret[0].ival = 0; + ret[0].u.string.sval = dupstr(buf); ret[1].name = "Height"; ret[1].type = C_STRING; sprintf(buf, "%d", params->h); - ret[1].sval = dupstr(buf); - ret[1].ival = 0; + ret[1].u.string.sval = dupstr(buf); ret[2].name = NULL; ret[2].type = C_END; - ret[2].sval = NULL; - ret[2].ival = 0; return ret; } @@ -231,13 +227,13 @@ static game_params *custom_params(const config_item *cfg) { game_params *ret = snew(game_params); - ret->w = atoi(cfg[0].sval); - ret->h = atoi(cfg[1].sval); + ret->w = atoi(cfg[0].u.string.sval); + ret->h = atoi(cfg[1].u.string.sval); 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"; @@ -806,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; @@ -903,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/apps/plugins/puzzles/src/unruly.c b/apps/plugins/puzzles/src/unruly.c index f418efa776..9d2d5924d2 100644 --- a/apps/plugins/puzzles/src/unruly.c +++ b/apps/plugins/puzzles/src/unruly.c @@ -239,28 +239,24 @@ static config_item *game_configure(const game_params *params) ret[0].name = "Width"; ret[0].type = C_STRING; sprintf(buf, "%d", params->w2); - ret[0].sval = dupstr(buf); - ret[0].ival = 0; + ret[0].u.string.sval = dupstr(buf); ret[1].name = "Height"; ret[1].type = C_STRING; sprintf(buf, "%d", params->h2); - ret[1].sval = dupstr(buf); - ret[1].ival = 0; + ret[1].u.string.sval = dupstr(buf); ret[2].name = "Unique rows and columns"; ret[2].type = C_BOOLEAN; - ret[2].ival = params->unique; + ret[2].u.boolean.bval = params->unique; ret[3].name = "Difficulty"; ret[3].type = C_CHOICES; - ret[3].sval = DIFFCONFIG; - ret[3].ival = params->diff; + ret[3].u.choices.choicenames = DIFFCONFIG; + ret[3].u.choices.selected = params->diff; ret[4].name = NULL; ret[4].type = C_END; - ret[4].sval = NULL; - ret[4].ival = 0; return ret; } @@ -269,15 +265,15 @@ static game_params *custom_params(const config_item *cfg) { game_params *ret = snew(game_params); - ret->w2 = atoi(cfg[0].sval); - ret->h2 = atoi(cfg[1].sval); - ret->unique = cfg[2].ival; - ret->diff = cfg[3].ival; + ret->w2 = atoi(cfg[0].u.string.sval); + ret->h2 = atoi(cfg[1].u.string.sval); + ret->unique = cfg[2].u.boolean.bval; + ret->diff = cfg[3].u.choices.selected; 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"; @@ -319,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; @@ -1178,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); @@ -1531,7 +1527,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, if (IS_CURSOR_MOVE(button)) { move_cursor(button, &ui->cx, &ui->cy, w2, h2, 0); ui->cursor = TRUE; - return ""; + return UI_UPDATE; } /* Place one */ @@ -1976,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/apps/plugins/puzzles/src/untangle.c b/apps/plugins/puzzles/src/untangle.c index 441c8658ce..6c2eb30deb 100644 --- a/apps/plugins/puzzles/src/untangle.c +++ b/apps/plugins/puzzles/src/untangle.c @@ -187,13 +187,10 @@ static config_item *game_configure(const game_params *params) ret[0].name = "Number of points"; ret[0].type = C_STRING; sprintf(buf, "%d", params->n); - ret[0].sval = dupstr(buf); - ret[0].ival = 0; + ret[0].u.string.sval = dupstr(buf); ret[1].name = NULL; ret[1].type = C_END; - ret[1].sval = NULL; - ret[1].ival = 0; return ret; } @@ -202,12 +199,12 @@ static game_params *custom_params(const config_item *cfg) { game_params *ret = snew(game_params); - ret->n = atoi(cfg[0].sval); + ret->n = atoi(cfg[0].u.string.sval); 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"; @@ -661,7 +658,7 @@ static char *new_game_desc(const game_params *params, random_state *rs, */ ret = NULL; { - char *sep; + const char *sep; char buf[80]; int retlen; edge *ea; @@ -736,7 +733,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; @@ -883,7 +880,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]; @@ -1126,14 +1123,14 @@ static char *interpret_move(const game_state *state, game_ui *ui, ui->newpoint.x = x; ui->newpoint.y = y; ui->newpoint.d = ds->tilesize; - return ""; + return UI_UPDATE; } } else if (IS_MOUSE_DRAG(button) && ui->dragpoint >= 0) { ui->newpoint.x = x; ui->newpoint.y = y; ui->newpoint.d = ds->tilesize; - return ""; + return UI_UPDATE; } else if (IS_MOUSE_RELEASE(button) && ui->dragpoint >= 0) { int p = ui->dragpoint; char buf[80]; @@ -1148,7 +1145,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, ui->newpoint.x >= (long)state->w*ui->newpoint.d || ui->newpoint.y < 0 || ui->newpoint.y >= (long)state->h*ui->newpoint.d) - return ""; + return UI_UPDATE; /* * We aren't cancelling the drag. Construct a move string diff --git a/apps/plugins/puzzles/src/windows.c b/apps/plugins/puzzles/src/windows.c index ffd0f75894..8e5b40650d 100644 --- a/apps/plugins/puzzles/src/windows.c +++ b/apps/plugins/puzzles/src/windows.c @@ -150,7 +150,7 @@ void dputs(char *buf) OutputDebugString(buf); } -void debug_printf(char *fmt, ...) +void debug_printf(const char *fmt, ...) { char buf[4096]; va_list ap; @@ -258,7 +258,7 @@ void frontend_free(frontend *fe) static void update_type_menu_tick(frontend *fe); static void update_copy_menu_greying(frontend *fe); -void fatal(char *fmt, ...) +void fatal(const char *fmt, ...) { char buf[2048]; va_list ap; @@ -304,7 +304,7 @@ void get_random_seed(void **randseed, int *randseedsize) *randseedsize = sizeof(SYSTEMTIME); } -static void win_status_bar(void *handle, char *text) +static void win_status_bar(void *handle, const char *text) { #ifdef _WIN32_WCE TCHAR wText[255]; @@ -556,7 +556,8 @@ static void win_unclip(void *handle) } static void win_draw_text(void *handle, int x, int y, int fonttype, - int fontsize, int align, int colour, char *text) + int fontsize, int align, int colour, + const char *text) { frontend *fe = (frontend *)handle; POINT xy; @@ -1002,7 +1003,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. @@ -1550,7 +1551,7 @@ static frontend *frontend_new(HINSTANCE inst) return fe; } -static void savefile_write(void *wctx, void *buf, int len) +static void savefile_write(void *wctx, const void *buf, int len) { FILE *fp = (FILE *)wctx; fwrite(buf, 1, len, fp); @@ -1586,7 +1587,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. @@ -2057,52 +2058,43 @@ static config_item *frontend_get_config(frontend *fe, int which, ret[i].name = "Number of puzzles to print"; ret[i].type = C_STRING; - ret[i].sval = dupstr("1"); - ret[i].ival = 0; + ret[i].u.string.sval = dupstr("1"); i++; ret[i].name = "Number of puzzles across the page"; ret[i].type = C_STRING; - ret[i].sval = dupstr("1"); - ret[i].ival = 0; + ret[i].u.string.sval = dupstr("1"); i++; ret[i].name = "Number of puzzles down the page"; ret[i].type = C_STRING; - ret[i].sval = dupstr("1"); - ret[i].ival = 0; + ret[i].u.string.sval = dupstr("1"); i++; ret[i].name = "Percentage of standard size"; ret[i].type = C_STRING; - ret[i].sval = dupstr("100.0"); - ret[i].ival = 0; + ret[i].u.string.sval = dupstr("100.0"); i++; ret[i].name = "Include currently shown puzzle"; ret[i].type = C_BOOLEAN; - ret[i].sval = NULL; - ret[i].ival = TRUE; + ret[i].u.boolean.bval = TRUE; i++; ret[i].name = "Print solutions"; ret[i].type = C_BOOLEAN; - ret[i].sval = NULL; - ret[i].ival = FALSE; + ret[i].u.boolean.bval = FALSE; i++; if (fe->game->can_print_in_colour) { ret[i].name = "Print in colour"; ret[i].type = C_BOOLEAN; - ret[i].sval = NULL; - ret[i].ival = FALSE; + ret[i].u.boolean.bval = FALSE; i++; } ret[i].name = NULL; ret[i].type = C_END; - ret[i].sval = NULL; - ret[i].ival = 0; i++; return ret; @@ -2112,22 +2104,24 @@ 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); } else if (which == CFG_PRINT) { - if ((fe->printcount = atoi(cfg[0].sval)) <= 0) + if ((fe->printcount = atoi(cfg[0].u.string.sval)) <= 0) return "Number of puzzles to print should be at least one"; - if ((fe->printw = atoi(cfg[1].sval)) <= 0) + if ((fe->printw = atoi(cfg[1].u.string.sval)) <= 0) return "Number of puzzles across the page should be at least one"; - if ((fe->printh = atoi(cfg[2].sval)) <= 0) + if ((fe->printh = atoi(cfg[2].u.string.sval)) <= 0) return "Number of puzzles down the page should be at least one"; - if ((fe->printscale = (float)atof(cfg[3].sval)) <= 0) + if ((fe->printscale = (float)atof(cfg[3].u.string.sval)) <= 0) return "Print size should be positive"; - fe->printcurr = cfg[4].ival; - fe->printsolns = cfg[5].ival; - fe->printcolour = fe->game->can_print_in_colour && cfg[6].ival; + fe->printcurr = cfg[4].u.boolean.bval; + fe->printsolns = cfg[5].u.boolean.bval; + fe->printcolour = fe->game->can_print_in_colour && + cfg[6].u.boolean.bval; return NULL; } else { assert(!"We should never get here"); @@ -2140,7 +2134,7 @@ static char *frontend_set_config(frontend *fe, int which, config_item *cfg) /* Control coordinates should be specified in dialog units. */ HWND mkctrl(frontend *fe, int x1, int x2, int y1, int y2, LPCTSTR wclass, int wstyle, - int exstyle, const char *wtext, int wid) + int exstyle, const char *wtext, INT_PTR wid) { RECT rc; TCHAR wwtext[256]; @@ -2191,7 +2185,7 @@ static void create_config_controls(frontend * fe) mkctrl(fe, col2l, col2r, y, y + 12, TEXT("EDIT"), WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL, 0, "", (j->ctlid = id++)); - SetDlgItemTextA(fe->cfgbox, j->ctlid, i->sval); + SetDlgItemTextA(fe->cfgbox, j->ctlid, i->u.string.sval); break; case C_BOOLEAN: @@ -2201,7 +2195,7 @@ static void create_config_controls(frontend * fe) mkctrl(fe, col1l, col2r, y + 1, y + 11, TEXT("BUTTON"), BS_NOTIFY | BS_AUTOCHECKBOX | WS_TABSTOP, 0, i->name, (j->ctlid = id++)); - CheckDlgButton(fe->cfgbox, j->ctlid, (i->ival != 0)); + CheckDlgButton(fe->cfgbox, j->ctlid, (i->u.boolean.bval != 0)); break; case C_CHOICES: @@ -2215,9 +2209,11 @@ static void create_config_controls(frontend * fe) CBS_DROPDOWNLIST | CBS_HASSTRINGS, 0, "", (j->ctlid = id++)); { - char c, *p, *q, *str; + char c; + const char *p, *q; + char *str; - p = i->sval; + p = i->u.choices.choicenames; c = *p++; while (*p) { q = p; @@ -2236,7 +2232,7 @@ static void create_config_controls(frontend * fe) p = q; } } - SendMessage(ctl, CB_SETCURSEL, i->ival, 0); + SendMessage(ctl, CB_SETCURSEL, i->u.choices.selected, 0); break; } @@ -2282,7 +2278,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", @@ -2324,16 +2321,16 @@ static int CALLBACK ConfigDlgProc(HWND hwnd, UINT msg, GetDlgItemText(fe->cfgbox, j->ctlid, buffer, lenof(buffer)); #endif buffer[lenof(buffer)-1] = '\0'; - sfree(i->sval); - i->sval = dupstr(buffer); + sfree(i->u.string.sval); + i->u.string.sval = dupstr(buffer); } else if (i->type == C_BOOLEAN && (HIWORD(wParam) == BN_CLICKED || HIWORD(wParam) == BN_DBLCLK)) { - i->ival = IsDlgButtonChecked(fe->cfgbox, j->ctlid); + i->u.boolean.bval = IsDlgButtonChecked(fe->cfgbox, j->ctlid); } else if (i->type == C_CHOICES && HIWORD(wParam) == CBN_SELCHANGE) { - i->ival = SendDlgItemMessage(fe->cfgbox, j->ctlid, - CB_GETCURSEL, 0, 0); + i->u.choices.selected = SendDlgItemMessage(fe->cfgbox, j->ctlid, + CB_GETCURSEL, 0, 0); } return 0; @@ -2349,7 +2346,7 @@ static int CALLBACK ConfigDlgProc(HWND hwnd, UINT msg, #ifndef _WIN32_WCE HWND mkctrl(frontend *fe, int x1, int x2, int y1, int y2, char *wclass, int wstyle, - int exstyle, const char *wtext, int wid) + int exstyle, const char *wtext, INT_PTR wid) { HWND ret; ret = CreateWindowEx(exstyle, wclass, wtext, @@ -2683,7 +2680,7 @@ static int get_config(frontend *fe, int which) ctl = mkctrl(fe, col2l, col2r, y, y+height*3/2, "EDIT", WS_TABSTOP | ES_AUTOHSCROLL, WS_EX_CLIENTEDGE, "", (j->ctlid = id++)); - SetWindowText(ctl, i->sval); + SetWindowText(ctl, i->u.string.sval); y += height*3/2; break; @@ -2694,7 +2691,7 @@ static int get_config(frontend *fe, int which) mkctrl(fe, col1l, col2r, y, y+height, "BUTTON", BS_NOTIFY | BS_AUTOCHECKBOX | WS_TABSTOP, 0, i->name, (j->ctlid = id++)); - CheckDlgButton(fe->cfgbox, j->ctlid, (i->ival != 0)); + CheckDlgButton(fe->cfgbox, j->ctlid, (i->u.boolean.bval != 0)); y += height; break; @@ -2709,10 +2706,12 @@ static int get_config(frontend *fe, int which) CBS_DROPDOWNLIST | CBS_HASSTRINGS, WS_EX_CLIENTEDGE, "", (j->ctlid = id++)); { - char c, *p, *q, *str; + char c; + const char *p, *q; + char *str; SendMessage(ctl, CB_RESETCONTENT, 0, 0); - p = i->sval; + p = i->u.choices.choicenames; c = *p++; while (*p) { q = p; @@ -2727,7 +2726,7 @@ static int get_config(frontend *fe, int which) } } - SendMessage(ctl, CB_SETCURSEL, i->ival, 0); + SendMessage(ctl, CB_SETCURSEL, i->u.choices.selected, 0); y += height*3/2; break; @@ -3019,7 +3018,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); @@ -3111,7 +3110,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; @@ -3139,7 +3139,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); @@ -3152,6 +3153,7 @@ static LRESULT CALLBACK WndProc(HWND hwnd, UINT message, if (err) { MessageBox(hwnd, err, "Error", MB_ICONERROR|MB_OK); + sfree(err_w); break; } -- cgit v1.2.3