Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 23 Aug 2002 08:45:13 -0700 (PDT)
From:      Elliott Hughes <elliotth@bluearc.com>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   misc/41947: hexdump(1) unprintable ASCII enhancement [PATCH]
Message-ID:  <200208231545.g7NFjDDl023041@www.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         41947
>Category:       misc
>Synopsis:       hexdump(1) unprintable ASCII enhancement [PATCH]
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Fri Aug 23 08:50:01 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     Elliott Hughes
>Release:        Mac OS X
>Organization:
>Environment:
Darwin 5.5 powerpc
(also Linux 2.4.18 #4 i686)

>Description:
[Forgive me if this is the wrong place to submit this, but as far as I can work out, the hexdump on Mac OS X and Linux is the one from FreeBSD.]

I'm trying to convert myself away from home-grown stuff to using things
I can rely on to be around on both Mac OS X at home and Linux at work.
The one thing I don't like about BSD hexdump(1) -- available on both --
is that I can't ask it to show me the ASCII part of the hex dump in two
colors. This would (a) enable me to distinguish an actual '.' from a
pseudo-'.' used to represent an unprintable character and (b) makes it
far easier to read control codes out of the ASCII part while still
seeing the text.

I've used the same command-line options as GNU grep(1), not least
because both -c and -C are already taken! I also emulate grep's
behavior with regard to not coloring output not going to a tty or
going to a tty calling itself "dumb". I've also used HEXDUMP_COLOR
analagous to GREP_COLOR.

The only thing I'm not sure about is my use of getopt_long. I don't
know what the appropriate change to a BSD makefile would be, or
whether I actually need to include getopt.h and getopt.c as part of
hexdump; does BSD have GNU getopt?

[On a not unrelated note, it might be worth a page somewhere explaining
how Mac OS X users can join in. We're pseudo-BSD users: enough to
benefit from improvements to BSD but not enough to be using an actual
BSD release or have the BSD sources/build system around.]

>How-To-Repeat:
Apply the patch, and try stuff like:

hexdump -C --color `which hexdump`               # color hexdump
hexdump -C --color `which hexdump` | head        # no color in a pipe
hexdump -C --color=always `which hexdump` | head # unless you force it

>Fix:
uuencoded diff -u:

begin 644 hexdump-patch.txt
M9&EF9B`M=2!H97AD=6UP+6]R:6=I;F%L+V1I<W!L87DN8R!H97AD=6UP+V1I
M<W!L87DN8PHM+2T@:&5X9'5M<"UO<FEG:6YA;"]D:7-P;&%Y+F,)5&AU($%U
M9R`Q-2`Q,SHT-#HU-B`R,#`R"BLK*R!H97AD=6UP+V1I<W!L87DN8PE&<FD@
M075G(#(S(#$V.C$W.C4W(#(P,#(*0$`@+34U+#8@*S4U+#$Q($!`"B!S=&%T
M:6,@;V9F7W0@861D<F5S<SL)"0DO*B!A9&1R97-S+V]F9G-E="!I;B!S=')E
M86T@*B\*('-T871I8R!O9F9?="!E861D<F5S<SL)"0DO*B!E;F0@861D<F5S
M<R`J+PH@"BLO*B!4:&4@8V]L;W(@<W1R:6YG('5S960N(%1H92!U<V5R(&-A
M;B!O=F5R<FED92!I="!U<VEN9R!T:&4@96YV:7)O;FUE;G0**R`@('9A<FEA
M8FQE($A%6$1535!?0T],3U(N(%1H92!D969A=6QT(&ES(')E9"X@*B\**V-O
M;G-T(&-H87(J(&YO;E]A<V-I:5]C;VQO<B`]("(P,3LS,2(["BL**W-T871I
M8R!?7VEN;&EN92!V;VED('!R:6YT7VEN7V-O;&]R*'5?8VAA<BD["B!S=&%T
M:6,@7U]I;FQI;F4@=F]I9"!P<FEN="A04B`J+"!U7V-H87(@*BD["B`*('9O
M:60*0$`@+3$Q,RPV("LQ,3@L,3<@0$`*('T*(`H@<W1A=&EC(%]?:6YL:6YE
M('9O:60**W!R:6YT7VEN7V-O;&]R*&-H*0HK"75?8VAA<B!C:#L**WL**PEI
M9B`H8V]L;W)?;W!T:6]N*2!["BL)"2AV;VED*7!R:6YT9B@B7#,S6R5S;25C
M7#,S6S`P;2(L(&YO;E]A<V-I:5]C;VQO<BP@8V@I.PHK"7T@96QS92!["BL)
M"2AV;VED*7!R:6YT9B@B)6,B+"!C:"D["BL)?0HK?0HK"BMS=&%T:6,@7U]I
M;FQI;F4@=F]I9`H@<')I;G0H<'(L(&)P*0H@"5!2("IP<CL*(`EU7V-H87(@
M*F)P.PI`0"`M,3<X+#<@*S$Y-"PQ-"!`0`H@"0E]"B`)"6)R96%K.PH@"6-A
M<V4@1E]0.@HM"0DH=F]I9"EP<FEN=&8H<'(M/F9M="P@:7-P<FEN="@J8G`I
M(#\@*F)P(#H@)RXG*3L**PD):68@*&-O;&]R7V]P=&EO;B`]/2`Q("8F(&ES
M8VYT<FPH*F)P*2D@>PHK"0D)=5]C:&%R(&-O;G1R;VQ?97%U:79A;&5N="`]
M("IB<"`K("=`)SL**PD)"7!R:6YT7VEN7V-O;&]R*&-O;G1R;VQ?97%U:79A
M;&5N="D["BL)"7T@96QS92!I9B`H:7-P<FEN="@J8G`I*2!["BL)"0DH=F]I
M9"EP<FEN=&8H<'(M/F9M="P@*F)P*3L**PD)?2!E;'-E('L**PD)"7!R:6YT
M7VEN7V-O;&]R*"<N)RD["BL)"7T*(`D)8G)E86L["B`)8V%S92!&7U-44CH*
M(`D)*'9O:60I<')I;G1F*'!R+3YF;70L("AC:&%R("HI8G`I.PID:69F("UU
M(&AE>&1U;7`M;W)I9VEN86PO:&5X9'5M<"YC(&AE>&1U;7`O:&5X9'5M<"YC
M"BTM+2!H97AD=6UP+6]R:6=I;F%L+VAE>&1U;7`N8PE4:'4@075G(#$U(#$S
M.C0U.C$V(#(P,#(**RLK(&AE>&1U;7`O:&5X9'5M<"YC"5=E9"!!=6<@,C$@
M,#DZ-3DZ,3D@,C`P,@I`0"`M-38L-B`K-38L-R!`0`H@:6YT(&)L;V-K<VEZ
M93L)"0D)+RH@9&%T82!B;&]C:R!S:7IE("HO"B!I;G0@97AI='9A;#L)"0D)
M+RH@9FEN86P@97AI="!V86QU92`J+PH@:6YT(&QE;F=T:"`]("TQ.PD)"2\J
M(&UA>"!B>71E<R!T;R!R96%D("HO"BMI;G0@8V]L;W)?;W!T:6]N(#T@,#L@
M("`@("`@+RH@=VAE=&AE<B!O<B!N;W0@=&\@9&ES<&QA>2!N;VXM05-#24D@
M:6X@8V]L;W(@*B\*(`H@:6YT"B!M86EN*&%R9V,L(&%R9W8I"F1I9F8@+74@
M:&5X9'5M<"UO<FEG:6YA;"]H97AD=6UP+F@@:&5X9'5M<"]H97AD=6UP+F@*
M+2TM(&AE>&1U;7`M;W)I9VEN86PO:&5X9'5M<"YH"51H=2!!=6<@,34@,3,Z
M-#4Z,CD@,C`P,@HK*RL@:&5X9'5M<"]H97AD=6UP+F@)5V5D($%U9R`R,2`Q
M,#HP.3HS."`R,#`R"D!`("TW-BPV("LW-BPX($!`"B!E>'1E<FX@:6YT(&]D
M;6]D93L)"0DO*B!A<F4@=V4@86-T:6YG(&%S(&]D*#$I/R`J+PH@97AT97)N
M(&EN="!L96YG=&@["0D)+RH@86UO=6YT(&]F(&1A=&$@=&\@<F5A9"`J+PH@
M97AT97)N(&]F9E]T('-K:7`["0D)+RH@86UO=6YT(&]F(&1A=&$@=&\@<VMI
M<"!A="!S=&%R="`J+PHK97AT97)N(&EN="!C;VQO<E]O<'1I;VX[("`@("\J
M('=H971H97(@;W(@;F]T('1O(&1I<W!L87D@;F]N+4%30TE)(&EN(&-O;&]R
M("HO"BME>'1E<FX@8V]N<W0@8VAA<BH@;F]N7V%S8VEI7V-O;&]R.R`@("`@
M+RH@=VAA="!C;VQO<B!T;R!U<V4@*B\*(&5N=6T@7W9F;&%G('L@04Q,+"!$
M55`L($9)4E-4+"!704E4('T["2\J("UV('9A;'5E<R`J+PH@97AT97)N(&5N
M=6T@7W9F;&%G('9F;&%G.PH@"F1I9F8@+74@:&5X9'5M<"UO<FEG:6YA;"]H
M97AS>6YT87@N8R!H97AD=6UP+VAE>'-Y;G1A>"YC"BTM+2!H97AD=6UP+6]R
M:6=I;F%L+VAE>'-Y;G1A>"YC"51H=2!!=6<@,34@,3,Z-#4Z-#D@,C`P,@HK
M*RL@:&5X9'5M<"]H97AS>6YT87@N8PE&<FD@075G(#(S(#$V.C$Y.C,X(#(P
M,#(*0$`@+3,W+#$Q("LS-RPQ,R!`0`H@(V5N9&EF"B`C96YD:68@+RH@;F]T
M(&QI;G0@*B\*("-I;F-L=61E(#QS>7,O8V1E9G,N:#X*(%]?1D)31$E$*"(D
M1G)E94)31#H@<W)C+W5S<BYB:6XO:&5X9'5M<"]H97AS>6YT87@N8RQV(#$N
M,3$@,C`P,B\P-B\S,"`P-3HR,3HR,B!O8G)I96X@17AP("0B*3L*(`H@(VEN
M8VQU9&4@/'-Y<R]T>7!E<RYH/@H@"B`C:6YC;'5D92`\97)R+F@^"BLC:6YC
M;'5D92`\9V5T;W!T+F@^"BLC:6YC;'5D92`\;&EM:71S+F@^"B`C:6YC;'5D
M92`\<W1D:6\N:#X*("-I;F-L=61E(#QS=&1L:6(N:#X*("-I;F-L=61E(#QS
M=')I;F<N:#X*0$`@+34Q+#8@*S4S+#$W($!`"B`*(&]F9E]T('-K:7`["0D)
M"2\J(&)Y=&5S('1O('-K:7`@*B\*(`HK96YU;0HK>PHK"4-/3$]27T]05$E/
M3B`]($-(05)?34%8("L@,0HK?3L**W-T871I8R!S=')U8W0@;W!T:6]N(&-O
M;G-T(&QO;F=?;W!T:6]N<UM=(#T**WL**PE[(F-O;&]R(BP@;W!T:6]N86Q?
M87)G=6UE;G0L($Y53$PL($-/3$]27T]05$E/3GTL"BL)>R)C;VQO=7(B+"!O
M<'1I;VYA;%]A<F=U;65N="P@3E5,3"P@0T],3U)?3U!424].?2P**PE[,"P@
M,"P@,"P@,'T**WT["BL*('9O:60*(&YE=W-Y;G1A>"AA<F=C+"!A<F=V<"D*
M(`EI;G0@87)G8SL*0$`@+38W+#<@*S@P+#<@0$`*(`D)861D*")<(B4P."XX
M7V%X("!<(B`X+S$@7"(E,#)X(%PB(%PB("!<(B`X+S$@7"(E,#)X(%PB("(I
M.PH@"0EA9&0H(EPB("!\7"(@,38O,2!<(B5?<%PB(%PB?%Q<;EPB(BD["B`)
M?0HM"7=H:6QE("@H8V@@/2!G971O<'0H87)G8RP@87)G=BP@(F)C0V1E.F8Z
M;CIO<SIV>"(I*2`A/2`M,2D**PEW:&EL92`H*&-H(#T@9V5T;W!T7VQO;F<H
M87)G8RP@87)G=BP@(F)C0V1E.F8Z;CIO<SIV>"(L(&QO;F=?;W!T:6]N<RP@
M3E5,3"DI("$]("TQ*0H@"0ES=VET8V@@*&-H*2!["B`)"6-A<V4@)V(G.@H@
M"0D)861D*")<(B4P-RXW7T%X7&Y<(B(I.PI`0"`M,3(T+#8@*S$S-RPR."!`
M0`H@"0D)8G)E86L["B`)"6-A<V4@)S\G.@H@"0D)=7-A9V4H*3L**PD)8V%S
M92!#3TQ/4E]/4%1)3TXZ"BL)"0EI9B`H;W!T87)G*2!["BL)"0D):68@*"%S
M=')C87-E8VUP*&]P=&%R9RP@(F%L=V%Y<R(I('Q\("%S=')C87-E8VUP*&]P
M=&%R9RP@(GEE<R(I('Q\("%S=')C87-E8VUP*&]P=&%R9RP@(F9O<F-E(BDI
M('L**PD)"0D)8V]L;W)?;W!T:6]N(#T@,3L**PD)"0E](&5L<V4@:68@*"%S
M=')C87-E8VUP*&]P=&%R9RP@(FYE=F5R(BD@?'P@(7-T<F-A<V5C;7`H;W!T
M87)G+"`B;F\B*2!\?"`A<W1R8V%S96-M<"AO<'1A<F<L(")N;VYE(BDI('L*
M*PD)"0D)8V]L;W)?;W!T:6]N(#T@,#L**PD)"0E](&5L<V4@:68@*"%S=')C
M87-E8VUP*&]P=&%R9RP@(F%U=&\B*2!\?"`A<W1R8V%S96-M<"AO<'1A<F<L
M(")T='DB*2!\?"`A<W1R8V%S96-M<"AO<'1A<F<L(")I9BUT='DB*2D@>PHK
M"0D)"0EC;VQO<E]O<'1I;VX@/2`R.PHK"0D)"7T@96QS92!["BL)"0D)"65R
M<G@H,2P@(B5S.B!C;VQO<B!O<'1I;VX@;6%Y(&)E(&!A;'=A>7,G+"!@;F5V
M97(G(&]R(&!A=71O)RXB+"!O<'1A<F<I.PHK"0D)"7T**PD)"7T@96QS92![
M"BL)"0D)8V]L;W)?;W!T:6]N(#T@,CL**PD)"7T**PD)"6EF("AC;VQO<E]O
M<'1I;VX@/3T@,BD@>PHK"0D)"6EF("AI<V%T='DH4U1$3U547T9)3$5.3RD@
M)B8@9V5T96YV*")415)-(BD@)B8@<W1R8VUP*&=E=&5N=B@B5$5232(I+"`B
M9'5M8B(I*2!["BL)"0D)"6-O;&]R7V]P=&EO;B`](#$["BL)"0D)?2!E;'-E
M('L**PD)"0D)8V]L;W)?;W!T:6]N(#T@,#L**PD)"0E]"BL)"0E]"BL)"0EB
M<F5A:SL*(`D)?0H@"B`):68@*"%F<VAE860I('L*0$`@+3$S,2PQ-B`K,38V
M+#(U($!`"B`)"6%D9"@B7"(E,#<N-U]A>"!<(B`X+S(@7"(E,#1X(%PB(%PB
M7%QN7"(B*3L*(`E]"B`**PEI9B`H8V]L;W)?;W!T:6]N*2!["BL)"6-H87(J
M('5S97)?;W9E<G)I9&4@/2!G971E;G8H(DA%6$1535!?0T],3U(B*3L**PD)
M:68@*'5S97)?;W9E<G)I9&4@(3T@3E5,3"`F)B`J=7-E<E]O=F5R<FED92`A
M/2`G7#`G*2!["BL)"0EN;VY?87-C:6E?8V]L;W(@/2!U<V5R7V]V97)R:61E
M.PHK"0E]"BL)?0HK"B`)*F%R9W9P("L](&]P=&EN9#L*('T*(`H@=F]I9`H@
M=7-A9V4H*0H@>PHM"2AV;VED*69P<FEN=&8H<W1D97)R+"`B)7-<;B5S7&XE
M<UQN)7-<;B(L"BTB=7-A9V4Z(&AE>&1U;7`@6RUB8T-D;W9X72!;+64@9FUT
M72!;+68@9FUT7V9I;&5=(%LM;B!L96YG=&A=(BP**PDH=F]I9"EF<')I;G1F
M*'-T9&5R<BP@(B5S7&XE<UQN)7-<;B5S7&XE<UQN)7-<;B(L"BLB=7-A9V4Z
M(&AE>&1U;7`@6RUB8T-D;W)V>%T@6RUE(&9M=%T@6RUF(&9M=%]F:6QE72!;
M+6X@;&5N9W1H72(L"BLB("`@("`@("`@("`@("`@6RTM8V]L;W(]>V%L=V%Y
M<RQN979E<BQA=71O?5TB+`H@(B`@("`@("`@("`@("`@(%LM<R!S:VEP72!;
M9FEL92`N+BY=(BP*+2(@("`@("`@:&0@("`@("!;+6)C9&]V>%T@(%LM92!F
M;71=(%LM9B!F;71?9FEL95T@6RUN(&QE;F=T:%TB+`HK(B`@("`@("!H9"`@
M("`@(%LM8F-D;W)V>%T@(%LM92!F;71=(%LM9B!F;71?9FEL95T@6RUN(&QE
M;F=T:%TB+`HK(B`@("`@("`@("`@("`@(%LM+6-O;&]R/7MA;'=A>7,L;F5V
M97(L875T;WU=(BP*("(@("`@("`@("`@("`@("!;+7,@<VMI<%T@6V9I;&4@
6+BXN72(I.PH@"65X:70H,2D["B!]"@``
`
end

>Release-Note:
>Audit-Trail:
>Unformatted:

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200208231545.g7NFjDDl023041>