Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 5 Sep 2006 03:28:21 -0400
From:      Garance A Drosehn <gad@FreeBSD.org>
To:        Peter Jeremy <peterjeremy@optushome.com.au>, freebsd-current@FreeBSD.org
Cc:        Julian Elischer <julian@elischer.org>
Subject:   Adding a '-D date' option to `cat'
Message-ID:  <p06230937c122c6983e00@[128.113.24.47]>
In-Reply-To: <20060904192006.GA3292@turion.vk2pj.dyndns.org>
References:  <200608281545.k7SFjn6l063922@lurza.secnetix.de> <p06230928c11e2298ca97@[128.113.24.47]> <200609020956.54008.Lucas.James@ldjcs.com.au> <20060902031247.GE749@turion.vk2pj.dyndns.org> <20060904192006.GA3292@turion.vk2pj.dyndns.org>

next in thread | previous in thread | raw e-mail | index | archive | help
--============_-1054681193==_============
Content-Type: text/plain; charset="us-ascii" ; format="flowed"

In the thread on "Re: suggested addition to 'date'"
     on Sept 5/2006, Peter Jeremy wrote:
>On Sat, 2006-Sep-02 13:12:48 +1000, I (Peter Jeremy) wrote:
>  > The justification for extending date(1) is that it already has the
>  > code to handle date/time stamps.  In reality, this code is all in
>  > strftime(3) and cat(1) already has hooks to insert a string at the
>  > beginning of a line so I believe that the attached patch is more
>  > appropriate
>
>Following some off-list comments, I have updated the patch to
>correct a bug, change the option character to 'D' (for date) and
>provide a man page update.

I have picked up Peter's patch, and spent some time testing it.
About all I changed in the source file was to update the 'usage'
message, and to use errx() instead of err() if the format is too
long.  The update increases the size of /bin/cat by 696 bytes on
i386.  The more I think about this option, the more I think it
would be a useful option to have readily available.

I am slightly tempted to move the call to time()+strftime() into
a separate routine, and call that routine during the processing
of options.  That way, if some user *does* specify a format which
is over 1024 bytes, they'll get an immediate error message.  As
it is, they won't see an error until `cat' actually goes to print
the first line that it has read in.  On the other hand, it seems
pretty unlikely that many people will be triggering that error.

I've also made a number of changes to the description Peter added
to the man page, trying to include several more details.  I am
never happy with man pages that I write though, so I will not be
insulted if anyone wants to change this.

I intend to commit this within a few days, unless there are major
objections to it.  I am posting this HEADSUP under a new subject,
so people can dump all kinds of paint over me before I commit it.

-- 
Garance Alistair Drosehn     =               drosehn@rpi.edu
Senior Systems Programmer               or   gad@FreeBSD.org
Rensselaer Polytechnic Institute;             Troy, NY;  USA
--============_-1054681193==_============
Content-Id: <p06230937c122c6983e00@[128.113.24.47].0.0>
Content-Type: application/octet-stream; name="cat-date.diff"
	; x-mac-type="00000000" ; x-mac-creator="00000000"
Content-Disposition: attachment; filename="cat-date.diff"
	; modification-date="Tue, 5 Sep 2006 03:02:57 -0400"
Content-Transfer-Encoding: x-uuencode

