$OpenBSD: patch-vncserver,v 1.5 2009/10/26 17:33:58 sthen Exp $
--- vncserver.orig	Thu Feb 12 15:27:18 2009
+++ vncserver	Mon Oct 26 06:53:56 2009
@@ -66,13 +66,23 @@ unless ($xauthorityFile) {
     }
 }
 
+$defaultFontPath
+    = (
+       "/usr/X11R6/lib/X11/fonts/Type1/,".
+       "/usr/X11R6/lib/X11/fonts/Speedo/,".
+       "/usr/X11R6/lib/X11/fonts/cyrillic/,".
+       "/usr/X11R6/lib/X11/fonts/misc/,".
+       "/usr/X11R6/lib/X11/fonts/75dpi/,".
+       "/usr/X11R6/lib/X11/fonts/100dpi/"
+       );
+
 chop($host = `uname -n`);
 
 
 # Check command line options
 
 &ParseOptions("-geometry",1,"-depth",1,"-pixelformat",1,"-name",1,"-kill",1,
-	      "-help",0,"-h",0,"--help",0);
+	      "-help",0,"-h",0,"--help",0,"-fp",1);
 
 &Usage() if ($opt{'-help'} || $opt{'-h'} || $opt{'--help'});
 
@@ -95,6 +105,25 @@ if ($opt{'-pixelformat'}) {
 
 &CheckGeometryAndDepth();
 
+# bmah: Construct font path.  Starting from a list of possible font directories
+# bmah: make up the set of those that have fonts.dir files we can read.
+# bmah: Probably there are way better methods of doing this.
+
+if (!$opt{'-fp'}) {
+    $opt{'-fp'} = $defaultFontPath;
+}
+
+@fontPathElements = split(/,/, "$opt{'-fp'}");
+
+$fontPath = '';
+
+foreach $i (0.."$#fontPathElements") {
+    if (-r "$fontPathElements[$i]/fonts.dir") {
+      $fontPath .= "$fontPathElements[$i],";
+    }
+}
+chop $fontPath;
+
 if ($opt{'-name'}) {
     $desktopName = $opt{'-name'};
 }
@@ -226,6 +255,7 @@ if (-e "/tmp/.X11-unix/X$displayNumber") {
     $ENV{DISPLAY}= "$host:$displayNumber";
 }
 $ENV{VNCDESKTOP}= $desktopName;
+$ENV{XAUTHORITY}= $xauthorityFile;
 
 system("$xstartup >> " . &quotedString($desktopLog) . " 2>&1 &");
 
@@ -237,6 +267,8 @@ exit;
 # CheckGeometryAndDepth simply makes sure that the geometry and depth values
 # are sensible.
 #
+# bmah: Bring in the fontpath we computed earlier.
+$cmd .= " -fp $fontPath";
 
 sub CheckGeometryAndDepth
 {
