--- a/src/common/rclconfig.h
+++ b/src/common/rclconfig.h
@@ -22,6 +22,7 @@
#include <set>
#include <utility>
#include <map>
+#include "unordered_defs.h"
using std::string;
using std::vector;
@@ -48,7 +49,8 @@
int savedkeydirgen;
string savedvalue;
- void init(RclConfig *rconf, ConfNull *cnf, const string& nm);
+ ParamStale(RclConfig *rconf, const string& nm);
+ void init(ConfNull *cnf);
bool needrecompute();
};
@@ -75,6 +77,19 @@
// if this was specified on the command line and passed through
// argcnf
RclConfig(const string *argcnf = 0);
+
+ RclConfig(const RclConfig &r)
+ : m_stpsuffstate(this, "recoll_noindex"),
+ m_skpnstate(this, "skippedNames"),
+ m_rmtstate(this, "indexedmimetypes"),
+ m_xmtstate(this, "excludedmimetypes"),
+ m_mdrstate(this, "metadatacmds") {
+ initFrom(r);
+ }
+
+ ~RclConfig() {
+ freeAll();
+ }
// Return a writable clone of the main config. This belongs to the
// caller (must delete it when done)
@@ -226,15 +241,21 @@
/** fields: get field prefix from field name */
bool getFieldTraits(const string& fldname, const FieldTraits **) const;
+
const set<string>& getStoredFields() const {return m_storedFields;}
+
set<string> getIndexedFields() const;
+
/** Get canonic name for possible alias */
string fieldCanon(const string& fld) const;
+
/** Get xattr name to field names translations */
const map<string, string>& getXattrToField() const {return m_xattrtofld;}
+
/** Get value of a parameter inside the "fields" file. Only some filters
- use this (ie: mh_mail). The information specific to a given filter
- is typically stored in a separate section(ie: [mail]) */
+ * use this (ie: mh_mail). The information specific to a given filter
+ * is typically stored in a separate section(ie: [mail])
+ */
vector<string> getFieldSectNames(const string &sk, const char* = 0) const;
bool getFieldConfParam(const string &name, const string &sk, string &value)
const;
@@ -272,13 +293,6 @@
return o_origcwd;
}
- ~RclConfig() {
- freeAll();
- }
-
- RclConfig(const RclConfig &r) {
- initFrom(r);
- }
RclConfig& operator=(const RclConfig &r) {
if (this != &r) {
freeAll();
@@ -326,7 +340,11 @@
static string o_localecharset;
// Limiting set of mime types to be processed. Normally empty.
ParamStale m_rmtstate;
- set<string> m_restrictMTypes;
+ STD_UNORDERED_SET<string> m_restrictMTypes;
+ // Exclusion set of mime types. Normally empty
+ ParamStale m_xmtstate;
+ STD_UNORDERED_SET<string> m_excludeMTypes;
+
vector<pair<int, int> > m_thrConf;
// Same idea with the metadata-gathering external commands,