begin 644 cat-date.dif
M26YD97@Z(&-A="XQ"CT]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T*4D-3(&9I;&4Z
M("]H;VUE+VYC=G,O<W)C+V)I;B]C870O8V%T+C$L=@IR971R:65V:6YG(')E
M=FES:6]N(#$N,C4*9&EF9B`M=2`M<C$N,C4@8V%T+C$*+2TM(&-A="XQ"3$V
M($IA;B`R,#`U(#$V.C0Q.C4U("TP,#`P"3$N,C4**RLK(&-A="XQ"34@4V5P
M(#(P,#8@,#<Z,#(Z-38@+3`P,#`*0$`@+3,R+#<@*S,R+#<@0$`*("Y<(B`@
M("`@0"@C*6-A="XQ"3@N,R`H0F5R:V5L97DI(#4O,B\Y-0H@+EPB("1&<F5E
M0E-$.B!S<F,O8FEN+V-A="]C870N,2QV(#$N,C4@,C`P-2\P,2\Q-B`Q-CHT
M,3HU-2!R=2!%>'`@)`H@+EPB"BTN1&0@36%R8V@@,C$L(#(P,#0**RY$9"!3
M97!T96UB97(@-2P@,C`P-@H@+D1T($-!5"`Q"B`N3W,*("Y3:"!.04U%"D!`
M("TT,2PV("LT,2PW($!`"B`N4V@@4UE.3U!325,*("Y.;0H@+D]P($9L(&)E
M;G-T=78**RY/<"!&;"!$($%R(&1A=&5?9F]R;6%T"B`N3W`@07(*("Y3:"!$
M15-#4DE05$E/3@H@5&AE"D!`("TW,RPV("LW-"PS,"!`0`H@+D)L("UT86<@
M+7=I9'1H(&EN9&5N=`H@+DET($9L(&(*($YU;6)E<B!T:&4@;F]N+6)L86YK
M(&]U='!U="!L:6YE<RP@<W1A<G1I;F<@870@,2X**RY)="!&;"!$($%R(&1A
M=&5?9F]R;6%T"BM0<F5F:7@@96%C:"!O=71P=70@;&EN92!W:71H(&$@<W1R
M:6YG('1H870@:6YD:6-A=&5S('1H92!D871E(&%N9"]O<@HK=&EM92!W:&5N
M('1H870@;&EN92!W87,@<F5A9"!B>2!T:&4**RY.;0HK=71I;&ET>2X**U1H
M92!F;W)M870@;V8@=&AA="!P<F5F:7@@:7,@<W!E8VEF:65D(&)Y('1H92!V
M86QU92!O9@HK+D%R(&1A=&5?9F]R;6%T("X**U1H90HK+D%R(&1A=&5?9F]R
M;6%T"BMA<F=U;65N="!M87D@8V]N=&%I;B!A;GD@;V8@=&AE(&-O;G9E<G-I
M;VX@<W!E8VEF:6-A=&EO;G,@9&5S8W)I8F5D(&EN('1H90HK+EAR('-T<F9T
M:6UE(#,**VUA;G5A;"!P86=E+"!A<R!W96QL(&%S(&%N>2!A<F)I=')A<GD@
M=&5X="X**TYO('-E<&%R871O<B!W:6QL(&)E(&EN<V5R=&5D(&)E='=E96X@
M=&AE(&=E;F5R871E9"!P<F5F:7@@86YD('1H90HK<F5M86EN9&5R(&]F('1H
M92!O=71P=70@;&EN92P@<V\@:68@82!S97!A<F%T;W(@:7,@9&5S:7)E9"!T
M:&5N"BMT:&4@=F%L=64@9F]R"BLN07(@9&%T95]F;W)M870**W-H;W5L9"!E
M;F0@=VET:"!A('-P86-E(&]R('1H92!C;VYV97)S:6]N('-P96-I9FEE<B!O
M9@HK+D1Q($QI("5T("X**U1H90HK+D9L('0**V%N9`HK+D9L('8**V]P=&EO
M;G,@9&\@;F]T(&%F9F5C="!A;GD@8VAA<F%C=&5R<R!G96YE<F%T960@8GD@
M=&AE"BLN07(@9&%T95]F;W)M870@+@H@+DET($9L(&4*($1I<W!L87D@;F]N
M+7!R:6YT:6YG(&-H87)A8W1E<G,@*'-E92!T:&4*("Y&;"!V"D!`("TQ-3(L
M-B`K,3<W+#(T($!`"B!W:&5N(&ET(&5N8V]U;G1E<F5D('1H92!F:7)S=`H@
M+E%L(%PF+0H@;W!E<F%N9"X**RY0<`HK5&AE(&-O;6UA;F0Z"BLN4'`**RY$
M;"`B8V]M;6%N9"!\(&-A="`M1"`G)48@)50@)R(**RY0<`HK=VEL;"!P<F5P
M96YD('1H92!C=7)R96YT(&1A=&4O=&EM92!I;B!T:&4@9F]R;0HK+D1Q($QI
M(%E965DM34TM1$0@2$@Z34TZ4U,@+`HK9F]L;&]W960@8GD@82!S<&%C92P@
M=&\@96%C:"!L:6YE(&]F('1H92!S=&1O=70@9G)O;0HK+DYM(&-O;6UA;F0@
M+@HK5&AI<R!I<R!U<V5F=6P@9F]R('1I;65S=&%M<&EN9R!O=71P=70L(&5S
M<&5C:6%L;'D@:68**RY.;2!C;VUM86YD"BMW:6QL(&)E(')U;FYI;F<@9F]R
M(&$@;&]N9R!P97)I;V0@;V8@=&EM92P@86YD('EO=2!W86YT('1O(&MN;W<@
M=VAE;@HK96%C:"!O=71P=70@;&EN92!W87,@=W)I='1E;BX**TYO=&4@=&AA
M=`HK+DYM(&-O;6UA;F0**VUU<W0@:&%V92!U;F)U9F9E<F5D(&]R(&QI;F4M
M8G5F9F5R960@;W5T<'5T(&9O<B!T:&4**RY&;"!$"BMO<'1I;VX@=&\@<')O
M9'5C92!A8V-U<F%T92!T:6UE<W1A;7!S+@H@+E-H(%-%12!!3%-/"B`N6'(@
M:&5A9"`Q("P*("Y8<B!M;W)E(#$@+`I`0"`M,38P+#<@*S(P,RPX($!`"B`N
M6'(@=&%I;"`Q("P*("Y8<B!V:7,@,2`L"B`N6'(@>F-A="`Q("P*+2Y8<B!S
M971B=68@,PHK+EAR('-E=&)U9B`S("P**RY8<B!S=')F=&EM92`S"B`N4G,*
M("XE02!2;V(@4&EK90H@+B54(")53DE8(%-T>6QE+"!O<B!C870@+78@0V]N
M<VED97)E9"!(87)M9G5L(@I`0"`M,3<U+#<@*S(Q.2PW($!`"B!S<&5C:69I
M8V%T:6]N+@H@+E!P"B!4:&4@9FQA9W,*+2Y/<"!&;"!B96YS='8**RY/<"!&
M;"!B1&5N<W1V"B!A<F4@97AT96YS:6]N<R!T;R!T:&4@<W!E8VEF:6-A=&EO
M;BX*("Y3:"!(25-43U)9"B!!"D!`("TQ.3DL,R`K,C0S+#D@0$`*(&]R"B`N
M1FP@=@H@;W!T:6]N(&ES(&EN(&5F9F5C="X**RY0<`HK5&AE"BLN3FT**W5T
M:6QI='D@9&]E<R!N;W0@8V]R<F5C=&QY(&AA;F1L92!M=6QT:6)Y=&4@8VAA
M<F%C=&5R<R!I;B!T:&4**V%R9W5M96YT('1O"BLN1FP@1"`N"DEN9&5X.B!C
M870N8PH]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]"E)#4R!F:6QE.B`O:&]M92]N
M8W9S+W-R8R]B:6XO8V%T+V-A="YC+'8*<F5T<FEE=FEN9R!R979I<VEO;B`Q
M+C,R"F1I9F8@+74@+7(Q+C,R(&-A="YC"BTM+2!C870N8PDQ,"!*86X@,C`P
M-2`P.#HS.3HR,"`M,#`P,`DQ+C,R"BLK*R!C870N8PDU(%-E<"`R,#`V(#`W
M.C`R.C4V("TP,#`P"D!`("TV-BPV("LV-BPW($!`"B`*(&EN="!B9FQA9RP@
M969L86<L(&YF;&%G+"!S9FQA9RP@=&9L86<L('9F;&%G.PH@:6YT(')V86P[
M"BMC;VYS="!C:&%R("ID871E9FUT.PH@8V]N<W0@8VAA<B`J9FEL96YA;64[
M"B`*('-T871I8R!V;VED('5S86=E*'9O:60I.PI`0"`M.#0L,3$@*S@U+#$T
M($!`"B`*(`ES971L;V-A;&4H3$-?0U194$4L("(B*3L*(`HM"7=H:6QE("@H
M8V@@/2!G971O<'0H87)G8RP@87)G=BP@(F)E;G-T=78B*2D@(3T@+3$I"BL)
M=VAI;&4@*"AC:"`](&=E=&]P="AA<F=C+"!A<F=V+"`B8D0Z96YS='5V(BDI
M("$]("TQ*0H@"0ES=VET8V@@*&-H*2!["B`)"6-A<V4@)V(G.@H@"0D)8F9L
M86<@/2!N9FQA9R`](#$["2\J("UB(&EM<&QI97,@+6X@*B\*(`D)"6)R96%K
M.PHK"0EC87-E("=$)SH**PD)"61A=&5F;70@/2!O<'1A<F<["BL)"0EB<F5A
M:SL*(`D)8V%S92`G92<Z"B`)"0EE9FQA9R`]('9F;&%G(#T@,3L)+RH@+64@
M:6UP;&EE<R`M=B`J+PH@"0D)8G)E86L["D!`("TQ,3(L-R`K,3$V+#@@0$`*
M(`D)?0H@"6%R9W8@*ST@;W!T:6YD.PH@"BT):68@*&)F;&%G('Q\(&5F;&%G
M('Q\(&YF;&%G('Q\('-F;&%G('Q\('1F;&%G('Q\('9F;&%G*0HK"6EF("AB
M9FQA9R!\?"!E9FQA9R!\?"!N9FQA9R!\?"!S9FQA9R!\?"!T9FQA9R!\?"!V
M9FQA9R!\?`HK"0ED871E9FUT("$]($Y53$PI"B`)"7-C86YF:6QE<RAA<F=V
M+"`Q*3L*(`EE;'-E"B`)"7-C86YF:6QE<RAA<F=V+"`P*3L*0$`@+3$R-2PW
M("LQ,S`L-R!`0`H@<W1A=&EC('9O:60*('5S86=E*'9O:60I"B!["BT)9G!R
M:6YT9BAS=&1E<G(L(")U<V%G93H@8V%T(%LM8F5N<W1U=ET@6V9I;&4@+BXN
M75QN(BD["BL)9G!R:6YT9BAS=&1E<G(L(")U<V%G93H@8V%T(%LM8F5N<W1U
M=ET@6RU$(&1A=&5F;71=(%MF:6QE("XN+EU<;B(I.PH@"65X:70H,2D["B`)
M+RH@3D]44D5!0TA%1"`J+PH@?0I`0"`M,3<W+#8@*S$X,BPX($!`"B!C;V]K
M7V-A="A&24Q%("IF<"D*('L*(`EI;G0@8V@L(&=O8F)L92P@;&EN92P@<')E
M=CL**PET:6UE7W0@;F]W.PHK"6-H87(@9&%T96)U9ELQ,#(T73L*(`H@"2\J
M(%)E<V5T($5/1B!C;VYD:71I;VX@;VX@<W1D:6XN("HO"B`):68@*&9P(#T]
M('-T9&EN("8F(&9E;V8H<W1D:6XI*0I`0"`M,3DX+#8@*S(P-2PQ-2!`0`H@
M"0D)"6EF("AF97)R;W(H<W1D;W5T*2D*(`D)"0D)8G)E86L["B`)"0E]"BL)
M"0EI9B`H9&%T969M="`A/2!.54Q,*2!["BL)"0D)=&EM92@F;F]W*3L**PD)
M"0EI9B`H<W1R9G1I;64H9&%T96)U9BP@<VEZ96]F*&1A=&5B=68I+"!D871E
M9FUT+`HK"0D)"0EL;V-A;'1I;64H)FYO=RDI(#T](#`I"BL)"0D)"65R<G@H
M,2P@(D1A=&4@9F]R;6%T('1O;R!L87)G92(I.PHK"0D)"2AV;VED*69P=71S
M*&1A=&5B=68L('-T9&]U="D["BL)"0D):68@*&9E<G)O<BAS=&1O=70I*0HK
M"0D)"0EB<F5A:SL**PD)"7T*(`D)?0H@"0EI9B`H8V@@/3T@)UQN)RD@>PH@
E"0D):68@*&5F;&%G("8F('!U=&-H87(H)R0G*2`]/2!%3T8I"FED
`
end

--============_-1054681193==_============--



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