From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15451 invoked by alias); 2 Sep 2018 20:57:57 -0000 Mailing-List: contact zsh-users-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Users List List-Post: List-Help: List-Unsubscribe: X-Seq: 23600 Received: (qmail 3514 invoked by uid 1010); 2 Sep 2018 20:57:57 -0000 X-Qmail-Scanner-Diagnostics: from mail-yb1-f179.google.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(209.85.219.179):SA:0(-1.9/5.0):. Processed in 1.738817 secs); 02 Sep 2018 20:57:57 -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=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, HTML_MESSAGE,RCVD_IN_DNSWL_NONE,SPF_PASS,T_DKIM_INVALID autolearn=ham autolearn_force=no version=3.4.1 X-Envelope-From: robobenklein@gmail.com X-Qmail-Scanner-Mime-Attachments: |signature.asc| X-Qmail-Scanner-Zip-Files: | DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=to:from:subject:openpgp:autocrypt:message-id:date:user-agent :mime-version; bh=CBxgX8S23y6zSOXEpZ9alqXf1SBClILe3LA0QnkvkHQ=; b=b2z13Drhm/Xq/6NhFm90ctE7l7E6XvDsi7GpycvpU6wOK1V7cXx7Z8DlWgw1Xo2dtc nNUAm0Gk0xYUGg0wumZV8lnTDQ9tSOj4EemeOUT0SFLqvxkquvz74V/xtJYxkCkz74mi XdsLAHGb60AszHPkB8hw75m7K0OKc4uH4M5LxW5/dcmICrHKut6xSLloS0ycZ1/+x2Bw uo1HuFLoRZcs0TcuzvXOVgRUjPYNcyANJ6J2ZbhwkbaaE509HTWdR5F9Jrk+MVHxdgYt PR6i7LuXYAMbTUeUTSkmn/vvEC1GMtozA2Tin/2/H+L7YWDf7b4Rvz3CGlunU6uhe3++ CHQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:from:subject:openpgp:autocrypt:message-id :date:user-agent:mime-version; bh=CBxgX8S23y6zSOXEpZ9alqXf1SBClILe3LA0QnkvkHQ=; b=mDnbyxDEngfxlvoTdWWkLJAiHLLNeuRoElOQ7RydfdLSyRQoUy3oLO10mDT65I9fR2 VpOIyjW5eDZC1ecQzjo/JzHhthTPquUp9TAYcvh8kgZmL6ja08xkeZx7dr8spl+3XbUD M5wXbv7PntVWX/8CaKnc2SiuWzOTJkA0UONzO9xEg0nbGweMjL44OqkJ4wIM2UGKzhMs ut0IyV94KsZWRyf5W0YGCOhahNU4MQMgm+602GEjsFG5RS28Bi5x2LCjPd59jeT33CXZ ijuLAkRPXiibuPLwX0zs4IEHrif843MniOHHDbVu9G5RrjJ+Dy0Js1uI8ROBnnpRc75A fCEA== X-Gm-Message-State: APzg51CM3/xg+p+UlVA0xtP0+XeUPp4E2AVBrubWWMRsKyg0qKrd/LxC dIsyWZap0Z3xp7hjObJACNnQM90/ X-Google-Smtp-Source: ANB0VdaiFnjeqwuZHzCHBqxy9tlEq00jVCK4QZxgOKLqCrxbrshlSlJHsjf60P0vNziwQkJIj5Y6EA== X-Received: by 2002:a25:c8c1:: with SMTP id y184-v6mr4125162ybf.196.1535921871782; Sun, 02 Sep 2018 13:57:51 -0700 (PDT) To: zsh-users@zsh.org From: Ben Klein Subject: Capturing STDOUT without subshells or file I/O Openpgp: preference=signencrypt Autocrypt: addr=robobenklein@gmail.com; prefer-encrypt=mutual; keydata= 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 LYWmOZBC1ymq76L5DmjOBcQBlBePHHlcORk= Message-ID: <04a12c6a-c926-b088-f386-8a2bdb81dad2@gmail.com> Date: Sun, 2 Sep 2018 16:57:49 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="8aZ2pdK2ZkwatTBCtWnkA2xr4FyvMsHWY" --8aZ2pdK2ZkwatTBCtWnkA2xr4FyvMsHWY Content-Type: multipart/mixed; boundary="8s72cVqDBojJJrB7x3QUz14gtsy3j0htJ"; protected-headers="v1" From: Ben Klein To: zsh-users@zsh.org Message-ID: <04a12c6a-c926-b088-f386-8a2bdb81dad2@gmail.com> Subject: Capturing STDOUT without subshells or file I/O --8s72cVqDBojJJrB7x3QUz14gtsy3j0htJ Content-Type: multipart/alternative; boundary="------------E160033408D6D1136F8E8C11" Content-Language: en-US This is a multi-part message in MIME format. --------------E160033408D6D1136F8E8C11 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hello Zshellers, I have an interesting predicament, I with to capture the STDOUT (builtin printf) of a ZSH function to a variable, in which the function should be running in the current shell context. Currently, I have this: =C2=A0 p10k_render_prompt_from_spec p10k_left p10k_opts > $tmpd/prompt =C2=A0 read -d $'\0' _P10K_RENDERED_OUTPUT_PROMPT < $tmpd/prompt =C2=A0 p10k_render_prompt_from_spec p10k_right p10k_opts right > $tmpd/pr= ompt =C2=A0 read -d $'\0' _P10K_RENDERED_OUTPUT_RPROMPT < $tmpd/prompt And that involves creating a temporary file (/tmp) which might be mounted on a spinning drive, so performance might take a hit. The other route using a pipe: p10k_render_prompt_from_spec p10k_left p10k_opts | read -d $'\0' _P10K_RENDERED_OUTPUT_PROMPT Causes environment variables and changes made during the `render_prompt` call to be ignored. (Ends up in a subshell...?) Is there some way I can use a virtual FD, or perhaps Zsh provides some kind of buffer I could use instead? In the end, I'm looking for a way to connect STDOUT to STDIN between ZSH functions/builtins without any subshells or file I/O. (It's fine if it gets buffered until close-of-stream.) --=20 *\Ben Klein* Founder and Owner of Robosane, robobenklein@robosane.net You can find me elsewhere online as 'robobenklein'. If you need to contact me securely, I am also reachable via GPG, or on Keybase. --------------E160033408D6D1136F8E8C11 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable

