hexyl
hexyl copied to clipboard
Interrupting hexyl with ^C leaves ugly remnant
It should probably handle SIGINT and terminate the output as if it was EOF (but maybe with some mark):
│00001410│ 57 37 f9 ae 0b ae 6c 8a ┊ df 0e d8 20 15 f1 d7 f6 │W7×ו×l×┊×•× •×××│
│00001420│ a5 5e 99 b0 bd bf 22 a7 ┊ b2 e0 ab ^C | ×^×××"×┊×××^C |
Thank you for reporting this. This should be easy to fix, yes.
Fixed in v0.4.0.
Reproducible in multiple terminal emulators. Consistenly nice only in linux text terminal.
This is what ctrl-c looks like on Mac OS X
If somebody has an idea how to fix this, let me know.
Well, part of the problem is synchronous handling of ctrl+c. If you move process exit into the handler, the situation improves. I'm not sure what's actually safe to be called from a signal handler in Rust though (normally described in: man 7 signal-safety).
It's still a bit of a problem, I assume because of stdout buffering. May need some uglier tricks to work around (setbuf?).
A possibly related issue is that on MacOS, when running hexyl without any input the application can't be terminated. Like this:

This is with hexyl 0.6.0 on MacOS 10.14.6
@secworks That looks like a different bug to me (much less esoteric than this one; thank you for reporting it). It would be great if you could create a new ticket.
With the changes in #84, this is now open again. In my terminal and on zsh
, this is not an issue. But apparently it causes problems in some terminal/shell combinations.
@sharkdp Have you tried using alternative buffer when opening the application ?
The smcup
/ rmcup
capability of the terminal ?
Using an alternative buffer would mean that you have to handle scrolling yourself and you can't see the output anymore after you exit hexyl
.
I guess the only other thing i can think of is disabling echo and reenabling it after quitting, but you probably already did that right?
I'm not sure what that means?
echo is when you press a key it displays on the terminal, but i think it is already disabled otherwise any key would be visible on a press
Echo is enabled. I can still type stuff while I run cat /dev/zero | pv -q -L 16 | hexyl
(read zeros at a rate of 16 bytes per second)
@bjorn3 You are right
I've been able to test it with little bash (does not work on zsh)
orig=$(stty -g)
stty -echo
hexyl /dev/urandom
stty $orig
And it doesnt show the ^C
anymore
I'm closing this due to inactivity. And because I can not reproduce this on my machine. Please feel free to comment in case it should be re-opened.