From: Daniel Shahaf <d.s@daniel.shahaf.name>
To: Frank Terbeck <ft@bewatermyfriend.org>
Cc: Reed Riley <john.reed.riley@gmail.com>, zsh-workers@zsh.org
Subject: Re: [PATCH] Fix hexdump command used for mercurial dirstate parsing
Date: Sun, 30 Oct 2016 17:06:58 +0000 [thread overview]
Message-ID: <20161030170534.GA17437@fujitsu.shahaf.local2> (raw)
In-Reply-To: <20161030155530.GC12137@fujitsu.shahaf.local2>
Daniel Shahaf wrote on Sun, Oct 30, 2016 at 15:55:30 +0000:
> Frank Terbeck wrote on Sun, Oct 30, 2016 at 12:11:01 +0100:
> > It would be conceivable to make the command that is called in these
> > places configurable via styles. But that is a separate issue to the
> > one that fixes our use of hexdump.
>
> Couldn't we replace hexdump by a pure zsh solution? We simply need to
> read 20 octets and print their hexadecimal values.
This seems to do the job:
% f() {
local fname=$1 bytecount=$2
# Read 20 bytes
setopt localoptions nomultibyte
integer fd; local val
exec {fd}<$fname
read -k $bytecount -r -u $fd val
exec {fd}<&-
# Convert them to hex
setopt localoptions extendedglob
local -r -A pad=( $'\0' 0 $'\1' 0 $'\2' 0 $'\3' 0 $'\4' 0 $'\5' 0 $'\6' 0 $'\7' 0 $'\10' 0 $'\11' 0 $'\12' 0 $'\13' 0 $'\14' 0 $'\15' 0 $'\16' 0 $'\17' 0 )
REPLY=${(L)val//(#b)(?)/$pad[$match[1]]$(( [##16] ##${match[1]} ))}
}
% f dirstate 20
% typeset -p REPLY
typeset REPLY=77bba665e970146bd2be0b2da40092e340408804
% xxd -l20 -p < dirstate
77bba665e970146bd2be0b2da40092e340408804
%
Would something along these lines be preferable?
Thanks to Mikael for the inner loop.
Cheers,
Daniel
next prev parent reply other threads:[~2016-10-30 17:09 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-30 2:47 Reed Riley
2016-10-30 5:34 ` Bart Schaefer
2016-10-30 7:01 ` Mikael Magnusson
2016-10-30 11:11 ` Frank Terbeck
2016-10-30 14:43 ` Reed Riley
2016-10-30 16:58 ` Reed Riley
2016-10-30 19:57 ` Frank Terbeck
2016-10-30 15:55 ` Daniel Shahaf
2016-10-30 17:06 ` Daniel Shahaf [this message]
2016-10-30 18:28 ` Bart Schaefer
2016-10-30 20:33 ` Daniel Shahaf
2016-10-31 9:04 ` Frank Terbeck
2016-10-31 18:37 ` Daniel Shahaf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20161030170534.GA17437@fujitsu.shahaf.local2 \
--to=d.s@daniel.shahaf.name \
--cc=ft@bewatermyfriend.org \
--cc=john.reed.riley@gmail.com \
--cc=zsh-workers@zsh.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).