search engine: replace gnu regex with boost::regex
This commit is contained in:
@@ -20,7 +20,6 @@
|
|||||||
|
|
||||||
#include <array>
|
#include <array>
|
||||||
#include <iomanip>
|
#include <iomanip>
|
||||||
#include <regex.h>
|
|
||||||
|
|
||||||
#include "display.h"
|
#include "display.h"
|
||||||
#include "global.h"
|
#include "global.h"
|
||||||
@@ -446,85 +445,116 @@ void SearchEngine::Search()
|
|||||||
{
|
{
|
||||||
if (SearchMode != &SearchModes[2]) // match to pattern
|
if (SearchMode != &SearchModes[2]) // match to pattern
|
||||||
{
|
{
|
||||||
regex_t rx;
|
boost::regex rx;
|
||||||
if (!itsConstraints[0].empty())
|
if (!itsConstraints[0].empty())
|
||||||
{
|
{
|
||||||
if (regcomp(&rx, itsConstraints[0].c_str(), REG_ICASE | Config.regex_type) == 0)
|
try
|
||||||
{
|
{
|
||||||
|
rx.assign(itsConstraints[0], Config.regex_type);
|
||||||
any_found =
|
any_found =
|
||||||
!regexec(&rx, it->getArtist().c_str(), 0, 0, 0)
|
!boost::regex_search(it->getArtist(), rx)
|
||||||
|| !regexec(&rx, it->getAlbumArtist().c_str(), 0, 0, 0)
|
|| !boost::regex_search(it->getAlbumArtist(), rx)
|
||||||
|| !regexec(&rx, it->getTitle().c_str(), 0, 0, 0)
|
|| !boost::regex_search(it->getTitle(), rx)
|
||||||
|| !regexec(&rx, it->getAlbum().c_str(), 0, 0, 0)
|
|| !boost::regex_search(it->getAlbum(), rx)
|
||||||
|| !regexec(&rx, it->getName().c_str(), 0, 0, 0)
|
|| !boost::regex_search(it->getName(), rx)
|
||||||
|| !regexec(&rx, it->getComposer().c_str(), 0, 0, 0)
|
|| !boost::regex_search(it->getComposer(), rx)
|
||||||
|| !regexec(&rx, it->getPerformer().c_str(), 0, 0, 0)
|
|| !boost::regex_search(it->getPerformer(), rx)
|
||||||
|| !regexec(&rx, it->getGenre().c_str(), 0, 0, 0)
|
|| !boost::regex_search(it->getGenre(), rx)
|
||||||
|| !regexec(&rx, it->getDate().c_str(), 0, 0, 0)
|
|| !boost::regex_search(it->getDate(), rx)
|
||||||
|| !regexec(&rx, it->getComment().c_str(), 0, 0, 0);
|
|| !boost::regex_search(it->getComment(), rx);
|
||||||
}
|
}
|
||||||
regfree(&rx);
|
catch (boost::bad_expression &) { }
|
||||||
}
|
}
|
||||||
|
|
||||||
if (found && !itsConstraints[1].empty())
|
if (found && !itsConstraints[1].empty())
|
||||||
{
|
{
|
||||||
if (!regcomp(&rx, itsConstraints[1].c_str(), REG_ICASE | Config.regex_type))
|
try
|
||||||
found = !regexec(&rx, it->getArtist().c_str(), 0, 0, 0);
|
{
|
||||||
regfree(&rx);
|
rx.assign(itsConstraints[1], Config.regex_type);
|
||||||
|
found = !boost::regex_search(it->getArtist(), rx);
|
||||||
|
}
|
||||||
|
catch (boost::bad_expression &) { }
|
||||||
}
|
}
|
||||||
if (found && !itsConstraints[2].empty())
|
if (found && !itsConstraints[2].empty())
|
||||||
{
|
{
|
||||||
if (!regcomp(&rx, itsConstraints[2].c_str(), REG_ICASE | Config.regex_type))
|
try
|
||||||
found = !regexec(&rx, it->getAlbumArtist().c_str(), 0, 0, 0);
|
{
|
||||||
regfree(&rx);
|
rx.assign(itsConstraints[2], Config.regex_type);
|
||||||
|
found = !boost::regex_search(it->getAlbumArtist(), rx);
|
||||||
|
}
|
||||||
|
catch (boost::bad_expression &) { }
|
||||||
}
|
}
|
||||||
if (found && !itsConstraints[3].empty())
|
if (found && !itsConstraints[3].empty())
|
||||||
{
|
{
|
||||||
if(!regcomp(&rx, itsConstraints[3].c_str(), REG_ICASE | Config.regex_type))
|
try
|
||||||
found = !regexec(&rx, it->getTitle().c_str(), 0, 0, 0);
|
{
|
||||||
regfree(&rx);
|
rx.assign(itsConstraints[3], Config.regex_type);
|
||||||
|
found = !boost::regex_search(it->getTitle(), rx);
|
||||||
|
}
|
||||||
|
catch (boost::bad_expression &) { }
|
||||||
}
|
}
|
||||||
if (found && !itsConstraints[4].empty())
|
if (found && !itsConstraints[4].empty())
|
||||||
{
|
{
|
||||||
if (!regcomp(&rx, itsConstraints[4].c_str(), REG_ICASE | Config.regex_type))
|
try
|
||||||
found = !regexec(&rx, it->getAlbum().c_str(), 0, 0, 0);
|
{
|
||||||
regfree(&rx);
|
rx.assign(itsConstraints[4], Config.regex_type);
|
||||||
|
found = !boost::regex_search(it->getAlbum(), rx);
|
||||||
|
}
|
||||||
|
catch (boost::bad_expression &) { }
|
||||||
}
|
}
|
||||||
if (found && !itsConstraints[5].empty())
|
if (found && !itsConstraints[5].empty())
|
||||||
{
|
{
|
||||||
if (!regcomp(&rx, itsConstraints[5].c_str(), REG_ICASE | Config.regex_type))
|
try
|
||||||
found = !regexec(&rx, it->getName().c_str(), 0, 0, 0);
|
{
|
||||||
regfree(&rx);
|
rx.assign(itsConstraints[5], Config.regex_type);
|
||||||
|
found = !boost::regex_search(it->getName(), rx);
|
||||||
|
}
|
||||||
|
catch (boost::bad_expression &) { }
|
||||||
}
|
}
|
||||||
if (found && !itsConstraints[6].empty())
|
if (found && !itsConstraints[6].empty())
|
||||||
{
|
{
|
||||||
if (!regcomp(&rx, itsConstraints[6].c_str(), REG_ICASE | Config.regex_type))
|
try
|
||||||
found = !regexec(&rx, it->getComposer().c_str(), 0, 0, 0);
|
{
|
||||||
regfree(&rx);
|
rx.assign(itsConstraints[6], Config.regex_type);
|
||||||
|
found = !boost::regex_search(it->getComposer(), rx);
|
||||||
|
}
|
||||||
|
catch (boost::bad_expression &) { }
|
||||||
}
|
}
|
||||||
if (found && !itsConstraints[7].empty())
|
if (found && !itsConstraints[7].empty())
|
||||||
{
|
{
|
||||||
if (!regcomp(&rx, itsConstraints[7].c_str(), REG_ICASE | Config.regex_type))
|
try
|
||||||
found = !regexec(&rx, it->getPerformer().c_str(), 0, 0, 0);
|
{
|
||||||
regfree(&rx);
|
rx.assign(itsConstraints[7], Config.regex_type);
|
||||||
|
found = !boost::regex_search(it->getPerformer(), rx);
|
||||||
|
}
|
||||||
|
catch (boost::bad_expression &) { }
|
||||||
}
|
}
|
||||||
if (found && !itsConstraints[8].empty())
|
if (found && !itsConstraints[8].empty())
|
||||||
{
|
{
|
||||||
if (!regcomp(&rx, itsConstraints[8].c_str(), REG_ICASE | Config.regex_type))
|
try
|
||||||
found = !regexec(&rx, it->getGenre().c_str(), 0, 0, 0);
|
{
|
||||||
regfree(&rx);
|
rx.assign(itsConstraints[8], Config.regex_type);
|
||||||
|
found = !boost::regex_search(it->getGenre(), rx);
|
||||||
|
}
|
||||||
|
catch (boost::bad_expression &) { }
|
||||||
}
|
}
|
||||||
if (found && !itsConstraints[9].empty())
|
if (found && !itsConstraints[9].empty())
|
||||||
{
|
{
|
||||||
if (!regcomp(&rx, itsConstraints[9].c_str(), REG_ICASE | Config.regex_type))
|
try
|
||||||
found = !regexec(&rx, it->getDate().c_str(), 0, 0, 0);
|
{
|
||||||
regfree(&rx);
|
rx.assign(itsConstraints[9], Config.regex_type);
|
||||||
|
found = !boost::regex_search(it->getDate(), rx);
|
||||||
|
}
|
||||||
|
catch (boost::bad_expression &) { }
|
||||||
}
|
}
|
||||||
if (found && !itsConstraints[10].empty())
|
if (found && !itsConstraints[10].empty())
|
||||||
{
|
{
|
||||||
if (!regcomp(&rx, itsConstraints[10].c_str(), REG_ICASE | Config.regex_type))
|
try
|
||||||
found = !regexec(&rx, it->getComment().c_str(), 0, 0, 0);
|
{
|
||||||
regfree(&rx);
|
rx.assign(itsConstraints[10], Config.regex_type);
|
||||||
|
found = !boost::regex_search(it->getComment(), rx);
|
||||||
|
}
|
||||||
|
catch (boost::bad_expression &) { }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else // match only if values are equal
|
else // match only if values are equal
|
||||||
|
|||||||
Reference in New Issue
Block a user