From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp11.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms5.migadu.com with LMTPS id IOlfGa0Q+WLEXQEAbAwnHQ (envelope-from ) for ; Sun, 14 Aug 2022 17:11:41 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp11.migadu.com with LMTPS id eBBeGa0Q+WKuQQEA9RJhRA (envelope-from ) for ; Sun, 14 Aug 2022 17:11:41 +0200 Received: from mail.notmuchmail.org (yantan.tethera.net [135.181.149.255]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 16ED42930D for ; Sun, 14 Aug 2022 17:11:41 +0200 (CEST) Received: from yantan.tethera.net (localhost [127.0.0.1]) by mail.notmuchmail.org (Postfix) with ESMTP id CEB535F365; Sun, 14 Aug 2022 15:03:09 +0000 (UTC) Received: from fethera.tethera.net (fethera.tethera.net [IPv6:2607:5300:60:c5::1]) by mail.notmuchmail.org (Postfix) with ESMTP id B73335E016 for ; Sun, 14 Aug 2022 15:03:06 +0000 (UTC) Received: by fethera.tethera.net (Postfix, from userid 1001) id E625B5FBC0; Sun, 14 Aug 2022 11:03:05 -0400 (EDT) Received: (nullmailer pid 517379 invoked by uid 1000); Sun, 14 Aug 2022 15:03:02 -0000 From: David Bremner To: notmuch@notmuchmail.org Subject: [PATCH 2/3] lib: factor out lastmod range handling from sexp parser. Date: Sun, 14 Aug 2022 12:02:58 -0300 Message-Id: <20220814150259.517361-2-david@tethera.net> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220814150259.517361-1-david@tethera.net> References: <20220814150259.517361-1-david@tethera.net> MIME-Version: 1.0 Message-ID-Hash: JOBKUEBOUAZMGWCM7P72FY5MTBPD4DNQ X-Message-ID-Hash: JOBKUEBOUAZMGWCM7P72FY5MTBPD4DNQ X-MailFrom: bremner@tethera.net X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-notmuch.notmuchmail.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.3 Precedence: list List-Id: "Use and development of the notmuch mail system." List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Migadu-Flow: FLOW_IN X-Migadu-To: larch@yhetil.org X-Migadu-Country: DE ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1660489901; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-owner:list-unsubscribe:list-subscribe:list-post; bh=64sOeyi/GSId4FzT4MTGbGbFOod8i80Z766vKNA2bIA=; b=j+o1kBsgtUS44NOYSnz/Wv66c7Qi8GsxGkgrZHJ3J0RDAMcjvTuGIVGXuC7qoNUnk6V4/L e5E2IVeUqiEesazyyARsNsBq9aF5VtCuOEiLRaeeecBfrBgEmjdKTTuR9VdEsCxnm9enDw 3OdjeSzghOqg+ct7LdVLklKSPM1D+7z0Ut8QuoxQ0tEh+pmPzdtYGrNP6+8PckcE0vkmGc 67SVpQsoHZrkV78rCQ6yMTWdsvsHVjgROm3k58bYcviejXjFbqhp+sUEtHdIDW0WcpvwJ4 OKsinquqHzel2WxKhynut4pxcrmZqSSOVsmwyFxpTNZLjg2qe4TB8BGhk21GaQ== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1660489901; a=rsa-sha256; cv=none; b=cb2bky2zRZVkKBRBmmzSjMYVfTwEO0EtRQD+rWXioKk73Zh3FUJl3xOuPm6wGlrUTIGM3m jPFW/jGiV9BcAgA/VdIYEBBj2qXto4pOPz7HKrfHtYqadVI4+Ku4J+bE8hZVTwTJ+CDd0r b4CqtI4sMaixOJnHzt/AkqYcVtjMsC4d+57qSTZaY8sf58RnTyEjKU0ayAqRhWE+qvjoy7 wLN4iVYEOxKV0lGyPvtaEQQVXykgv9lkh8o4/S6n5DZD+tVR1pjfIMsU7h0xn2UN7vHa+Z FoyxZTHnVyE0MoO1bp5k+qzJovzNpDMe4fVx4aLckPneSeMsiLFPUYNyQpyD+g== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=none; dmarc=none; spf=pass (aspmx1.migadu.com: domain of notmuch-bounces@notmuchmail.org designates 135.181.149.255 as permitted sender) smtp.mailfrom=notmuch-bounces@notmuchmail.org X-Migadu-Spam-Score: 5.78 Authentication-Results: aspmx1.migadu.com; dkim=none; dmarc=none; spf=pass (aspmx1.migadu.com: domain of notmuch-bounces@notmuchmail.org designates 135.181.149.255 as permitted sender) smtp.mailfrom=notmuch-bounces@notmuchmail.org X-Migadu-Queue-Id: 16ED42930D X-Spam-Score: 5.78 X-Migadu-Scanner: scn1.migadu.com X-TUID: N0xr+Gy40BWd VGhpcyB3aWxsIHBlcm1pdCB0aGUgcmUtdXNlIG9mIHRoZSBzYW1lIGxvZ2ljIGluIHRoZSBpbmZp eCBxdWVyeQ0KcGFyc2VyLiBUaGUgbG9jYXRpb24gb2YgdGhlIHNoYXJlZCBjb2RlIGluIHRoZSBp bmZpeCBzaWRlIGlzIGZvcg0KY29uc2lzdGVuY3kgd2l0aCB0aGUgb3RoZXIgc2hhcmVkIHBhcnNp bmcgbG9naWMuIEl0IHdpbGwgbWFrZSBtb3JlDQpzZW5zZSB3aGVuIGEgWGFwaWFuIGZpZWxkIHBy b2Nlc3NvciBpcyBhZGRlZCBmb3IgdGhlIGxhc3Rtb2QgcHJlZml4Lg0KLS0tDQogbGliL01ha2Vm aWxlLmxvY2FsICAgICB8ICAzICstDQogbGliL2RhdGFiYXNlLXByaXZhdGUuaCB8ICA2ICsrKysN CiBsaWIvbGFzdG1vZC1mcC5jYyAgICAgIHwgNjggKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrDQogbGliL3BhcnNlLXNleHAuY2MgICAgICB8IDM3ICsrKystLS0tLS0t LS0tLS0tLS0tLS0tDQogNCBmaWxlcyBjaGFuZ2VkLCA4MiBpbnNlcnRpb25zKCspLCAzMiBkZWxl dGlvbnMoLSkNCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2xhc3Rtb2QtZnAuY2MNCg0KZGlmZiAt LWdpdCBhL2xpYi9NYWtlZmlsZS5sb2NhbCBiL2xpYi9NYWtlZmlsZS5sb2NhbA0KaW5kZXggNmQ2 N2EyYTQuLjRlNzY2MzA1IDEwMDY0NA0KLS0tIGEvbGliL01ha2VmaWxlLmxvY2FsDQorKysgYi9s aWIvTWFrZWZpbGUubG9jYWwNCkBAIC02NSw3ICs2NSw4IEBAIGxpYm5vdG11Y2hfY3h4X3NyY3Mg PQkJXA0KIAkkKGRpcikvb3Blbi5jYwkJXA0KIAkkKGRpcikvaW5pdC5jYwkJXA0KIAkkKGRpcikv cGFyc2Utc2V4cC5jYwlcDQotCSQoZGlyKS9zZXhwLWZwLmNjDQorCSQoZGlyKS9zZXhwLWZwLmNj CVwNCisJJChkaXIpL2xhc3Rtb2QtZnAuY2MNCiANCiBsaWJub3RtdWNoX21vZHVsZXMgOj0gJChs aWJub3RtdWNoX2Nfc3JjczouYz0ubykgJChsaWJub3RtdWNoX2N4eF9zcmNzOi5jYz0ubykNCiAN CmRpZmYgLS1naXQgYS9saWIvZGF0YWJhc2UtcHJpdmF0ZS5oIGIvbGliL2RhdGFiYXNlLXByaXZh dGUuaA0KaW5kZXggNDE5YjlmZTYuLmI5YmU0ZTIyIDEwMDY0NA0KLS0tIGEvbGliL2RhdGFiYXNl LXByaXZhdGUuaA0KKysrIGIvbGliL2RhdGFiYXNlLXByaXZhdGUuaA0KQEAgLTM4MSw1ICszODEs MTEgQEAgX25vdG11Y2hfc2V4cF9zdHJpbmdfdG9feGFwaWFuX3F1ZXJ5IChub3RtdWNoX2RhdGFi YXNlX3QgKm5vdG11Y2gsIGNvbnN0IGNoYXIgKnENCiBub3RtdWNoX3N0YXR1c190DQogX25vdG11 Y2hfZGF0ZV9zdHJpbmdzX3RvX3F1ZXJ5IChYYXBpYW46OnZhbHVlbm8gc2xvdCwgY29uc3Qgc3Rk OjpzdHJpbmcgJmZyb20sIGNvbnN0IHN0ZDo6c3RyaW5nICZ0bywNCiAJCQkJWGFwaWFuOjpRdWVy eSAmb3V0cHV0LCBzdGQ6OnN0cmluZyAmbXNnKTsNCisNCisvKiBsYXN0bW9kLWZwLmggKi8NCitu b3RtdWNoX3N0YXR1c190DQorX25vdG11Y2hfbGFzdG1vZF9zdHJpbmdzX3RvX3F1ZXJ5IChub3Rt dWNoX2RhdGFiYXNlX3QgKm5vdG11Y2gsDQorCQkJCSAgIGNvbnN0IHN0ZDo6c3RyaW5nICZmcm9t LCBjb25zdCBzdGQ6OnN0cmluZyAmdG8sDQorCQkJCSAgIFhhcGlhbjo6UXVlcnkgJm91dHB1dCwg c3RkOjpzdHJpbmcgJm1zZyk7DQogI2VuZGlmDQogI2VuZGlmDQpkaWZmIC0tZ2l0IGEvbGliL2xh c3Rtb2QtZnAuY2MgYi9saWIvbGFzdG1vZC1mcC5jYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmlu ZGV4IDAwMDAwMDAwLi41ZmRhZjI4MQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvbGliL2xhc3Rtb2Qt ZnAuY2MNCkBAIC0wLDAgKzEsNjggQEANCisvKiBsYXN0bW9kLWZwLmNjIC0gbGFzdG1vZCByYW5n ZSBxdWVyeSBnbHVlDQorICoNCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBub3RtdWNoLg0KKyAq DQorICogQ29weXJpZ2h0IMKpIDIwMjIgRGF2aWQgQnJlbW5lcg0KKyAqDQorICogVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkNCisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQ0KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVp dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yDQorICogKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4NCisgKg0KKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KKyAqIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQorICogTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0K KyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQorICoNCisg KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQ0KKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgaHR0 cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8gLg0KKyAqDQorICogQXV0aG9yOiBEYXZpZCBCcmVt bmVyIDxkYXZpZEB0ZXRoZXJhLm5ldD4NCisgKi8NCisNCisjaW5jbHVkZSAiZGF0YWJhc2UtcHJp dmF0ZS5oIg0KKw0KK25vdG11Y2hfc3RhdHVzX3QNCitfbm90bXVjaF9sYXN0bW9kX3N0cmluZ3Nf dG9fcXVlcnkgKG5vdG11Y2hfZGF0YWJhc2VfdCAqbm90bXVjaCwNCisJCQkJICAgY29uc3Qgc3Rk OjpzdHJpbmcgJmZyb20sIGNvbnN0IHN0ZDo6c3RyaW5nICZ0bywNCisJCQkJICAgWGFwaWFuOjpR dWVyeSAmb3V0cHV0LCBzdGQ6OnN0cmluZyAmbXNnKQ0KK3sNCisgICAgbG9uZyBmcm9tX2lkeCA9 IDBMLCB0b19pZHggPSBMT05HX01BWDsNCisgICAgbG9uZyBjdXJyZW50Ow0KKyAgICBzdGQ6OnN0 cmluZyBzdHI7DQorDQorICAgIC8qIHJldmlzaW9uIHNob3VsZCBub3QgY2hhbmdlLCBidXQgZm9y IHRoZSBhdm9pZGFuY2Ugb2YgZG91YnQsDQorICAgICAqIGdyYWIgZm9yIGJvdGggZW5kcyBvZiBy YW5nZSwgaWYgbmVlZGVkKi8NCisgICAgY3VycmVudCA9IG5vdG11Y2hfZGF0YWJhc2VfZ2V0X3Jl dmlzaW9uIChub3RtdWNoLCBOVUxMKTsNCisNCisgICAgdHJ5IHsNCisJaWYgKGZyb20uZW1wdHkg KCkpDQorCSAgICBmcm9tX2lkeCA9IDBMOw0KKwllbHNlDQorCSAgICBmcm9tX2lkeCA9IHN0ZDo6 c3RvbCAoZnJvbSk7DQorICAgIH0gY2F0Y2ggKHN0ZDo6bG9naWNfZXJyb3IgJmUpIHsNCisJbXNn ID0gImJhZCAnZnJvbScgcmV2aXNpb246ICciICsgZnJvbSArICInIjsNCisJcmV0dXJuIE5PVE1V Q0hfU1RBVFVTX0JBRF9RVUVSWV9TWU5UQVg7DQorICAgIH0NCisNCisgICAgaWYgKGZyb21faWR4 IDwgMCkNCisJZnJvbV9pZHggKz0gY3VycmVudDsNCisNCisgICAgdHJ5IHsNCisJaWYgKEVNUFRZ X1NUUklORyAodG8pKQ0KKwkgICAgdG9faWR4ID0gTE9OR19NQVg7DQorCWVsc2UNCisJICAgIHRv X2lkeCA9IHN0ZDo6c3RvbCAodG8pOw0KKyAgICB9IGNhdGNoIChzdGQ6OmxvZ2ljX2Vycm9yICZl KSB7DQorCW1zZyA9ICJiYWQgJ3RvJyByZXZpc2lvbjogJyIgKyB0byArICInIjsNCisJcmV0dXJu IE5PVE1VQ0hfU1RBVFVTX0JBRF9RVUVSWV9TWU5UQVg7DQorICAgIH0NCisNCisgICAgaWYgKHRv X2lkeCA8IDApDQorCXRvX2lkeCArPSBjdXJyZW50Ow0KKw0KKyAgICBvdXRwdXQgPSBYYXBpYW46 OlF1ZXJ5IChYYXBpYW46OlF1ZXJ5OjpPUF9WQUxVRV9SQU5HRSwgTk9UTVVDSF9WQUxVRV9MQVNU X01PRCwNCisJCQkgICAgWGFwaWFuOjpzb3J0YWJsZV9zZXJpYWxpc2UgKGZyb21faWR4KSwNCisJ CQkgICAgWGFwaWFuOjpzb3J0YWJsZV9zZXJpYWxpc2UgKHRvX2lkeCkpOw0KKyAgICByZXR1cm4g Tk9UTVVDSF9TVEFUVVNfU1VDQ0VTUzsNCit9DQpkaWZmIC0tZ2l0IGEvbGliL3BhcnNlLXNleHAu Y2MgYi9saWIvcGFyc2Utc2V4cC5jYw0KaW5kZXggZTllZjQyNjguLjljYWRiYzEzIDEwMDY0NA0K LS0tIGEvbGliL3BhcnNlLXNleHAuY2MNCisrKyBiL2xpYi9wYXJzZS1zZXhwLmNjDQpAQCAtNTYz LDM4ICs1NjMsMTMgQEAgX3NleHBfcGFyc2VfcmFuZ2UgKG5vdG11Y2hfZGF0YWJhc2VfdCAqbm90 bXVjaCwgIGNvbnN0IF9zZXhwX3ByZWZpeF90ICpwcmVmaXgsDQogICAgIH0NCiANCiAgICAgaWYg KHN0cmNtcCAocHJlZml4LT5uYW1lLCAibGFzdG1vZCIpID09IDApIHsNCi0JbG9uZyBmcm9tX2lk eCwgdG9faWR4Ow0KLQ0KLQl0cnkgew0KLQkgICAgaWYgKEVNUFRZX1NUUklORyAoZnJvbSkpDQot CQlmcm9tX2lkeCA9IDBMOw0KLQkgICAgZWxzZQ0KLQkJZnJvbV9pZHggPSBzdGQ6OnN0b2wgKGZy b20pOw0KLQl9IGNhdGNoIChzdGQ6OmxvZ2ljX2Vycm9yICZlKSB7DQotCSAgICBfbm90bXVjaF9k YXRhYmFzZV9sb2cgKG5vdG11Y2gsICJiYWQgJ2Zyb20nIHJldmlzaW9uOiAnJXMnXG4iLCBmcm9t KTsNCi0JICAgIHJldHVybiBOT1RNVUNIX1NUQVRVU19CQURfUVVFUllfU1lOVEFYOw0KLQl9DQot DQotCWlmIChmcm9tX2lkeCA8IDApDQotCSAgICBmcm9tX2lkeCArPSBub3RtdWNoX2RhdGFiYXNl X2dldF9yZXZpc2lvbiAobm90bXVjaCwgTlVMTCk7DQotDQotCXRyeSB7DQotCSAgICBpZiAoRU1Q VFlfU1RSSU5HICh0bykpDQotCQl0b19pZHggPSBMT05HX01BWDsNCi0JICAgIGVsc2UNCi0JCXRv X2lkeCA9IHN0ZDo6c3RvbCAodG8pOw0KLQl9IGNhdGNoIChzdGQ6OmxvZ2ljX2Vycm9yICZlKSB7 DQotCSAgICBfbm90bXVjaF9kYXRhYmFzZV9sb2cgKG5vdG11Y2gsICJiYWQgJ3RvJyByZXZpc2lv bjogJyVzJ1xuIiwgdG8pOw0KLQkgICAgcmV0dXJuIE5PVE1VQ0hfU1RBVFVTX0JBRF9RVUVSWV9T WU5UQVg7DQorCW5vdG11Y2hfc3RhdHVzX3Qgc3RhdHVzOw0KKwlzdGF0dXMgPSBfbm90bXVjaF9s YXN0bW9kX3N0cmluZ3NfdG9fcXVlcnkgKG5vdG11Y2gsIGZyb20sIHRvLCBvdXRwdXQsIG1zZyk7 DQorCWlmIChzdGF0dXMpIHsNCisJICAgIGlmICghIG1zZy5lbXB0eSAoKSkNCisJCV9ub3RtdWNo X2RhdGFiYXNlX2xvZyAobm90bXVjaCwgIiVzXG4iLCBtc2cuY19zdHIgKCkpOw0KIAl9DQotDQot CWlmICh0b19pZHggPCAwKQ0KLQkgICAgdG9faWR4ICs9IG5vdG11Y2hfZGF0YWJhc2VfZ2V0X3Jl dmlzaW9uIChub3RtdWNoLCBOVUxMKTsNCi0NCi0Jb3V0cHV0ID0gWGFwaWFuOjpRdWVyeSAoWGFw aWFuOjpRdWVyeTo6T1BfVkFMVUVfUkFOR0UsIE5PVE1VQ0hfVkFMVUVfTEFTVF9NT0QsDQotCQkJ CVhhcGlhbjo6c29ydGFibGVfc2VyaWFsaXNlIChmcm9tX2lkeCksDQotCQkJCVhhcGlhbjo6c29y dGFibGVfc2VyaWFsaXNlICh0b19pZHgpKTsNCi0JcmV0dXJuIE5PVE1VQ0hfU1RBVFVTX1NVQ0NF U1M7DQorCXJldHVybiBzdGF0dXM7DQogICAgIH0NCiANCiAgICAgX25vdG11Y2hfZGF0YWJhc2Vf bG9nIChub3RtdWNoLCAidW5pbXBsaW1lbnRlZCByYW5nZSBwcmVmaXg6ICclcydcbiIsIHByZWZp eC0+bmFtZSk7DQotLSANCjIuMzUuMQ0KDQ==