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>