From e88c4704a6e5b1de286572acb8827f466f20c25c Mon Sep 17 00:00:00 2001
From: "jan.nijtmans" <nijtmans@users.sourceforge.net>
Date: Thu, 14 Feb 2013 09:38:11 +0000
Subject: Suggested fix for bug 3604576: msgcat -1.5.0.tm error on windows XP,
 inclusive bump to version 1.5.1. Changelog entry still missing.

---
 doc/msgcat.n                |  2 +-
 library/msgcat/msgcat.tcl   | 33 +++++++++++++++++----------------
 library/msgcat/pkgIndex.tcl |  2 +-
 tests/msgcat.test           |  4 ++--
 unix/Makefile.in            |  4 ++--
 win/Makefile.in             |  4 ++--
 6 files changed, 25 insertions(+), 24 deletions(-)

diff --git a/doc/msgcat.n b/doc/msgcat.n
index 57fbb78..47b6bf7 100644
--- a/doc/msgcat.n
+++ b/doc/msgcat.n
@@ -13,7 +13,7 @@ msgcat \- Tcl message catalog
 .SH SYNOPSIS
 \fBpackage require Tcl 8.5\fR
 .sp
-\fBpackage require msgcat 1.5.0\fR
+\fBpackage require msgcat 1.5\fR
 .sp
 \fB::msgcat::mc \fIsrc-string\fR ?\fIarg arg ...\fR?
 .sp
diff --git a/library/msgcat/msgcat.tcl b/library/msgcat/msgcat.tcl
index 112507a..fbb9730 100644
--- a/library/msgcat/msgcat.tcl
+++ b/library/msgcat/msgcat.tcl
@@ -13,7 +13,7 @@
 package require Tcl 8.5
 # When the version number changes, be sure to update the pkgIndex.tcl file,
 # and the installation directory in the Makefiles.
