From 62e26118f21fd3fc7a2e6289dc68792404e8a92b Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Tue, 10 May 2016 23:10:41 +0300 Subject: [PATCH] Fix #62 - sub-subdirectory sync with -s --- libgrive/src/base/State.cc | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/libgrive/src/base/State.cc b/libgrive/src/base/State.cc index 8323216..c2b3865 100644 --- a/libgrive/src/base/State.cc +++ b/libgrive/src/base/State.cc @@ -51,7 +51,14 @@ State::State( const fs::path& filename, const Val& options ) : { // "-s" is internally converted to an ignore regexp const boost::regex esc( "[.^$|()\\[\\]{}*+?\\\\]" ); - std::string ign = "^(?!"+regex_replace( m_dir, esc, "\\\\&", boost::format_sed )+"(/|$))"; + m_dir = regex_replace( m_dir, esc, "\\\\&", boost::format_sed ); + size_t pos = 0; + while ( ( pos = m_dir.find( '/', pos ) ) != std::string::npos ) + { + m_dir = m_dir.substr( 0, pos ) + "$|" + m_dir; + pos = pos*2 + 3; + } + std::string ign = "^(?!"+m_dir+"(/|$))"; m_ign = ign; } }