static int pipefds[2];
static const char *stdout_path, *stderr_path; // for SIGUSR1
static sig_atomic_t worker_needs_reopen;
+static Xapian::FieldProcessor *thread_fp;
// PublicInbox::Search and PublicInbox::CodeSearch generate these:
static void mail_rp_init(void);
if (req->code_search) {
qp_init_code_search(srch->qp); // CodeSearch.pm
} else {
- Xapian::FieldProcessor *fp;
-
qp_init_mail_search(srch->qp); // Search.pm
- // n.b. ->release() starts Xapian refcounting
- fp = (new ThreadFieldProcessor(*srch->qp))->release();
- srch->qp->add_boolean_prefix("thread", fp);
+ srch->qp->add_boolean_prefix("thread", thread_fp);
}
}
warnx("W: RLIMIT_NOFILE=%ld too low\n", my_fd_max);
my_fd_max -= 64;
+ thread_fp = new ThreadFieldProcessor();
xh_date_init();
mail_rp_init();
code_nrp_init();
// Disclaimer: Eric doesn't know C++
class ThreadFieldProcessor : public Xapian::FieldProcessor {
-protected:
- Xapian::QueryParser &qp;
public:
- ThreadFieldProcessor(Xapian::QueryParser &qp_) : qp(qp_) {};
Xapian::Query operator()(const std::string &str);
};