diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_configfilelexer.php b/gosa-core/include/smarty/sysplugins/smarty_internal_configfilelexer.php
index 3c4249c895b510b3327cc4d5636b373ef34f0488..aad90af8bf8271fc95bc600b1818d56a7d2c792f 100644 (file)
/**
* Smarty Internal Plugin Configfilelexer
*
-* This is the lexer to break the config file source into tokens
+* This is the lexer to break the config file source into tokens
* @package Smarty
* @subpackage Config
-* @author Uwe Tews
+* @author Uwe Tews
*/
-
/**
* Smarty Internal Plugin Configfilelexer
*/
public $node;
public $line;
private $state = 1;
- public $smarty_token_names = array ( // Text for parser error messages
- );
-
-
+ public $smarty_token_names = array ( // Text for parser error messages
+ );
+
+
function __construct($data, $smarty)
{
// set instance object
- self::instance($this);
+ self::instance($this);
$this->data = $data . "\n"; //now all lines are \n-terminated
$this->counter = 0;
$this->line = 1;
- $this->smarty = $smarty;
- }
+ $this->smarty = $smarty;
+ $this->mbstring_overload = ini_get('mbstring.func_overload') & 2;
+ }
public static function &instance($new_instance = null)
{
static $instance = null;
if (isset($new_instance) && is_object($new_instance))
$instance = $new_instance;
return $instance;
- }
+ }
if ($this->counter >= strlen($this->data)) {
return false; // end of input
}
- $yy_global_pattern = "/^(#)|^(\\[)|^(\\])|^(=)|^([ \t\r]+)|^(\n)|^([0-9]*[a-zA-Z_]\\w*)/";
+ $yy_global_pattern = "/\G(#|;)|\G(\\[)|\G(\\])|\G(=)|\G([ \t\r]+)|\G(\n)|\G([0-9]*[a-zA-Z_]\\w*)/iS";
do {
- if (preg_match($yy_global_pattern, substr($this->data, $this->counter), $yymatches)) {
+ if ($this->mbstring_overload ? preg_match($yy_global_pattern, substr($this->data, $this->counter), $yymatches) : preg_match($yy_global_pattern,$this->data, $yymatches, null, $this->counter)) {
$yysubmatches = $yymatches;
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
if (!count($yymatches)) {
throw new Exception('Error: lexing failed because a rule matched' .
- 'an empty string. Input "' . substr($this->data,
+ ' an empty string. Input "' . substr($this->data,
$this->counter, 5) . '... state START');
}
next($yymatches); // skip global match
3 => 0,
4 => 0,
5 => 0,
- 6 => 0,
- 7 => 0,
+ 6 => 1,
8 => 0,
9 => 0,
+ 10 => 0,
);
if ($this->counter >= strlen($this->data)) {
return false; // end of input
}
- $yy_global_pattern = "/^([ \t\r]+)|^(\\d+\\.\\d+(?=[ \t\r]*[\n#]))|^(\\d+(?=[ \t\r]*[\n#]))|^('[^'\\\\]*(?:\\\\.[^'\\\\]*)*'(?=[ \t\r]*[\n#]))|^(\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\"(?=[ \t\r]*[\n#]))|^(\"\"\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\"\"\"(?=[ \t\r]*[\n#]))|^([a-zA-Z]+(?=[ \t\r]*[\n#]))|^([^\n]+?(?=[ \t\r]*\n))|^(\n)/";
+ $yy_global_pattern = "/\G([ \t\r]+)|\G(\\d+\\.\\d+(?=[ \t\r]*[\n#;]))|\G(\\d+(?=[ \t\r]*[\n#;]))|\G('[^'\\\\]*(?:\\\\.[^'\\\\]*)*'(?=[ \t\r]*[\n#;]))|\G(\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\"(?=[ \t\r]*[\n#;]))|\G(\"\"\"(\\w+|[^\"]|\\\\\"|\"{1,2}[^\"])*\"\"\"(?=[ \t\r]*[\n#;]))|\G([a-zA-Z]+(?=[ \t\r]*[\n#;]))|\G([^\n]+?(?=[ \t\r]*\n))|\G(\n)/iS";
do {
- if (preg_match($yy_global_pattern, substr($this->data, $this->counter), $yymatches)) {
+ if ($this->mbstring_overload ? preg_match($yy_global_pattern, substr($this->data, $this->counter), $yymatches) : preg_match($yy_global_pattern,$this->data, $yymatches, null, $this->counter)) {
$yysubmatches = $yymatches;
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
if (!count($yymatches)) {
throw new Exception('Error: lexing failed because a rule matched' .
- 'an empty string. Input "' . substr($this->data,
+ ' an empty string. Input "' . substr($this->data,
$this->counter, 5) . '... state VALUE');
}
next($yymatches); // skip global match
$this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_DOUBLE_QUOTED_STRING;
$this->yypopstate();
}
- function yy_r2_7($yy_subpatterns)
+ function yy_r2_8($yy_subpatterns)
{
if (!$this->smarty->config_booleanize || !in_array(strtolower($this->value), Array("true", "false", "on", "off", "yes", "no")) ) {
$this->yypopstate();
}
}
- function yy_r2_8($yy_subpatterns)
+ function yy_r2_9($yy_subpatterns)
{
$this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
$this->yypopstate();
}
- function yy_r2_9($yy_subpatterns)
+ function yy_r2_10($yy_subpatterns)
{
$this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
if ($this->counter >= strlen($this->data)) {
return false; // end of input
}
- $yy_global_pattern = "/^([^\n]+?(?=[ \t\r]*\n))/";
+ $yy_global_pattern = "/\G([^\n]+?(?=[ \t\r]*\n))/iS";
do {
- if (preg_match($yy_global_pattern, substr($this->data, $this->counter), $yymatches)) {
+ if ($this->mbstring_overload ? preg_match($yy_global_pattern, substr($this->data, $this->counter), $yymatches) : preg_match($yy_global_pattern,$this->data, $yymatches, null, $this->counter)) {
$yysubmatches = $yymatches;
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
if (!count($yymatches)) {
throw new Exception('Error: lexing failed because a rule matched' .
- 'an empty string. Input "' . substr($this->data,
+ ' an empty string. Input "' . substr($this->data,
$this->counter, 5) . '... state NAKED_STRING_VALUE');
}
next($yymatches); // skip global match
if ($this->counter >= strlen($this->data)) {
return false; // end of input
}
- $yy_global_pattern = "/^([ \t\r]+)|^([^\n]+?(?=[ \t\r]*\n))|^(\n)/";
+ $yy_global_pattern = "/\G([ \t\r]+)|\G([^\n]+?(?=[ \t\r]*\n))|\G(\n)/iS";
do {
- if (preg_match($yy_global_pattern, substr($this->data, $this->counter), $yymatches)) {
+ if ($this->mbstring_overload ? preg_match($yy_global_pattern, substr($this->data, $this->counter), $yymatches) : preg_match($yy_global_pattern,$this->data, $yymatches, null, $this->counter)) {
$yysubmatches = $yymatches;
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
if (!count($yymatches)) {
throw new Exception('Error: lexing failed because a rule matched' .
- 'an empty string. Input "' . substr($this->data,
+ ' an empty string. Input "' . substr($this->data,
$this->counter, 5) . '... state COMMENT');
}
next($yymatches); // skip global match
if ($this->counter >= strlen($this->data)) {
return false; // end of input
}
- $yy_global_pattern = "/^(\\.)|^(.*?(?=[\.=[\]\r\n]))/";
+ $yy_global_pattern = "/\G(\\.)|\G(.*?(?=[\.=[\]\r\n]))/iS";
do {
- if (preg_match($yy_global_pattern, substr($this->data, $this->counter), $yymatches)) {
+ if ($this->mbstring_overload ? preg_match($yy_global_pattern, substr($this->data, $this->counter), $yymatches) : preg_match($yy_global_pattern,$this->data, $yymatches, null, $this->counter)) {
$yysubmatches = $yymatches;
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
if (!count($yymatches)) {
throw new Exception('Error: lexing failed because a rule matched' .
- 'an empty string. Input "' . substr($this->data,
+ ' an empty string. Input "' . substr($this->data,
$this->counter, 5) . '... state SECTION');
}
next($yymatches); // skip global match
$this->yypopstate();
}
-}
+}
?>
\ No newline at end of file