-package provide msgcat 1.5.0
+package provide msgcat 1.5.1
 
 namespace eval msgcat {
     namespace export mc mcload mclocale mcmax mcmset mcpreferences mcset \
@@ -550,23 +550,24 @@ proc msgcat::Init {} {
     # Those are translated to local strings.
     # Examples: de-CH -> de_ch, sr-Latn-CS -> sr_cs@latin, es-419 -> es
     #
-    set key {HKEY_CURRENT_USER\Control Panel\International}
-    if {([registry values $key "LocaleName"] ne "")
-	    && [regexp {^([a-z]{2,3})(?:-([a-z]{4}))?(?:-([a-z]{2}))?(?:-.+)?$}\
-	    [string tolower [registry get $key "LocaleName"]] match locale\
-	    script territory]} {
-	if {"" ne $territory} {
-	    append locale _ $territory
-	}
-	set modifierDict [dict create latn latin cyrl cyrillic]
-	if {[dict exists $modifierDict $script]} {
-	    append locale @ [dict get $modifierDict $script]
-	}
-	if {![catch {
+    if {[catch {
+	set key {HKEY_CURRENT_USER\Control Panel\International}
+	if {([registry values $key "LocaleName"] ne "")
+    		&& [regexp {^([a-z]{2,3})(?:-([a-z]{4}))?(?:-([a-z]{2}))?(?:-.+)?$}\
+    		[string tolower [registry get $key "LocaleName"]] match locale\
+    		script territory]} {
+	    if {"" ne $territory} {
+		append locale _ $territory
+	    }
+	    set modifierDict [dict create latn latin cyrl cyrillic]
+	    if {[dict exists $modifierDict $script]} {
+		append locale @ [dict get $modifierDict $script]
+	    }
 	    mclocale [ConvertLocale $locale]
-	}]} {
-	    return
 	}
+    }]} {
+	mclocale C
+	return
     }
 
     # then check key locale which contains a numerical language ID
diff --git a/library/msgcat/pkgIndex.tcl b/library/msgcat/pkgIndex.tcl
index 832bf81..3fdb25a 100644
--- a/library/msgcat/pkgIndex.tcl
+++ b/library/msgcat/pkgIndex.tcl
@@ -1,2 +1,2 @@
 if {![package vsatisfies [package provide Tcl] 8.5]} {return}
-package ifneeded msgcat 1.5.0 [list source [file join $dir msgcat.tcl]]
+package ifneeded msgcat 1.5.1 [list source [file join $dir msgcat.tcl]]
diff --git a/tests/msgcat.test b/tests/msgcat.test
index 70a7af2..050b592 100644
--- a/tests/msgcat.test
+++ b/tests/msgcat.test
@@ -17,8 +17,8 @@ if {[catch {package require tcltest 2}]} {
     puts stderr "Skipping tests in [info script].  tcltest 2 required."
     return
 }
-if {[catch {package require msgcat 1.5.0}]} {
-    puts stderr "Skipping tests in [info script].  No msgcat 1.5.0 found to test."
+if {[catch {package require msgcat 1.5}]} {
+    puts stderr "Skipping tests in [info script].  No msgcat 1.5 found to test."
     return
 }
 
diff --git a/unix/Makefile.in b/unix/Makefile.in
index afde755..7a861dd 100644
--- a/unix/Makefile.in
+++ b/unix/Makefile.in
@@ -773,8 +773,8 @@ install-libraries: libraries $(INSTALL_TZDATA) install-msgs
 	    do \
 	    $(INSTALL_DATA) $$i "$(SCRIPT_INSTALL_DIR)"/opt0.4; \
 	    done;
-	@echo "Installing package msgcat 1.5.0 as a Tcl Module";
-	@$(INSTALL_DATA) $(TOP_DIR)/library/msgcat/msgcat.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.5/msgcat-1.5.0.tm;
+	@echo "Installing package msgcat 1.5.1 as a Tcl Module";
+	@$(INSTALL_DATA) $(TOP_DIR)/library/msgcat/msgcat.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.5/msgcat-1.5.1.tm;
 	@echo "Installing package tcltest 2.3.5 as a Tcl Module";
 	@$(INSTALL_DATA) $(TOP_DIR)/library/tcltest/tcltest.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.5/tcltest-2.3.5.tm;
 
diff --git a/win/Makefile.in b/win/Makefile.in
index e61fed8..3f8b02f 100644
--- a/win/Makefile.in
+++ b/win/Makefile.in
@@ -649,8 +649,8 @@ install-libraries: libraries install-tzdata install-msgs
 	    do \
 	    $(COPY) "$$j" "$(SCRIPT_INSTALL_DIR)/opt0.4"; \
 	    done;
-	@echo "Installing package msgcat 1.5.0 as a Tcl Module";
-	@$(COPY) $(ROOT_DIR)/library/msgcat/msgcat.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.5/msgcat-1.5.0.tm;
+	@echo "Installing package msgcat 1.5.1 as a Tcl Module";
+	@$(COPY) $(ROOT_DIR)/library/msgcat/msgcat.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.5/msgcat-1.5.1.tm;
 	@echo "Installing package tcltest 2.3.5 as a Tcl Module";
 	@$(COPY) $(ROOT_DIR)/library/tcltest/tcltest.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.5/tcltest-2.3.5.tm;
 	@echo "Installing package platform 1.0.11 as a Tcl Module";
-- 
cgit v0.12


From 2ba17918f72d6f2f0042928facbc0563a52c3b54 Mon Sep 17 00:00:00 2001
From: oehhar <harald.oehlmann@elmicron.de>
Date: Thu, 14 Feb 2013 11:09:31 +0000
Subject: Finer granulated catch

---
 library/msgcat/msgcat.tcl | 30 +++++++++++++-----------------
 1 file changed, 13 insertions(+), 17 deletions(-)

diff --git a/library/msgcat/msgcat.tcl b/library/msgcat/msgcat.tcl
index fbb9730..97ad4fa 100644
--- a/library/msgcat/msgcat.tcl
+++ b/library/msgcat/msgcat.tcl
@@ -550,24 +550,20 @@ proc msgcat::Init {} {
     # Those are translated to local strings.
     # Examples: de-CH -> de_ch, sr-Latn-CS -> sr_cs@latin, es-419 -> es
     #
-    if {[catch {
-	set key {HKEY_CURRENT_USER\Control Panel\International}
-	if {([registry values $key "LocaleName"] ne "")
-    		&& [regexp {^([a-z]{2,3})(?:-([a-z]{4}))?(?:-([a-z]{2}))?(?:-.+)?$}\
-    		[string tolower [registry get $key "LocaleName"]] match locale\
-    		script territory]} {
-	    if {"" ne $territory} {
-		append locale _ $territory
-	    }
-	    set modifierDict [dict create latn latin cyrl cyrillic]
-	    if {[dict exists $modifierDict $script]} {
-		append locale @ [dict get $modifierDict $script]
-	    }
-	    mclocale [ConvertLocale $locale]
+    set key {HKEY_CURRENT_USER\Control Panel\International}
+    if { ![catch {registry get $key "LocaleName"} localeName]
+	    && [regexp {^([a-z]{2,3})(?:-([a-z]{4}))?(?:-([a-z]{2}))?(?:-.+)?$}\
+	    [string tolower $localeName] match locale script territory]} {
+	if {"" ne $territory} {
+	    append locale _ $territory
+	}
+	set modifierDict [dict create latn latin cyrl cyrillic]
+	if {[dict exists $modifierDict $script]} {
+	    append locale @ [dict get $modifierDict $script]
+	}
+	if {![catch { mclocale [ConvertLocale $locale] }]} {
+	    return
 	}
-    }]} {
-	mclocale C
-	return
     }
 
     # then check key locale which contains a numerical language ID
-- 
cgit v0.12