summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/plugins/puzzles/help/blackbox.c2
-rw-r--r--apps/plugins/puzzles/help/bridges.c2
-rw-r--r--apps/plugins/puzzles/help/cube.c2
-rw-r--r--apps/plugins/puzzles/help/dominosa.c2
-rw-r--r--apps/plugins/puzzles/help/fifteen.c2
-rw-r--r--apps/plugins/puzzles/help/filling.c2
-rw-r--r--apps/plugins/puzzles/help/flip.c2
-rw-r--r--apps/plugins/puzzles/help/flood.c2
-rw-r--r--apps/plugins/puzzles/help/galaxies.c2
-rw-r--r--apps/plugins/puzzles/help/guess.c2
-rw-r--r--apps/plugins/puzzles/help/inertia.c2
-rw-r--r--apps/plugins/puzzles/help/keen.c2
-rw-r--r--apps/plugins/puzzles/help/lightup.c2
-rw-r--r--apps/plugins/puzzles/help/loopy.c2
-rw-r--r--apps/plugins/puzzles/help/magnets.c2
-rw-r--r--apps/plugins/puzzles/help/map.c2
-rw-r--r--apps/plugins/puzzles/help/mines.c2
-rw-r--r--apps/plugins/puzzles/help/net.c2
-rw-r--r--apps/plugins/puzzles/help/netslide.c2
-rw-r--r--apps/plugins/puzzles/help/palisade.c2
-rw-r--r--apps/plugins/puzzles/help/pattern.c2
-rw-r--r--apps/plugins/puzzles/help/pearl.c2
-rw-r--r--apps/plugins/puzzles/help/pegs.c2
-rw-r--r--apps/plugins/puzzles/help/range.c2
-rw-r--r--apps/plugins/puzzles/help/rect.c414
-rw-r--r--apps/plugins/puzzles/help/samegame.c2
-rw-r--r--apps/plugins/puzzles/help/signpost.c2
-rw-r--r--apps/plugins/puzzles/help/singles.c2
-rw-r--r--apps/plugins/puzzles/help/sixteen.c2
-rw-r--r--apps/plugins/puzzles/help/slant.c2
-rw-r--r--apps/plugins/puzzles/help/solo.c2
-rw-r--r--apps/plugins/puzzles/help/tents.c2
-rw-r--r--apps/plugins/puzzles/help/towers.c2
-rw-r--r--apps/plugins/puzzles/help/tracks.c2
-rw-r--r--apps/plugins/puzzles/help/twiddle.c2
-rw-r--r--apps/plugins/puzzles/help/undead.c2
-rw-r--r--apps/plugins/puzzles/help/unequal.c2
-rw-r--r--apps/plugins/puzzles/help/unruly.c2
-rw-r--r--apps/plugins/puzzles/help/untangle.c2
-rw-r--r--apps/plugins/puzzles/src/Buildscr10
-rw-r--r--apps/plugins/puzzles/src/Makefile3312
-rw-r--r--apps/plugins/puzzles/src/Makefile.in4
-rw-r--r--apps/plugins/puzzles/src/aclocal.m460
-rw-r--r--apps/plugins/puzzles/src/blackbox.c38
-rw-r--r--apps/plugins/puzzles/src/bridges.c72
-rw-r--r--apps/plugins/puzzles/src/combi.c2
-rw-r--r--apps/plugins/puzzles/src/config.log340
-rw-r--r--apps/plugins/puzzles/src/cube.c26
-rw-r--r--apps/plugins/puzzles/src/devel.but126
-rw-r--r--apps/plugins/puzzles/src/dominosa.c24
-rw-r--r--apps/plugins/puzzles/src/drawing.c4
-rw-r--r--apps/plugins/puzzles/src/emcc.c47
-rw-r--r--apps/plugins/puzzles/src/fifteen.c23
-rw-r--r--apps/plugins/puzzles/src/filling.c38
-rw-r--r--apps/plugins/puzzles/src/flip.c28
-rw-r--r--apps/plugins/puzzles/src/flood.c36
-rw-r--r--apps/plugins/puzzles/src/galaxies.c52
-rw-r--r--apps/plugins/puzzles/src/grid.c15
-rw-r--r--apps/plugins/puzzles/src/grid.h4
-rw-r--r--apps/plugins/puzzles/src/gtk.c142
-rw-r--r--apps/plugins/puzzles/src/guess.c63
-rw-r--r--apps/plugins/puzzles/src/inertia.c24
-rw-r--r--apps/plugins/puzzles/src/keen.c39
-rw-r--r--apps/plugins/puzzles/src/latin.c8
-rw-r--r--apps/plugins/puzzles/src/latin.h4
-rw-r--r--apps/plugins/puzzles/src/lightup.c40
-rw-r--r--apps/plugins/puzzles/src/loopy.c40
-rw-r--r--apps/plugins/puzzles/src/magnets.c38
-rw-r--r--apps/plugins/puzzles/src/map.c67
-rw-r--r--apps/plugins/puzzles/src/maxflow.c2
-rw-r--r--apps/plugins/puzzles/src/midend.c507
-rw-r--r--apps/plugins/puzzles/src/mines.c47
-rw-r--r--apps/plugins/puzzles/src/misc.c6
-rw-r--r--apps/plugins/puzzles/src/nestedvm.c34
-rw-r--r--apps/plugins/puzzles/src/net.c37
-rw-r--r--apps/plugins/puzzles/src/netslide.c37
-rw-r--r--apps/plugins/puzzles/src/nullfe.c11
-rw-r--r--apps/plugins/puzzles/src/nullgame.c6
-rw-r--r--apps/plugins/puzzles/src/osx.m47
-rw-r--r--apps/plugins/puzzles/src/palisade.c32
-rw-r--r--apps/plugins/puzzles/src/pattern.c33
-rw-r--r--apps/plugins/puzzles/src/pearl.c56
-rw-r--r--apps/plugins/puzzles/src/pegs.c44
-rw-r--r--apps/plugins/puzzles/src/ps.c7
-rw-r--r--apps/plugins/puzzles/src/puzzles.h106
-rw-r--r--apps/plugins/puzzles/src/range.c24
-rw-r--r--apps/plugins/puzzles/src/rect.c36
-rw-r--r--apps/plugins/puzzles/src/samegame.c39
-rw-r--r--apps/plugins/puzzles/src/signpost.c66
-rw-r--r--apps/plugins/puzzles/src/singles.c35
-rw-r--r--apps/plugins/puzzles/src/sixteen.c36
-rw-r--r--apps/plugins/puzzles/src/slant.c35
-rw-r--r--apps/plugins/puzzles/src/solo.c99
-rw-r--r--apps/plugins/puzzles/src/tents.c42
-rw-r--r--apps/plugins/puzzles/src/towers.c30
-rw-r--r--apps/plugins/puzzles/src/tracks.c71
-rw-r--r--apps/plugins/puzzles/src/twiddle.c46
-rw-r--r--apps/plugins/puzzles/src/undead.c46
-rw-r--r--apps/plugins/puzzles/src/unequal.c55
-rw-r--r--apps/plugins/puzzles/src/unfinished/group.c49
-rw-r--r--apps/plugins/puzzles/src/unfinished/path.c2
-rw-r--r--apps/plugins/puzzles/src/unfinished/separate.c6
-rw-r--r--apps/plugins/puzzles/src/unfinished/slide.c27
-rw-r--r--apps/plugins/puzzles/src/unfinished/sokoban.c18
-rw-r--r--apps/plugins/puzzles/src/unruly.c33
-rw-r--r--apps/plugins/puzzles/src/untangle.c21
-rw-r--r--apps/plugins/puzzles/src/windows.c106
107 files changed, 4782 insertions, 2368 deletions
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 <scott@netsplit.com>.
dnl Copyright © 2012-2015 Dan Nicholson <dbn.lists@gmail.com>
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 <stdio.h>
-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 <stdio.h>
+| #include <assert.h>
+| #include <stdlib.h>
+| #include <time.h>
+| #include <stdarg.h>
+| #include <string.h>
+| #include <errno.h>
+| #include <math.h>
+|
+| #include <sys/time.h>
+| #include <sys/resource.h>
+|
+| #include <gtk/gtk.h>
+| #include <gdk/gdkkeysyms.h>
+|
+| #include <gdk-pixbuf/gdk-pixbuf.h>
+|
+| #include <gdk/gdkx.h>
+| #include <X11/Xlib.h>
+| #include <X11/Xutil.h>
+| #include <X11/Xatom.h>
+|
+| 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, &gtk_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 = "<internal error>";
+ const char *reason = "<internal error>";
#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 <stdarg.h>
-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;
}