diff -r 299a90e28abc -r 87e08a6e4fec includes/lang.php --- a/includes/lang.php Thu Jan 03 18:39:19 2008 -0500 +++ b/includes/lang.php Wed Jan 16 13:55:49 2008 -0500 @@ -185,7 +185,16 @@ global $db, $session, $paths, $template, $plugins; // Common objects if ( !file_exists($file) ) - $db->_die('lang.php - requested JSON file doesn\'t exist'); + { + if ( defined('IN_ENANO_INSTALL') ) + { + die('lang.php - requested JSON file (' . htmlspecialchars($file) . ') doesn\'t exist'); + } + else + { + $db->_die('lang.php - requested JSON file doesn\'t exist'); + } + } $contents = trim(@file_get_contents($file)); if ( empty($contents) ) @@ -206,7 +215,29 @@ } else { - $langdata = enano_json_decode($contents); + // Correct syntax to be nice to the json parser + + // eliminate comments + $contents = preg_replace(array( + // eliminate single line comments in '// ...' form + '#^\s*//(.+)$#m', + // eliminate multi-line comments in '/* ... */' form, at start of string + '#^\s*/\*(.+)\*/#Us', + // eliminate multi-line comments in '/* ... */' form, at end of string + '#/\*(.+)\*/\s*$#Us' + ), '', $contents); + + $contents = preg_replace('/([,\{\[])([\s]*?)([a-z0-9_]+)([\s]*?):/', '\\1\\2"\\3" :', $contents); + + try + { + $langdata = enano_json_decode($contents); + } + catch(Zend_Json_Exception $e) + { + $db->_die('lang.php - Exception caught by JSON parser
' . htmlspecialchars(print_r($e, true)) . '
'); + exit; + } if ( !is_array($langdata) ) $db->_die('lang.php - invalid language file');