MAX_DBM_ATTEMPTS) { echo "Cannot open database, giving up."; exit(); } $numattempts++; sleep(1); } return $dbi; } function CloseDataBase($dbi) { return dbmclose($dbi); } // Return hash of page + attributes or default function RetrievePage($dbi, $pagename) { if ($data = dbmfetch($dbi, $pagename)) { // unserialize $data into a hash $pagehash = unserialize($data); return $pagehash; } else { return -1; } } // Either insert or replace a key/value (a page) function InsertPage($dbi, $pagename, $pagehash) { $pagedata = serialize($pagehash); if (dbminsert($dbi, $pagename, $pagedata)) { if (dbmreplace($dbi, $pagename, $pagedata)) { echo "error writing value"; exit(); } } } function IsWikiPage($dbi, $pagename) { return dbmexists($dbi, $pagename); } // setup for title-search function InitTitleSearch($dbi, $search) { $pos['search'] = $search; $pos['key'] = dbmfirstkey($dbi); return $pos; } // iterating through database function TitleSearchNextMatch($dbi, &$pos) { while ($pos['key']) { $page = $pos['key']; $pos['key'] = dbmnextkey($dbi, $pos['key']); if (eregi($pos['search'], $page)) { return $page; } } return 0; } // setup for full-text search function InitFullSearch($dbi, $search) { return InitTitleSearch($dbi, $search); } //iterating through database function FullSearchNextMatch($dbi, &$pos) { while ($pos['key']) { $key = $pos['key']; $pos['key'] = dbmnextkey($dbi, $pos['key']); $pagedata = dbmfetch($dbi, $key); // test the serialized data if (eregi($pos['search'], $pagedata)) { $page['name'] = $key; $page['hash'] = unserialize($pagedata); return $page; } } return 0; } ?>