adding hack to fix setlocale behavior on OpenBSD 3.8+ (#1427512). I don't think
authortokul <tokul@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Sat, 29 Apr 2006 17:22:00 +0000 (17:22 +0000)
committertokul <tokul@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Sat, 29 Apr 2006 17:22:00 +0000 (17:22 +0000)
that e-a-department (obsd) cares about it.

git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@11097 7612ce4b-ef26-0410-bec9-ea0150e637f0

ChangeLog
include/languages.php

index 30557ce..5ff9693 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -43,6 +43,7 @@ Version 1.5.2 - CVS
   - Fixed automatic mailbox creation in left_main.php. 1.5.1 mailbox caching 
     broke detection of unsubscribed special folders.
   - Undo extra sanitizing in decodeHeader() function (#1460638).
+  - Added workaround for broken OpenBSD 3.8+ setlocale() function (#1427512).
 
 Version 1.5.1 (branched on 2006-02-12)
 --------------------------------------
index 342b933..97eeb09 100644 (file)
@@ -72,11 +72,11 @@ function sq_textdomain($domain) {
  * @see http://www.php.net/setlocale
  */
 function sq_setlocale($category,$locale) {
-    // string with only one locale
-    if (is_string($locale))
-        return setlocale($category,$locale);
-
-    if (! check_php_version(4,3)) {
+    if (is_string($locale)) {
+        // string with only one locale
+        $ret = setlocale($category,$locale);
+    } elseif (! check_php_version(4,3)) {
+        // older php version (second setlocale argument must be string)
         $ret=false;
         $index=0;
         while ( ! $ret && $index<count($locale)) {
@@ -87,6 +87,17 @@ function sq_setlocale($category,$locale) {
         // php 4.3.0 or better, use entire array
         $ret=setlocale($category,$locale);
     }
+
+    /* safety checks */
+    if (preg_match("/^.*\/.*\/.*\/.*\/.*\/.*$/",$ret)) {
+        /**
+         * Welcome to We-Don't-Follow-Own-Fine-Manual department
+         * OpenBSD 3.8, 3.9-current and maybe later versions 
+         * return invalid response to setlocale command.
+         * SM bug report #1427512.
+         */
+        $ret = false;
+    }
     return $ret;
 }