From 67caae6c32a89e95c0f5a63c681683c5dbeaa22a Mon Sep 17 00:00:00 2001 From: Matthieu Gautier Date: Wed, 20 Jan 2021 16:44:49 +0100 Subject: [PATCH] Use the new libzim's getRandomEntry instead of implementing it ourselves. --- src/reader.cpp | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/src/reader.cpp b/src/reader.cpp index 523c1f766..bf95607f7 100644 --- a/src/reader.cpp +++ b/src/reader.cpp @@ -169,23 +169,11 @@ string Reader::getId() const Entry Reader::getRandomPage() const { - auto mainPagePath = zimArchive->getMainEntry().getPath(); - int watchdog = 42; - - while (--watchdog){ - auto idx = (zim::size_type)((double)rand() / ((double)RAND_MAX + 1) - * zimArchive->getEntryCount()); - auto entry = zimArchive->getEntryByPath(idx); - - if (entry.getPath()==mainPagePath) { - continue; - } - auto item = entry.getItem(true); - if (item.getMimetype() == "text/html") { - return entry; - } + try { + return zimArchive->getRandomEntry(); + } catch(...) { + throw NoEntry(); } - throw NoEntry(); } Entry Reader::getMainPage() const