+ * Convenience returning <tt>StrMatcher( "[^.]*", Match::GLOB )</tt>
+ * \see \ref dirForEach
+ */
+ const StrMatcher & matchNoDots();
+
+ /**
+ * Invoke callback function \a fnc_r for each entry in directory \a dir_r.
+ *
+ * If \a fnc_r is a \c NULL function \c 0 is returned immediately without even
+ * testing or accessing \a dir_r.
+ *
+ * Otherwise \c ::readdir is used to read the name of every entry in \a dir_r,
+ * omitting \c '.' and \c '..'. \a dir_r and the current entries name are passed
+ * as arguments to \a fnc_r. If \a fnc_r returns \c false processing is aborted.
+ *
+ * @return 0 on success, -1 if aborted by callback, errno > 0 on ::readdir failure.
+ */
+ int dirForEach( const Pathname & dir_r, function<bool(const Pathname &, const char *const)> fnc_r );
+
+ /**
+ * \overload taking a \ref StrMatcher to filter the entries for which \a fnc_r is invoked.
+ *
+ * For convenience a \ref StrMatcher \ref matchNoDots is provided in this namespace.</tt>
+ *
+ * \code
+ * bool cbfnc( const Pathname & dir_r, const char *const str_r )
+ * {
+ * D BG <*< " - " << dir_r/str_r << endl;
+ * return true;
+ * }
+ * // Print no-dot files in "/tmp" via callback
+ * filesystem::dirForEach( "/tmp", filesystem::matchNoDots(), cbfnc );
+ *
+ * // same via lambda
+ * filesystem::dirForEach( "/tmp", filesystem::matchNoDots(),
+ * [](const Pathname & dir_r, const std::string & str_r)->bool
+ * {
+ * DBG << " - " << dir_r/str_r << endl;
+ * return true;
+ * });
+ * \endcode
+ */
+ int dirForEach( const Pathname & dir_r, const StrMatcher & matcher_r, function<bool(const Pathname &, const char *const)> fnc_r );
+
+ /**