Re: [PATCH 0/4] Allow specifying alternate names for addresses in other_email
[notmuch-archives.git] / 97 / 8642d8ae9079f384a78d74a12774e55af7807a
1 Return-Path: <tomi.ollila@nixu.com>\r
2 X-Original-To: notmuch@notmuchmail.org\r
3 Delivered-To: notmuch@notmuchmail.org\r
4 Received: from localhost (localhost [127.0.0.1])\r
5         by olra.theworths.org (Postfix) with ESMTP id E9723431FD0\r
6         for <notmuch@notmuchmail.org>; Wed, 11 Jan 2012 05:04:58 -0800 (PST)\r
7 X-Virus-Scanned: Debian amavisd-new at olra.theworths.org\r
8 X-Spam-Flag: NO\r
9 X-Spam-Score: 0\r
10 X-Spam-Level: \r
11 X-Spam-Status: No, score=0 tagged_above=-999 required=5 tests=[none]\r
12         autolearn=disabled\r
13 Received: from olra.theworths.org ([127.0.0.1])\r
14         by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024)\r
15         with ESMTP id wIU0p77f67uZ for <notmuch@notmuchmail.org>;\r
16         Wed, 11 Jan 2012 05:04:58 -0800 (PST)\r
17 Received: from mail-gw3.nixu.fi (mail-gw3.nixu.fi [193.209.237.7])\r
18         (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits))\r
19         (No client certificate requested)\r
20         by olra.theworths.org (Postfix) with ESMTPS id C8B43431FB6\r
21         for <notmuch@notmuchmail.org>; Wed, 11 Jan 2012 05:04:57 -0800 (PST)\r
22 Received: from pps.filterd (mail-gw3 [127.0.0.1])\r
23         by mail-gw3.nixu.fi (8.14.4/8.14.4) with SMTP id q0BD0AAp025938;\r
24         Wed, 11 Jan 2012 15:04:53 +0200\r
25 Received: from taco2.nixu.fi (taco2.nixu.fi [194.197.118.31])\r
26         by mail-gw3.nixu.fi with ESMTP id 114cs0yuq6-1\r
27         (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=NOT);\r
28         Wed, 11 Jan 2012 15:04:52 +0200\r
29 Received: from taco2.nixu.fi (taco2.nixu.fi [194.197.118.31])\r
30         by taco2.nixu.fi (8.14.3/8.14.3/Debian-5+lenny1) with ESMTP id\r
31         q0BD4pCw010747; Wed, 11 Jan 2012 15:04:51 +0200\r
32 From: Tomi Ollila <tomi.ollila@iki.fi>\r
33 To: David Bremner <david@tethera.net>,\r
34         Dmitry Kurochkin <dmitry.kurochkin@gmail.com>,\r
35         Austin Clements <amdragon@MIT.EDU>, notmuch@notmuchmail.org\r
36 Subject: Re: [PATCH] Properly handle short writes in sigint handlers\r
37 In-Reply-To: <87sjjnkdxt.fsf@zancas.localnet>\r
38 References: <20111222201553.GK10376@mit.edu>\r
39         <1324584948-8009-1-git-send-email-amdragon@mit.edu>\r
40         <87fwgbkst0.fsf@gmail.com> <87sjjnkdxt.fsf@zancas.localnet>\r
41 User-Agent: Notmuch/0.10.2+176~g3f9d738 (http://notmuchmail.org) Emacs/23.3.1\r
42         (i686-pc-linux-gnu)\r
43 X-Face: HhBM'cA~<r"^Xv\KRN0P{vn'Y"Kd;zg_y3S[4)KSN~s?O\"QPoL\r
44         $[Xv_BD:i/F$WiEWax}R(MPS`^UaptOGD`*/=@\1lKoVa9tnrg0TW?"r7aRtgk[F\r
45         !)g;OY^,BjTbr)Np:%c_o'jj,Z\r
46 Date: Wed, 11 Jan 2012 15:04:51 +0200\r
47 Message-ID: <yf6vcoi4cgc.fsf@taco2.nixu.fi>\r
48 MIME-Version: 1.0\r
49 Content-Type: text/plain; charset=us-ascii\r
50 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:5.5.7110,\r
51  1.0.211,       0.0.0000        definitions=2012-01-11_03:2012-01-11, 2012-01-11,\r
52         1970-01-01 signatures=0\r
53 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0\r
54         ipscore=0 suspectscore=0\r
55         phishscore=0 bulkscore=0 adultscore=0 classifier=spam adjust=0\r
56         reason=mlx\r
57         scancount=1 engine=6.0.2-1012030000 definitions=main-1201110075\r
58 X-BeenThere: notmuch@notmuchmail.org\r
59 X-Mailman-Version: 2.1.13\r
60 Precedence: list\r
61 List-Id: "Use and development of the notmuch mail system."\r
62         <notmuch.notmuchmail.org>\r
63 List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,\r
64         <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>\r
65 List-Archive: <http://notmuchmail.org/pipermail/notmuch>\r
66 List-Post: <mailto:notmuch@notmuchmail.org>\r
67 List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>\r
68 List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,\r
69         <mailto:notmuch-request@notmuchmail.org?subject=subscribe>\r
70 X-List-Received-Date: Wed, 11 Jan 2012 13:04:59 -0000\r
71 \r
72 On Tue, 10 Jan 2012 07:13:50 -0400, David Bremner <david@tethera.net> wrote:\r
73 > On Fri, 23 Dec 2011 23:10:35 +0400, Dmitry Kurochkin <dmitry.kurochkin@gmail.com> wrote:\r
74 > > Hi Austin.\r
75 > > \r
76 > > I think we should put the write loop into a separate function and reuse\r
77 > > it.\r
78\r
79 > I could go either way on this, unless there is somewhere else the code\r
80 > is actually needed at the moment.\r
81\r
82 > > \r
83 > > Also, does it make sense to add a retry counter to prevent infinite loop\r
84 > > if write keeps returning 0?\r
85\r
86 > I wonder about this too. Is this possibility ignorable Austin?\r
87 \r
88 In this particular case the consensus was to just ignore the short\r
89 write (in rare cases that may happen)... And we could use the\r
90 first patch: id:"1324503532-5799-1-git-send-email-dme@dme.org"\r
91 \r
92 For other cases we might try to find a good implementation of \r
93 "writefully()". OpenSSH atomicio.[ch] looks like a good place to start...\r
94 \r
95 ... writefully () from that code could look something like:\r
96 \r
97 /* 2-clause license ("Simplified BSD License" or "FreeBSD License") */\r
98 size_t writefully(int fd, const void * data, size_t n)\r
99 {\r
100         const char *s = (const char *)data;\r
101         size_t pos = 0;\r
102         ssize_t res;\r
103 \r
104         while (n > pos) {\r
105                 res = write(fd, s + pos, n - pos);\r
106                 switch (res) {\r
107                 case -1:\r
108                         if (errno == EINTR)\r
109                                 continue;\r
110                         if (errno == EAGAIN || errno == EWOULDBLOCK) {\r
111                                 struct pollfd pfd;\r
112                                 pfd.fd = fd;\r
113                                 pfd.events = POLLOUT;\r
114                                 (void)poll(&pfd, 1, -1);\r
115                                 continue;\r
116                         }\r
117                         return 0;\r
118                 case 0:\r
119                         errno = EPIPE;\r
120                         return pos;\r
121                 default:\r
122                         pos += (size_t)res;\r
123                 }\r
124         }\r
125         return pos;\r
126 }\r
127 \r
128\r
129 > d\r
130 \r
131 Tomi\r