--- tkchat.vfs/bin/tkchat.tcl	2005-10-31 23:27:59.000000000 +0100
+++ tkchat-patched.tcl	2005-10-31 23:32:28.000000000 +0100
@@ -1158,34 +1158,52 @@
     # this code from  http://purl.org/mini/tcl/557.html
     switch -- $tcl_platform(platform) {
 	"unix" {
-	    expr {
-		[info exists Options(BROWSER)]
-		|| [findExecutable mozilla		Options(BROWSER)]
-		|| [findExecutable mozilla-firefox	Options(BROWSER)]
-		|| [findExecutable mozilla-firebird	Options(BROWSER)]
-		|| [findExecutable konqueror		Options(BROWSER)]
-		|| [findExecutable netscape		Options(BROWSER)]
-		|| [findExecutable iexplorer		Options(BROWSER)]
-		|| [findExecutable lynx			Options(BROWSER)]
-	    }
+	    # special case for MacOS X:
+	    if {$tcl_platform(os) == "Darwin"} {
+		    # assume all goes well:
+		    set notOK 0
+		    if {[info exists Options(BROWSER)]} {
+			    set noOK [catch {exec open -a $Options(BROWSER) $url} emsg]
+			    
+		    }
+		    if {$notOK} {
+		    	# Safari should always be there:
+			set notOK [catch {exec open -a Safari $url} emsg]
+			if {$notOK} {
+				tk_messageBox -message \
+					"Error displaying $url in browser\n$emsg"
+			}
+		    }
+	    } else {
+		expr {
+		    [info exists Options(BROWSER)]
+		    || [findExecutable mozilla		Options(BROWSER)]
+		    || [findExecutable mozilla-firefox	Options(BROWSER)]
+		    || [findExecutable mozilla-firebird	Options(BROWSER)]
+		    || [findExecutable konqueror		Options(BROWSER)]
+		    || [findExecutable netscape		Options(BROWSER)]
+		    || [findExecutable iexplorer		Options(BROWSER)]
+		    || [findExecutable lynx			Options(BROWSER)]
+		}
 
-	    # lynx can also output formatted text to a variable
-	    # with the -dump option, as a last resort:
-	    # set formatted_text [ exec lynx -dump $url ] - PSE
-	    #
-	    # -remote argument might need formatting as a command
-	    # 		Try that first
-	    if { [catch {
-		exec $Options(BROWSER) -remote openURL($url) 2> /dev/null
-	    }] } then {
-		# Try -remote with raw URL argument
+		# lynx can also output formatted text to a variable
+		# with the -dump option, as a last resort:
+		# set formatted_text [ exec lynx -dump $url ] - PSE
+		#
+		# -remote argument might need formatting as a command
+		# 		Try that first
 		if { [catch {
-		    exec $Options(BROWSER) -remote $url 2> /dev/null
-		}]} then {
-		    # perhaps browser doesn't understand -remote flag
-		    if { [catch { exec $Options(BROWSER) $url & } emsg] } {
-			tk_messageBox -message \
-				"Error displaying $url in browser\n$emsg"
+		    exec $Options(BROWSER) -remote openURL($url) 2> /dev/null
+		}] } then {
+		    # Try -remote with raw URL argument
+		    if { [catch {
+			exec $Options(BROWSER) -remote $url 2> /dev/null
+		    }]} then {
+			# perhaps browser doesn't understand -remote flag
+			if { [catch { exec $Options(BROWSER) $url & } emsg] } {
+			    tk_messageBox -message \
+				    "Error displaying $url in browser\n$emsg"
+			}
 		    }
 		}
 	    }
