summaryrefslogtreecommitdiff
path: root/inc/indexer.php
diff options
context:
space:
mode:
authorMichael Hamann <michael@content-space.de>2011-02-24 23:27:24 +0100
committerMichael Hamann <michael@content-space.de>2011-02-24 23:27:24 +0100
commitf77fc90de1e477b721442757cd7413f91cccc044 (patch)
tree2abb734dacf39419b96b6b70c65115de57228fc3 /inc/indexer.php
parentb8c040db1fdc0eee80963e57d95a15fd3813912d (diff)
parentbd07158f0f2569ae470f980dd49d69b7f1fd2c49 (diff)
downloadrpg-f77fc90de1e477b721442757cd7413f91cccc044.tar.gz
rpg-f77fc90de1e477b721442757cd7413f91cccc044.tar.bz2
Merge branch 'master' into indexer_rewrite
Conflicts: inc/fulltext.php inc/indexer.php lib/exe/indexer.php
Diffstat (limited to 'inc/indexer.php')
-rw-r--r--inc/indexer.php29
1 files changed, 23 insertions, 6 deletions
diff --git a/inc/indexer.php b/inc/indexer.php
index 6b21797af..5aa321d46 100644
--- a/inc/indexer.php
+++ b/inc/indexer.php
@@ -27,6 +27,10 @@ define('IDX_ASIAN2','['.
'\x{30FD}-\x{31EF}\x{3200}-\x{D7AF}'.
'\x{F900}-\x{FAFF}'. // CJK Compatibility Ideographs
'\x{FE30}-\x{FE4F}'. // CJK Compatibility Forms
+ "\xF0\xA0\x80\x80-\xF0\xAA\x9B\x9F". // CJK Extension B
+ "\xF0\xAA\x9C\x80-\xF0\xAB\x9C\xBF". // CJK Extension C
+ "\xF0\xAB\x9D\x80-\xF0\xAB\xA0\x9F". // CJK Extension D
+ "\xF0\xAF\xA0\x80-\xF0\xAF\xAB\xBF". // CJK Compatibility Supplement
']');
define('IDX_ASIAN3','['. // Hiragana/Katakana (can be two characters)
'\x{3042}\x{3044}\x{3046}\x{3048}'.
@@ -423,7 +427,14 @@ class Doku_Indexer {
if (!is_null($asia)) $text = $asia; // recover from regexp falure
}
}
- $text = strtr($text, "\r\n\t", ' ');
+ $text = strtr($text,
+ array(
+ "\r" => ' ',
+ "\n" => ' ',
+ "\t" => ' ',
+ "\xC2\xAD" => '', //soft-hyphen
+ )
+ );
if (preg_match('/[^0-9A-Za-z ]/u', $text))
$text = utf8_stripspecials($text, ' ', '\._\-:'.$wc);
@@ -772,14 +783,20 @@ class Doku_Indexer {
private function _lock() {
global $conf;
$status = true;
+ $run = 0;
$lock = $conf['lockdir'].'/_indexer.lock';
while (!@mkdir($lock, $conf['dmode'])) {
usleep(50);
- if (time() - @filemtime($lock) > 60*5) {
- // looks like a stale lock, remove it
- @rmdir($lock);
- $status = "stale lock removed";
- } else {
+ if(is_dir($lock) && time()-@filemtime($lock) > 60*5){
+ // looks like a stale lock - remove it
+ if (!@rmdir($lock)) {
+ $status = "removing the stale lock failed";
+ return false;
+ } else {
+ $status = "stale lock removed";
+ }
+ }elseif($run++ == 1000){
+ // we waited 5 seconds for that lock
return false;
}
}