From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17076 invoked by alias); 24 Sep 2011 17:59:02 -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: X-Seq: 16416 Received: (qmail 14397 invoked from network); 24 Sep 2011 17:58:59 -0000 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received-SPF: none (ns1.primenet.com.au: domain at closedmail.com does not designate permitted sender hosts) From: Bart Schaefer Message-id: <110924105834.ZM24858@torch.brasslantern.com> Date: Sat, 24 Sep 2011 10:58:34 -0700 In-reply-to: <1316882951.6522.YahooMailClassic@web65610.mail.ac4.yahoo.com> Comments: In reply to Guido van Steen "Re: pure zsh implementation of wget" (Sep 24, 9:49am) References: <1316882951.6522.YahooMailClassic@web65610.mail.ac4.yahoo.com> X-Mailer: OpenZMail Classic (0.9.2 24April2005) To: zsh-users@zsh.org Subject: Re: pure zsh implementation of wget MIME-version: 1.0 Content-type: text/plain; charset=us-ascii On Sep 24, 9:49am, Guido van Steen wrote: } } One more question: How should I modify that snippet to download a } random url, such as like } http://security.debian.org/pool/updates/main/i/isc-dhcp/dhcp3-client_4.1.1-P1-15+squeeze3_all.deb I think you mean "arbitrary" rather than "random"? Which in turn means you want to parse the URL. A quick way is probably IFS=/ read scheme empty server resource <<<$theurl which leads to zwget() { emulate -LR zsh local scheme empty server resource fd IFS=/ read scheme empty server resource <<<$1 case $scheme in (https:) print -u2 SSL unsupported, falling back on HTTP ;& (http:) zmodload zsh/net/tcp ztcp $server 80 && fd=$REPLY || exit 1;; (*) print -u2 $scheme unsupported; exit 1;; esac print -l -u$fd -- \ "GET /$resource HTTP/1.1"$'\015' \ "Host: $server"$'\015' \ 'Connection: close'$'\015' $'\015' while IFS= read -u $fd -r -e; do; :; done ztcp -c $fd } You can probably work out how to support ftp: using the zsh/zftp module.