Hello Zshellers,

I have an interesting predicament, I with to capture the STDOUT (builtin printf) of a ZSH function to a variable, in which the function should be running in the current shell context.

Currently, I have this:

=C2=A0 p10k_render_prompt_from_spec p10k_left p10k_opts > $tmpd/prompt
=C2=A0 read -d $'\0' _P10K_RENDERED_OUTPUT_PROMPT < $tmpd/prom= pt
=C2=A0 p10k_render_prompt_from_spec p10k_right p10k_opts right &g= t; $tmpd/prompt
=C2=A0 read -d $'\0' _P10K_RENDERED_OUTPUT_RPROMPT < $tmpd/pro= mpt

And that involves creating a temporary file (/tmp) which might be mounted on a spinning drive, so performance might take a hit.

The other route using a pipe:

p10k_render_prompt_from_spec p10k_left p10k_opts | read -d $'\0' _P10K_RENDERED_OUTPUT_PROMPT

Causes environment variables and changes made during the `render_prompt` call to be ignored. (Ends up in a subshell...?)

=

Is there some way I can use a virtual FD, or perhaps Zsh provides some kind of buffer I could use instead?

In the end, I'm looking for a way to connect STDOUT to STDIN between ZSH functions/builtins without any subshells or file I/O. (It's fine if it gets buffered until close-of-stream.)

--
\Ben Klein
Founder and Owner of Robosane, robobenklein@robosane.net=
You can find me elsewhere online as 'robobenklein'.
If you need to contact me securely, I am also reachable via GPG, or on Keybase.
--------------E160033408D6D1136F8E8C11-- --8s72cVqDBojJJrB7x3QUz14gtsy3j0htJ-- --8aZ2pdK2ZkwatTBCtWnkA2xr4FyvMsHWY Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- iQGzBAEBCAAdFiEEduJ2cMi6RbFP7d/7qNM6N7Frbs8FAluMTs0ACgkQqNM6N7Fr bs+75QwAjj8D1WX8LgWsfZJx4+dfze75fX5EAFweHL/E1XjWXs0NkdVBqQXbEG/r zW/tIx4tNzZWNIRzhpKrMZYsncVYmgo5lAcJGwAXv5PrjOlifBT7Rd4HsszuS81J 7XG6GfUDcorxYwse7mMUFrsiFSn5I++e8UtAI7n6GhsW4lkGq7It6Mz6udFDICJ5 ppCBKZsM29L0TlyQFY/VYG43VVEh0/C66js4N20X2kpJgQ0kwx2SVwryjGlKoOF7 jN3l+HgajC9CngSUmt+Z0JtWeb6mic9RgJV5KXClxPvold0PLVaRVl+d1f4c1sQ8 K/XXuJ0ablWya78JfV1/liZJYujM/szKGbuf6BBEZZbctt3r+0CdLu9xnHJ7PsVX DkEvpgLlI2IpEWT8xmcplyId/7L7kfYbDXrfeuY+kLpE29XKDYw16lsF47YHelbS Guk4LM9WiCAUoyiETilN2bpuIv29/7z7CRvNJR29zr6952CMU8abmeOazdNqMGNy ex/Bsiw3 =K7Ht -----END PGP SIGNATURE----- --8aZ2pdK2ZkwatTBCtWnkA2xr4FyvMsHWY--