This allows to have queries like:
  after:10am
  after:"10:00 GMT"
  after:"now -2 hours"
  after:"2 hours ago"
  after:yesterday
  after:"last month"
---
 lib/database.cc |   14 ++++++++------
 1 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/lib/database.cc b/lib/database.cc
index cb02220..615b408 100644
--- a/lib/database.cc
+++ b/lib/database.cc
@@ -19,6 +19,7 @@
  */
 
 #include "database-private.h"
+#include "getdate.h"
 
 #include <iostream>
 
@@ -643,16 +644,17 @@ transform_date (_notmuch_token_t *root, void *opaque)
        int before = (strcmp (root->text, "before") == 0);
        if (after || before) {
            _notmuch_token_t *tok = root->left;
-           struct tm t;
+           bool ok;
+           struct timespec result, now;
            time_t time_value;
-           char *end, *serialzed;
+           char *serialzed;
 
            /* Parse the date */
            assert (tok && tok->type == TOK_LIT);
-           memset(&t, 0, sizeof(t));
-           end = strptime (tok->text, "%Y/%m/%d", &t);
-           time_value = mktime(&t);
-           if (!end || *end || time_value == -1) {
+           clock_gettime (CLOCK_REALTIME, &now);
+           ok = get_date (&result, tok->text, &now);
+           time_value = result.tv_sec;
+           if (!ok || time_value == -1) {
                char *msg = talloc_asprintf (root, "Invalid date \"%s\"",
                                             tok->text);
                return _notmuch_token_create_term (root, TOK_ERROR, msg);
-- 
1.7.2.3

_______________________________________________
notmuch mailing list
[email protected]
http://notmuchmail.org/mailman/listinfo/notmuch

Reply via email to