This patch adds two improvements to view.pike. The first one is to
give an error message if the path to a new engine does not even point
to a file, instead of crashing. The second one tweaks the heuristics
to find a suitable font, looking for the shortest filename rather than
the shortest full path. It would be nice to have a more proper
solution there, but this is at least an improvement on one computer
I'm using. Hopefully it doesn't make things worse for anyone else.

- revised heuristics to find a font file in view.pike
- avoid crashing on bad engine paths when starting a new engine in
  view.pike 

/Gunnar

Index: regression/view.pike
===================================================================
RCS file: /cvsroot/gnugo/gnugo/regression/view.pike,v
retrieving revision 1.15
diff -u -r1.15 view.pike
--- regression/view.pike        7 Jan 2005 22:36:49 -0000       1.15
+++ regression/view.pike        13 Mar 2005 20:06:26 -0000
@@ -488,15 +488,21 @@
        werror("and point to it from the environment variable GNUGO_FONT.\n");
        return 0;
     }
+
+    // Compute the length of the filename proper, i.e. without the
+    // path to the file.
+    int fontlength(string s) {
+       return sizeof((s / "/")[-1]);
+    };
     
     // Choose the one with shortest name (arbitrary but may avoid e.g.
     // italic fonts).
     font_filename = font_files[0];
     foreach (font_files[1..], string font_file)
     {
-       if (sizeof(font_filename) > sizeof(font_file))
+       if (fontlength(font_filename) > fontlength(font_file))
            font_filename = font_file;
-       else if (sizeof(font_filename) == sizeof(font_file)
+       else if (fontlength(font_filename) == fontlength(font_file)
                 && has_value(lower_case(font_filename), "mono"))
            font_filename = font_file;
     }
@@ -1588,6 +1594,12 @@
     static void select_new_engine()
     {
        string new_engine_path = engine_path_entry->get_text();
+       if (!Stdio.is_file(new_engine_path)) {
+           viewers->clist->clear();
+           viewers->clist->append(({"The engine path does not point to a 
file.\n", "", ""}));
+           return;
+       }
+       
        SimpleGtp new_engine = SimpleGtp((new_engine_path + " --quiet --mode 
gtp -w -t -d0x101840") / " ");
        if (!new_engine)
            werror("Failed to start new engine.\n");



_______________________________________________
gnugo-devel mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/gnugo-devel

Reply via email to