1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| |
#include "database-private.h"
#include "getdate-proc.h"
#include "parse-time-string.h"
/* see *ValueRangeProcessor in xapian-core/api/valuerangeproc.cc */
Xapian::valueno
GetDateValueRangeProcessor::operator() (std::string &begin, std::string &end)
{
time_t t, now;
if (Xapian::StringValueRangeProcessor::operator() (begin, end) == Xapian::BAD_VALUENO)
return Xapian::BAD_VALUENO;
/* use the same 'now' for begin and end */
if (time (&now) == (time_t) -1)
return Xapian::BAD_VALUENO;
if (!begin.empty ()) {
if (parse_time_string (begin.c_str (), &t, &now, PARSE_TIME_ROUND_DOWN))
return Xapian::BAD_VALUENO;
begin.assign (Xapian::sortable_serialise ((double) t));
}
if (!end.empty ()) {
if (parse_time_string (end.c_str (), &t, &now, PARSE_TIME_ROUND_UP))
return Xapian::BAD_VALUENO;
end.assign (Xapian::sortable_serialise ((double) t));
}
return valno;
}
|