From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26590 invoked by alias); 19 Feb 2017 10:51:28 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 40583 Received: (qmail 6868 invoked from network); 19 Feb 2017 10:51:27 -0000 X-Qmail-Scanner-Diagnostics: from new1-smtp.messagingengine.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.99.2/21882. spamassassin: 3.4.1. Clear:RC:0(66.111.4.221):SA:0(-0.4/5.0):. Processed in 1.814314 secs); 19 Feb 2017 10:51:27 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-0.4 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS,T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.1 X-Envelope-From: psprint2@fastmail.com X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | Received-SPF: pass (ns1.primenet.com.au: SPF record at spf.messagingengine.com designates 66.111.4.221 as permitted sender) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=fastmail.com; h= content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-sender :x-me-sender:x-sasl-enc; s=mesmtp; bh=/hFkAVaCItRkxwMyWi+vS51tYc k=; b=1ll8hXzEzlriG8iaAF8o+ZinjHiXJ9v/TE0jefedgGcBDCVX+XiEYnBdor 0pc5mvslfA/I73mELMntG7zpqQ+xje4E3D7ltKAiyil+TjrDuJiSbsLk01dGqhRY Dc8rsBhvCXy+s8aYd14laeZMP/MhqDs4w4JPWNPMw6tPeKsUo= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=content-transfer-encoding:content-type :date:from:in-reply-to:message-id:mime-version:references :subject:to:x-me-sender:x-me-sender:x-sasl-enc; s=smtpout; bh=/h FkAVaCItRkxwMyWi+vS51tYck=; b=V0MLVrdNANzNcPMFOVHIHl2qQG3/y+eENM f/wtzhrpBEpa21qpQ9tLEe+jCCUzp3BUpEseFh6rXdxpAG+mIN+SYfxhpxv+tJd5 Qb4kj7luWbx2boBfqYJZ76twVQLiqwNJfSnovUauwIA8lGo6U01xy5O8ZXoVTZmL 6eFEaU9dE= X-ME-Sender: Message-Id: <1487501481.310651.885737776.56C3E504@webmail.messagingengine.com> From: Sebastian Gniazdowski To: Bart Schaefer , zsh-workers@zsh.org MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: multipart/mixed; boundary="_----------=_14875014813106510" X-Mailer: MessagingEngine.com Webmail Interface - ajax-715c2c0c Date: Sun, 19 Feb 2017 02:51:21 -0800 Subject: Re: [PATCH] Closing descriptors in forked (pipe) command In-Reply-To: <170218210200.ZM27007@torch.brasslantern.com> References: <1487421943.63900.885130720.703DA037@webmail.messagingengine.com> <170218210200.ZM27007@torch.brasslantern.com> --_----------=_14875014813106510 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" On Sat, Feb 18, 2017, at 09:02 PM, Bart Schaefer wrote: > You/we certainly may wish to document that it is dangerous to assume > that parent and subshell can both manipulate the tied parameter, but > it would be incorrect to automatically close the file descriptor in > either of them. I've updated docs and added "zgdbmclear" builtin as we now know GDBM is fine with concurrent access if only it can be synchronized. In Zsh this is possible via zsystem flock. I think PM_UPTODATE is a great feature as no other program can change the database. With zsystem flock and zgdbmclear, one can write a concurrent, elastic program within Zsh (a challenge, though). Also added a test case, but tests haven't been commited: ztie -d db/gdbm -f $dbfile dbase dbase[testkey]=value1 fun() { while read line; do echo $line; done } eval "dbase[testkey]=value2" | fun echo $dbase[testkey] zgdbmclear dbase testkey echo $dbase[testkey] 0:Test store in forked Zsh >value1 >value2 Best regards, Sebastian Gniazdowski --_----------=_14875014813106510 Content-Disposition: attachment; filename="db_gdbm_update2.diff" Content-Id: <1487501396.309290.ca562cb98684d8a1271925b89171ad2589e0da0a.20F63BBF@content.messagingengine.com> Content-Transfer-Encoding: base64 Content-Type: text/plain; name="db_gdbm_update2.diff" ZGlmZiAtLWdpdCBhL0RvYy9ac2gvbW9kX2RiX2dkYm0ueW8gYi9Eb2MvWnNo L21vZF9kYl9nZGJtLnlvCmluZGV4IDY5OWU5YWIuLjcwNjM2OTAgMTAwNjQ0 Ci0tLSBhL0RvYy9ac2gvbW9kX2RiX2dkYm0ueW8KKysrIGIvRG9jL1pzaC9t b2RfZGJfZ2RibS55bwpAQCAtNDksNiArNDksMTUgQEAgaXRlbSh0dCh6Z2Ri bXBhdGgpIHZhcihwYXJhbWV0ZXJuYW1lKSkoCiBQdXQgcGF0aCB0byBkYXRh YmFzZSBmaWxlIGFzc2lnbmVkIHRvIHZhcihwYXJhbWV0ZXJuYW1lKSBpbnRv IHR0KFJFUExZKQogc2NhbGFyLgogKQorZmluZGV4KHpnZGJtY2xlYXIpCitj aW5kZXgoZGF0YWJhc2UgY29uY3VycmVudCBhY2Nlc3MpCitpdGVtKHR0KHpn ZGJtY2xlYXIpIHZhcihwYXJhbWV0ZXJuYW1lKSB2YXIoa2V5bmFtZSkpKAor VGhlIHRpZWQgZGF0YWJhc2UgaXMgZW5hYmxlZCBmb3IgY29uY3VycmVudCBh Y2Nlc3Mgb25seSB3aXRoaW4gc2luZ2xlIFpzaAoraW5zdGFuY2UuIFVzZXIg bXVzdCB1c2UgdHQoenN5c3RlbSBmbG9jaykgdG8gZ3VhcmQgdGhhdCBhY2Nl c3MgaWYgaXQgaW52b2x2ZXMKK2FueSB3cml0ZXMuIFRvIHJlZmV0Y2ggYSBr ZXkgZnJvbSBkYXRhYmFzZSB3aGVuIGl0cyBjaGFuZ2UgaW4gY29uY3VycmVu dAorWnNoIHByb2Nlc3MgaXMgcG9zc2libGUsIHVzZXIgc2hvdWxkIHVzZSB0 dCh6Z2RibWNsZWFyKSBwYXNzaW5nIG5hbWUgb2YKK2RhdGFiYXNlIGFuZCBu YW1lIG9mIHRoZSBrZXkgdG8gcmVmZXRjaC4KKykKIGZpbmRleCh6Z2RibV90 aWVkKQogY2luZGV4KGRhdGFiYXNlIHRpZWQgYXJyYXlzLCBlbnVtZXJhdGlu ZykKIGl0ZW0odHQoemdkYm1fdGllZCkpKApkaWZmIC0tZ2l0IGEvU3JjL01v ZHVsZXMvZGJfZ2RibS5jIGIvU3JjL01vZHVsZXMvZGJfZ2RibS5jCmluZGV4 IDU5NmE4YWUuLjczMGFiZWEgMTAwNjQ0Ci0tLSBhL1NyYy9Nb2R1bGVzL2Ri X2dkYm0uYworKysgYi9TcmMvTW9kdWxlcy9kYl9nZGJtLmMKQEAgLTg5LDYg Kzg5LDcgQEAgc3RhdGljIHN0cnVjdCBidWlsdGluIGJpbnRhYltdID0gewog ICAgIEJVSUxUSU4oInp0aWUiLCAwLCBiaW5fenRpZSwgMSwgLTEsIDAsICJk OmY6ciIsIE5VTEwpLAogICAgIEJVSUxUSU4oInp1bnRpZSIsIDAsIGJpbl96 dW50aWUsIDEsIC0xLCAwLCAidSIsIE5VTEwpLAogICAgIEJVSUxUSU4oInpn ZGJtcGF0aCIsIDAsIGJpbl96Z2RibXBhdGgsIDEsIC0xLCAwLCAiIiwgTlVM TCksCisgICAgQlVJTFRJTigiemdkYm1jbGVhciIsIDAsIGJpbl96Z2RibWNs ZWFyLCAyLCAtMSwgMCwgIiIsIE5VTEwpLAogfTsKIAogI2RlZmluZSBST0FS UlBBUkFNREVGKG5hbWUsIHZhcikgXApAQCAtMjYwLDYgKzI2MSw0MiBAQCBi aW5femdkYm1wYXRoKGNoYXIgKm5hbSwgY2hhciAqKmFyZ3MsIE9wdGlvbnMg b3BzLCBVTlVTRUQoaW50IGZ1bmMpKQogICAgIHJldHVybiAwOwogfQogCisv KiovCitzdGF0aWMgaW50CitiaW5femdkYm1jbGVhcihjaGFyICpuYW0sIGNo YXIgKiphcmdzLCBPcHRpb25zIG9wcywgVU5VU0VEKGludCBmdW5jKSkKK3sK KyAgICBQYXJhbSBwbTsKKyAgICBjaGFyICpwbW5hbWUsICprZXk7CisKKyAg ICBwbW5hbWUgPSAqYXJncysrOworICAgIGtleSA9ICphcmdzOworCisgICAg aWYgKCFwbW5hbWUpIHsKKyAgICAgICAgendhcm5uYW0obmFtLCAicGFyYW1l dGVyIG5hbWUgKHdob3NlIHBhdGggaXMgdG8gYmUgd3JpdHRlbiB0byAkUkVQ TFkpIGlzIHJlcXVpcmVkIik7CisgICAgICAgIHJldHVybiAxOworICAgIH0K KworICAgIHBtID0gKFBhcmFtKSBwYXJhbXRhYi0+Z2V0bm9kZShwYXJhbXRh YiwgcG1uYW1lKTsKKyAgICBpZighcG0pIHsKKyAgICAgICAgendhcm5uYW0o bmFtLCAibm8gc3VjaCBwYXJhbWV0ZXI6ICVzIiwgcG1uYW1lKTsKKyAgICAg ICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgaWYgKHBtLT5nc3UuaCAhPSAm Z2RibV9oYXNoX2dzdSkgeworICAgICAgICB6d2Fybm5hbShuYW0sICJub3Qg YSB0aWVkIGdkYm0gcGFyYW1ldGVyOiAlcyIsIHBtbmFtZSk7CisgICAgICAg IHJldHVybiAxOworICAgIH0KKworICAgIEhhc2hUYWJsZSBodCA9IHBtLT51 Lmhhc2g7CisgICAgSGFzaE5vZGUgaG4gPSBnZXRoYXNobm9kZTIoIGh0LCBr ZXkgKTsKKyAgICBQYXJhbSB2YWxfcG0gPSAoUGFyYW0pIGhuOworICAgIGlm ICh2YWxfcG0pIHsKKyAgICAgICAgdmFsX3BtLT5ub2RlLmZsYWdzICY9IH4o UE1fVVBUT0RBVEUpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCiAv KgogICogVGhlIHBhcmFtIGlzIGFjdHVhbCBwYXJhbSBpbiBoYXNoIOKAk8Kg YWx3YXlzLCBiZWNhdXNlCiAgKiBnZXRnZGJtbm9kZSBjcmVhdGVzIGV2ZXJ5 IG5ldyBrZXkgc2Vlbi4gSG93ZXZlciwgaXQK --_----------=_14875014813106510--