From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 24973 invoked by alias); 12 Sep 2016 22:14:19 -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: 39299 Received: (qmail 15434 invoked from network); 12 Sep 2016 22:14:19 -0000 X-Qmail-Scanner-Diagnostics: from nm14-vm8.bullet.mail.ir2.yahoo.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(212.82.96.196):SA:0(0.0/5.0):. Processed in 0.130685 secs); 12 Sep 2016 22:14:19 -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.0 required=5.0 tests=FREEMAIL_FROM,SPF_PASS, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.1 X-Envelope-From: okiddle@yahoo.co.uk X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | Received-SPF: pass (ns1.primenet.com.au: SPF record at _spf.mail.yahoo.com designates 212.82.96.196 as permitted sender) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.co.uk; s=s2048; t=1473718079; bh=A5P11bXiRJ2mhpzcYzt/HCeFnE4Jmw9VsZl0ymz2r5A=; h=From:To:Subject:Date:From:Subject; b=Rluo3ZlzLvMhcQGhKOmBfGDy8+mCEXaXlq8BFqaXvYW8O/Y9S21+M75RWE0hAaCqnWtV0DDEiFDVhCISt9F4OcYVo8mRnsX/p8LGh+6ewQiXQVWQHNqzZHKbr4d6DAprubfDJAc/dAWsXPwHmR7uZSRmc6mz6xZL7cY0aWhmDQk+zKrLmLkk+pUsOt/PjczaAujyplmLraKrDvha/38YjZTe0M3OXKby4lw8TVyKPoffsjblT88j/g7sRMtT9KxesVTpoa8sNVauok5TmfuLnZOyCvwcHP8tXWkL53Lp0n7njffwEWAPD9Z1u+01tF+5N7WN0CuBodsMqk1tqBhvOw== X-Yahoo-Newman-Id: 260915.73523.bm@smtp115.mail.ir2.yahoo.com X-Yahoo-Newman-Property: ymail-3 X-YMail-OSG: d2OQfvUVM1lLyzPJKLIBzsH4zdEWC4ZfCQ3lNIogT3ukI.h URIlDEsEVbmIN.BFwQvUG2ftzCacPnL7AwmFEZ0ilAHYV1MMH04NwCLaJWp8 3dX4IFO1jmIAjgl.DoIj4DKOXJ5R5l2N2wqh1R54_cc_Nu7PMDHg0TbvbddB _hh8ovF29yz2TXFPFBaPtYLAFwgw2_kNdiGOyyOpXGwx34QX7m32akOcSUHu AqEPb.DblOrefJscZUTKU6KNhtdCJNgb3m9wbiZokmvOGkdLusadtyRDpjcG Jazy5SNCG9kYdprmDfTvuUEvuN0qg.Ys3hk4dXL4nUweWE2b3WIZampfLyAF DfC1R7zQb4AliTAx1EL9ATeNj4EF2BQSbktDjmLTlW2rlxJThyfhi27O09HK NYdTqScVeb22a_qAzRlaKXotzNt8WvLIG.eZ0PLyG0KO3xuCe6_b4PWoMhjI P4lOTSWmmSoGL1cDKX8Mt1ePKHWXl.queS6fGtijCBpss4icKAl_rEDT5UjS 95xaD6MufrvYt4N6QsWH3TqCBc4Uq1r.UJkHh.An5Xpk- X-Yahoo-SMTP: opAkk_CswBAce_kJ3nIPlH80cJI- From: Oliver Kiddle To: Zsh workers Subject: PATCH: better Freebsd support in _external_pwds MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-ID: <91312.1473718078.1@hydra.kiddle.eu> Date: Tue, 13 Sep 2016 00:07:58 +0200 Message-ID: <91313.1473718078@hydra.kiddle.eu> procstat provides a way to get process current directories on FreeBSD and unlike lsof, it is available in the base system along with pgrep. I've intentionally used two steps rather than pass pgrep output directly to procstat because that was resulting in a subshell process being picked up. I also found that on Linux, it should include -zsh with zsh when finding applicable processes. Oliver diff --git a/Completion/Base/Completer/_external_pwds b/Completion/Base/Completer/_external_pwds index 79e3ba0..a9dc859 100644 --- a/Completion/Base/Completer/_external_pwds +++ b/Completion/Base/Completer/_external_pwds @@ -22,9 +22,13 @@ case $OSTYPE in ) ;; linux*) - dirs=( /proc/${^$(pidof zsh):#$$}/cwd(N:P) ) + dirs=( /proc/${^$(pidof -- -zsh zsh):#$$}/cwd(N:P) ) dirs=( $^dirs(N^@) ) ;; + freebsd*) + dirs=( $(pgrep -U $UID -x zsh) ) + dirs=( $(procstat -h -f $dirs|awk '{if ($3 == "cwd") print $NF}') ) + ;; *) if (( $+commands[lsof] )); then dirs=( ${${${(M)${(f)"$(lsof -a -u $EUID -c zsh -p \^$$ -d cwd -F n -w