From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.0 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 Received: from zero.zsh.org (zero.zsh.org [IPv6:2a02:898:31:0:48:4558:7a:7368]) by inbox.vuxu.org (Postfix) with ESMTP id E9E07216AC for ; Sun, 11 Feb 2024 01:59:57 +0100 (CET) ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1707613197; b=AZGeHCkrTxuCcvVnEExOvhPdmKLX9CZtHyrRNZ+RLl6aOh6684ClZy63letYyE/2hl+QZ8ufJz BXNwTFiThLm4o9Utt2l5DlEqQavRLq1FYMBeZ6ZkbycnQk4ANpeZbOjs/e0c4DnoPCNT4OoZrv 5MJdNtrXaWEHOwoga56dfz4gIOuEwl3x4rUnnHysjiadE2hUG4EABsgonsP833ngcJhc0mlKMz q0+MIFv2NhFYmCXtSQorDyv/J8DZ+jTQcAVws+Dk+eTjx0JGMaYgIQrz+xoYu5kAn1tpWyZ5O3 d6S5qb+VZIVuR6XdqLu7C7mzfiKkpBNlZPMI42RoyFMUCw==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-lj1-f171.google.com) smtp.remote-ip=209.85.208.171; dkim=pass header.d=gmail.com header.s=20230601 header.a=rsa-sha256; dmarc=pass header.from=gmail.com; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20210803; t=1707613197; bh=6yQ+VZGLsg4CYBVh0zaafYKhQsy4bXPs5FSiERp/9uc=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Type:To:Subject:Message-ID:Date:From:References: In-Reply-To:MIME-Version:DKIM-Signature:DKIM-Signature; b=gr/DdWxn0Ru9k0aH2bOGTu7llPbk9H+/4xpU4oPKc1qL1zuqAw22rpMyZTZOgqMAgM9ffh57Ik WRypRPvtvPVtkO5XGDjuj4lc84OUp7MWw7X+adegkQZWTLM59STXIE3mH18xLoHOBf7axGdGJl SRJnskw4por2E2QPtD825tXwdy+I5NDjZu+jWrcciQ0unKZZUrYLJYs2ysIt5GjGIvKjDV5URF zyxiOHBj5JKYLI23CSEzFTKtENH34hv21N0ZhGmsoEy77HNQawk9ZiWYcXy4NaSyhdhXZlFETw +w01CeocLh8jLowANjc4NwXzzFuAmfjOriW58p8lsuT6zw==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20210803; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:Content-Type:To:Subject:Message-ID: Date:From:References:In-Reply-To:MIME-Version:Reply-To:Cc: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID; bh=Rurpqiq0gpf++Z8lHHLJPSnOIZ7TuekyqgxGfzXfTxE=; b=R8eMefWgewG21CI73O1TlEYiP4 z1nA0aNDM9KDJfbAI3I5XqZ4x/GkktsXWJdvh3eGxnV4EUPc2aqbynCLid7kYSX0pllsxgQz6AZhx BPE1+i7FiQJ8FRu3PNxgu32XbkkbRPNZbeI8hqL2GswkExzTtIfSRcmrKY9+Zu0tGLhFD6TxvC/TQ NK4tni1Zv0XhIBpNTujtjUwDC6LHDrbDCykXt9Sq+qSrwD4rijki4ZXhN4safYl6p8hIaLyquMC6b JvrOWG+v7nGXXByc+2GNyRh/zVt5LkLo2gG4fpA6wOoqqE1YNQT/bE3QOxy7AA5rnVqB58eQEyp6g Bz3C5bhg==; Received: by zero.zsh.org with local id 1rYyCL-000Jka-P2; Sun, 11 Feb 2024 00:59:57 +0000 Authentication-Results: zsh.org; iprev=pass (mail-lj1-f171.google.com) smtp.remote-ip=209.85.208.171; dkim=pass header.d=gmail.com header.s=20230601 header.a=rsa-sha256; dmarc=pass header.from=gmail.com; arc=none Received: from mail-lj1-f171.google.com ([209.85.208.171]:48226) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1rYyBj-000Izg-Rf; Sun, 11 Feb 2024 00:59:21 +0000 Received: by mail-lj1-f171.google.com with SMTP id 38308e7fff4ca-2d09cf00214so26162091fa.0 for ; Sat, 10 Feb 2024 16:59:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1707613159; x=1708217959; darn=zsh.org; h=to:subject:message-id:date:from:references:in-reply-to:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=Rurpqiq0gpf++Z8lHHLJPSnOIZ7TuekyqgxGfzXfTxE=; b=nP9QWqfiVlLGsRSodWsU/Mznk841A0xQ+OPIJp4VeCSx08lezwKEoHRo7dqQsqHRT0 8vzhfNDSAEHp5h3MFFDhlf4SJf+jjvYhckkuk3/3JmV9klk3wRregZZ+9Q+RDP7bQfAa bQ1wjfXtBEqhl3ohxoQM8W1dkW5lZa7YU/tUefsnkShZfmpczt1THyhINxk4Fy6s/QEz Y0IdxnAVFfHP79mzyd85Xws8g39gjwd5uCDv3ab75uLN8VwR2d48C4gd0FXP5Viao9Af oZXEaptvi4tzi8V017es2stpMjQWbtnb6TGJDFzp+mmSgwzKnmNxzQ3t/sJqHykt6JhM GpAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707613159; x=1708217959; h=to:subject:message-id:date:from:references:in-reply-to:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Rurpqiq0gpf++Z8lHHLJPSnOIZ7TuekyqgxGfzXfTxE=; b=tI7mcwN+AjhITcznRBzDU1P07CAKH8/VxZgGTOWNJBNYPRf+cET/zuQcelOLYOSjde 1NXJ78/TkGhowjXuwObReXpEW2zZHNXta5pbZh30RfSflbVvSJVBe+yi4LgxSU+b/6w8 Sh5+a/IlWNBKLmJWlYXL3HDn7r/jTL9xvkY5r8LHLuFxz53aMZeJb1V7/NTcPkXWfIQ2 pQfY35qHNIwDgUiugKCZwhbJZM5V1K3P2mAS42ui8+NP1p7hwT8GhDjO2migWTFINEYT JXwZqNYA1ouFLq+MsdqJq11LSUNoO0EQl6kJnFPhvog1U6ti/JoVx7/BOC28cWjecYWL Neog== X-Gm-Message-State: AOJu0YwYW6InaJz5mU8svGypM54KLoqSHhN6jqYrX3fClbRT+yeSFcu7 mHl0fFddQ61W50K5uGRHKNmte0FVaY7l7cOlkgpJNyqZXqvNZE4qk8uPIbbos6spCY6JyZYon3q T9XgGd7fJk78uNibnd66o2rBjwiITjzKI X-Google-Smtp-Source: AGHT+IEGfdhgIIcZnWO0ho+MdWT8bAg+TirW06pM3ykqeLmEr6o9y84+/jltCPcMJFupo33det3jpj92NxAHG+AHFxs= X-Received: by 2002:a05:651c:4ce:b0:2d0:8eff:431e with SMTP id e14-20020a05651c04ce00b002d08eff431emr2180354lji.44.1707613159008; Sat, 10 Feb 2024 16:59:19 -0800 (PST) MIME-Version: 1.0 Received: by 2002:a05:7208:2212:b0:7d:6680:bb4f with HTTP; Sat, 10 Feb 2024 16:59:18 -0800 (PST) In-Reply-To: <20240210204803.2ogpi5h752uzwf6e@chazelas.org> References: <205735b2-11e1-4b5e-baa2-7418753f591f@eastlink.ca> <20240210204803.2ogpi5h752uzwf6e@chazelas.org> From: Mikael Magnusson Date: Sun, 11 Feb 2024 01:59:18 +0100 Message-ID: Subject: Re: Slurping a file (was: more spllitting travails) To: Roman Perepelitsa , Bart Schaefer , Zsh Users Content-Type: text/plain; charset="UTF-8" X-Seq: 29650 Archived-At: X-Loop: zsh-users@zsh.org Errors-To: zsh-users-owner@zsh.org Precedence: list Precedence: bulk Sender: zsh-users-request@zsh.org X-no-archive: yes List-Id: List-Help: , List-Subscribe: , List-Unsubscribe: , List-Post: List-Owner: List-Archive: On 2/10/24, Stephane Chazelas wrote: > 2024-01-14 11:34:00 +0100, Roman Perepelitsa: > [...] >> function slurp() { >> emulate -L zsh -o no_multibyte >> zmodload zsh/system || return >> local -a content >> local -i i >> while true; do >> sysread 'content[++i]' && continue >> (( $? == 5 )) || return >> break >> done >> typeset -g REPLY=${(j::)content} >> } > [...] > > IMO, it would be more useful if the result was returned in the > variable whose name was given as argument (defaulting to REPLY > if none was given like for read or sysread). > > And would be better if upon error the returned variable > contained either what was successfully read or nothing (like > read but unlikely sysread). > > Maybe something like: > > zslurp() { > emulate -L zsh -o no_multibyte > typeset -n _zslurp_var=${1-REPLY} > _zslurp_var= > zmodload zsh/system || return > local -a _zslurp_content > local -i _zslurp_i _zslurp_ret > while true; do > sysread '_zslurp_content[++_zslurp_i]' && continue > _zslurp_ret=$? > break > done > _zslurp_var=${(j::)_zslurp_content} > (( _zslurp_ret == 5 )) > } I believe one of the motivating factors for this function was speed, and copying all the data an extra time probably doesn't help with that. -- Mikael Magnusson