Re: [PATCH 1/2] Automatic tagging based on maildir
authorMichal Nazarewicz <mina86@mina86.com>
Fri, 26 Oct 2012 13:19:54 +0000 (15:19 +0200)
committerW. Trevor King <wking@tremily.us>
Fri, 7 Nov 2014 17:50:03 +0000 (09:50 -0800)
85/c1fdf45b504ad99971e9bd760c34a3f6360ba2 [new file with mode: 0644]

diff --git a/85/c1fdf45b504ad99971e9bd760c34a3f6360ba2 b/85/c1fdf45b504ad99971e9bd760c34a3f6360ba2
new file mode 100644 (file)
index 0000000..3cac0a3
--- /dev/null
@@ -0,0 +1,189 @@
+Return-Path: <mpn@google.com>\r
+X-Original-To: notmuch@notmuchmail.org\r
+Delivered-To: notmuch@notmuchmail.org\r
+Received: from localhost (localhost [127.0.0.1])\r
+       by olra.theworths.org (Postfix) with ESMTP id 67873431FAF\r
+       for <notmuch@notmuchmail.org>; Fri, 26 Oct 2012 06:21:23 -0700 (PDT)\r
+X-Virus-Scanned: Debian amavisd-new at olra.theworths.org\r
+X-Spam-Flag: NO\r
+X-Spam-Score: -0.7\r
+X-Spam-Level: \r
+X-Spam-Status: No, score=-0.7 tagged_above=-999 required=5\r
+       tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_LOW=-0.7]\r
+       autolearn=disabled\r
+Received: from olra.theworths.org ([127.0.0.1])\r
+       by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024)\r
+       with ESMTP id Eu45Rm-wbuh1 for <notmuch@notmuchmail.org>;\r
+       Fri, 26 Oct 2012 06:21:22 -0700 (PDT)\r
+Received: from mail-ee0-f53.google.com (mail-ee0-f53.google.com\r
+ [74.125.83.53])       (using TLSv1 with cipher RC4-SHA (128/128 bits))        (No client\r
+ certificate requested)        by olra.theworths.org (Postfix) with ESMTPS id\r
+ 576EB431FAE   for <notmuch@notmuchmail.org>; Fri, 26 Oct 2012 06:21:22 -0700\r
+ (PDT)\r
+Received: by mail-ee0-f53.google.com with SMTP id e51so1268128eek.26\r
+       for <notmuch@notmuchmail.org>; Fri, 26 Oct 2012 06:21:19 -0700 (PDT)\r
+DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;\r
+ s=20120113;   h=sender:from:to:cc:subject:in-reply-to:organization:references\r
+       :user-agent:x-face:face:x-pgp:x-pgp-fp:date:message-id:mime-version\r
+       :content-type; bh=oGN1xr1IbgEryGEzrGlpIeamzifYo1ceA/pYqdqIPuc=;\r
+       b=PQMpRogwUqydsFsmJRd+krzp1Elh8kc8DCF5sq1n3gz64yndVmPfx4BMJmRdjmlglF\r
+       uOAfQ2XIM1bXm0DxTiNfEOv8lLLtZOn+J2t5rOiGYx0VGGJ0XIEB27RL9Xzo06YWOEsR\r
+       Y5X3LD7vfrBXGQ6kXacZJDVTMqEvqN25AjNJhb143wcrOeN+QZQmHL46y/sTKFxqm2HW\r
+       ELX3Xa3kWgx3+b303VA3ZoMrn34L4TnakuHVCewhzS2N+ORXkRlf8WROJRUc8XCy5tSA\r
+       IrduF9bxM23QsLBOWgGR1nOV/AT9LCAbrli7c/1ms9RDo6TeOEMWvSCNDRoNVdTOH5/u    rX+Q==\r
+X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;\r
+       d=google.com; s=20120113;\r
+       h=sender:from:to:cc:subject:in-reply-to:organization:references\r
+       :user-agent:x-face:face:x-pgp:x-pgp-fp:date:message-id:mime-version\r
+       :content-type:x-gm-message-state;\r
+       bh=oGN1xr1IbgEryGEzrGlpIeamzifYo1ceA/pYqdqIPuc=;\r
+       b=d3+QgbByElngodsrEsN3QM3zU9aX2/CYi/Z5HgLA/YEawttcySgJoFbyAQAsEKQ/qF\r
+       sLSEHGtXk2bhZfwt4R3hVR54oni+m1V7SvvMNrldBpxgtxGCgq1e14oKyPDiVChfnjDH\r
+       RWLgZklfvdY7ngukHefxA3XjQEBlixEgauM5K0KVkxqF2PZGC7w7fwpQV+SYiZ81DK2t\r
+       TRkry8aA128do9fsyYf+rXe3WH6jpGDaUGmv/P9SSswZhfGXwWZWfZYzf8kKuuYcH8Ba\r
+       PpJUCMJAP89Ny1bUvzBXrMR4Rzacnd4s+QZlC1cuJrpNNwKC/apdtelYt2knU6hRsrm7\r
+       cVVQ==\r
+Received: by 10.14.179.69 with SMTP id g45mr22800605eem.42.1351257679452;\r
+       Fri, 26 Oct 2012 06:21:19 -0700 (PDT)\r
+Received: from mpn-glaptop (77-253-124-192.adsl.inetia.pl. [77.253.124.192])\r
+       by mx.google.com with ESMTPS id g47sm2626538eeo.6.2012.10.26.06.21.15\r
+       (version=TLSv1/SSLv3 cipher=OTHER);\r
+       Fri, 26 Oct 2012 06:21:17 -0700 (PDT)\r
+Sender: Michal Nazarewicz <mpn@google.com>\r
+From: Michal Nazarewicz <mina86@mina86.com>\r
+To: Taesoo Kim <taesoo@mit.edu>, notmuch@notmuchmail.org\r
+Subject: Re: [PATCH 1/2] Automatic tagging based on maildir\r
+In-Reply-To: <1351208039-32293-2-git-send-email-taesoo@mit.edu>\r
+Organization: http://mina86.com/\r
+References: <1351208039-32293-1-git-send-email-taesoo@mit.edu>\r
+       <1351208039-32293-2-git-send-email-taesoo@mit.edu>\r
+User-Agent: Notmuch/0.14+22~g8bdc16b (http://notmuchmail.org) Emacs/24.2.50.1\r
+       (x86_64-unknown-linux-gnu)\r
+X-Face: PbkBB1w#)bOqd`iCe"Ds{e+!C7`pkC9a|f)Qo^BMQvy\q5x3?vDQJeN(DS?|-^$uMti[3D*#^_Ts"pU$jBQLq~Ud6iNwAw_r_o_4]|JO?]}P_}Nc&"p#D(ZgUb4uCNPe7~a[DbPG0T~!&c.y$Ur,=N4RT>]dNpd;       KFrfMCylc}gc??'U2j,!8%xdD\r
+Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJFBMVEWbfGlUPDDHgE57V0jUupKjgIObY0PLrom9mH4dFRK4gmjPs41MxjOgAAACQElEQVQ4jW3TMWvbQBQHcBk1xE6WyALX1069oZBMlq+ouUwpEQQ6uRjttkWP4CmBgGM0BQLBdPFZYPsyFUo6uEtKDQ7oy/U96XR2Ux8ehH/89Z6enqxBcS7Lg81jmSuujrfCZcLI/TYYvbGj+jbgFpHJ/bqQAUISj8iLyu4LuFHJTosxsucO4jSDNE0Hq3hwK/ceQ5sx97b8LcUDsILfk+ovHkOIsMbBfg43VuQ5Ln9YAGCkUdKJoXR9EclFBhixy3EGVz1K6eEkhxCAkeMMnqoAhAKwhoUJkDrCqvbecaYINlFKSRS1i12VKH1XpUd4qxL876EkMcDvHj3s5RBajHHMlA5iK32e0C7VgG0RlzFPvoYHZLRmAC0BmNcBruhkE0KsMsbEc62ZwUJDxWUdMsMhVqovoT96i/DnX/ASvz/6hbCabELLk/6FF/8PNpPCGqcZTGFcBhhAaZZDbQPaAB3+KrWWy2XgbYDNIinkdWAFcCpraDE/knwe5DBqGmgzESl1p2E4MWAz0VUPgYYzmfWb9yS4vCvgsxJriNTHoIBz5YteBvg+VGISQWUqhMiByPIPpygeDBE6elD973xWwKkEiHZAHKjhuPsFnBuArrzxtakRcISv+XMIPl4aGBUJm8Emk7qBYU8IlgNEIpiJhk/No24jHwkKTFHDWfPniR4iw5vJaw2nzSjfq2zffcE/GDjRC2dn0J0XwPAbDL84TvaFCJEU4Oml9pRyEUhR3Cl2t01AoEjRbs0sYugp14/4X5n4pU4EHHnMAAAAAElFTkSuQmCC\r
+X-PGP: 50751FF4\r
+X-PGP-FP: AC1F 5F5C D418 88F8 CC84 5858 2060 4012 5075 1FF4\r
+Date: Fri, 26 Oct 2012 15:19:54 +0200\r
+Message-ID: <xa1tr4olpdz9.fsf@mina86.com>\r
+MIME-Version: 1.0\r
+Content-Type: multipart/mixed; boundary="=-=-="\r
+X-Gm-Message-State: ALoCoQlsEpkNCVT/vl5Py5IlPZPCRn8woVn6Ysw/fK1Vnah+wQMv8MDgVagco9Bouwq2H5ITpb81ZsEjGf11l4HVK0vjNa1JYtOFW0xrlkUsM3UECdpZ/DwTnkFUAAOyGeP3epZYPAsNI44DvUnbY1NQCyQFZ8MiOQJqlRPNceG03Ar+z7iYSpLa8x7bssGV42Zmb+gAGpyh\r
+Cc: Taesoo Kim <taesoo@mit.edu>\r
+X-BeenThere: notmuch@notmuchmail.org\r
+X-Mailman-Version: 2.1.13\r
+Precedence: list\r
+List-Id: "Use and development of the notmuch mail system."\r
+       <notmuch.notmuchmail.org>\r
+List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,\r
+       <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>\r
+List-Archive: <http://notmuchmail.org/pipermail/notmuch>\r
+List-Post: <mailto:notmuch@notmuchmail.org>\r
+List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>\r
+List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,\r
+       <mailto:notmuch-request@notmuchmail.org?subject=subscribe>\r
+X-List-Received-Date: Fri, 26 Oct 2012 13:21:23 -0000\r
+\r
+--=-=-=\r
+Content-Type: text/plain; charset=utf-8\r
+Content-Transfer-Encoding: quoted-printable\r
+\r
+On Fri, Oct 26 2012, Taesoo Kim <taesoo@mit.edu> wrote:\r
+> @@ -240,6 +242,32 @@ _entry_in_ignore_list (const char *entry, add_files_=\r
+state_t *state)\r
+>      return FALSE;\r
+>  }\r
+>=20=20\r
+> +static void\r
+> +_add_maildir_as_tag(notmuch_database_t *notmuch,\r
+> +                notmuch_message_t *msg, const char *path)=20\r
+> +{\r
+> +    char *tok =3D talloc_strdup (notmuch, path);\r
+> +    int len =3D strlen(tok);\r
+> +=20=20=20=20\r
+> +    /* asserts path ends with /cur|/tmp|/new */\r
+\r
+It actually does not assert that.  It just checks =E2=80=9C/=E2=80=9D.\r
+\r
+> +    if (len > 4 && tok[len - 4] =3D=3D '/') {\r
+> +    char *iter =3D tok + len - 4;\r
+> +    *iter =3D '\0';\r
+> +    while (-- iter && iter >=3D tok) {\r
+> +        char c =3D *iter;\r
+> +        if (c =3D=3D '/' || c =3D=3D '.') {\r
+> +            *iter =3D '\0';\r
+> +            notmuch_message_add_tag (msg, iter + 1);\r
+> +            if (c =3D=3D '/') {\r
+> +                break;\r
+> +            }\r
+> +        }\r
+> +        *iter =3D tolower(*iter);\r
+> +    }\r
+\r
+strtok() would make it easier.\r
+\r
+> +    }\r
+> +    talloc_free (tok);\r
+> +}\r
+\r
+How about (not tested):\r
+\r
+static void\r
+_add_maildir_as_tag(notmuch_database_t *notmuch,\r
+                   notmuch_message_t *msg, const char *path)\r
+{\r
+    const char *a =3D NULL, *b =3D NULL;\r
+    char *dir, *tag, *saveptr;\r
+\r
+    while ((path =3D strchr(path, '/'))) {\r
+       a =3D b;\r
+       b =3D path;\r
+    }\r
+\r
+    if (!a || ++a >=3D b ||\r
+       (strcmp(b, "/cur") && strcmp(b, "/new") && strcmp(b, "/tmp")))\r
+       return;\r
+\r
+    dir =3D talloc_strndup(notmuch, a, b - a);\r
+    while ((tag =3D strtok_r(dir, ".", &saveptr)))\r
+       notmuch_message_add_tag(msg, tag);\r
+\r
+    talloc_free(dir);\r
+}\r
+\r
+--=20\r
+Best regards,                                         _     _\r
+.o. | Liege of Serenely Enlightened Majesty of      o' \,=3D./ `o\r
+..o | Computer Science,  Micha=C5=82 =E2=80=9Cmina86=E2=80=9D Nazarewicz   =\r
+ (o o)\r
+ooo +----<email/xmpp: mpn@google.com>--------------ooO--(_)--Ooo--\r
+--=-=-=\r
+Content-Type: multipart/signed; boundary="==-=-=";\r
+       micalg=pgp-sha1; protocol="application/pgp-signature"\r
+\r
+--==-=-=\r
+Content-Type: text/plain\r
+\r
+\r
+--==-=-=\r
+Content-Type: application/pgp-signature\r
+\r
+-----BEGIN PGP SIGNATURE-----\r
+Version: GnuPG v1.4.10 (GNU/Linux)\r
+\r
+iQIcBAEBAgAGBQJQio36AAoJECBgQBJQdR/0E+8P/1nGvBlGhqQpcbqen2TBT0AI\r
+kkg9qZua/QI+l9DcpFAP3P979Ux+2QgJagIuiC5QE68pJ9zyYUft8WVau252ycl+\r
+pEMhk4y8cT2ttsJJzSEWA2kd1+Bknkn0/jdWSgKd3hoJ47XIEF8MpeJZ5QY0W+eG\r
+pjcqCKk5So118v7UAMSkhX5UOzT7IvUYcHuPKns8eaGv9D0TcmYPJRCvQdWoyXUB\r
+auo8ktTe8MqL1ZdKMFmKcGvI257J8F5bccHLUFSKKw+oO6RzCR5Sb+v4ejmwKlPs\r
+o5UIyaSJFHTOndTdxAyw8C1bE2dy+ryStN1gFpu92/f68j/Qr2NYnRbMVUOqTMVt\r
++1T35voXdmGvhzQAAAqBipgzSDNGZMMnBy4fl9sBFGIrE3ZjzixXe5XXcrVTWnhd\r
+V6gwHOZ+KDP/CYQEOySrftIs3TxDGZq7p7ViHRpfq0FJ/v7/sEhSUv4P76O0xvJi\r
+k+kvNGpOcbp64IhhoCKS3EqLRqJ990iuzrNKGx6eSesgjxRVoUvwRt/bcU+/StY/\r
+x0rZRRe6rlZ2v1+OIx1FtSOc6mGNzlyVeAHsE44/hKayxmt6cQ1I0u8FeCO8G4ok\r
+LMbHyknpnp9NdTIG1E5x2cX0nUnZ38Sh+zckBbZjbjGAXi9Qna35W3iETLoBh8ch\r
+C5SwGi23JNMnRQw0qCjz\r
+=ug1A\r
+-----END PGP SIGNATURE-----\r
+--==-=-=--\r
+\r
+--=-=-=--\r