std.stdio.write, writeln, fwrite, fwriteln

Lionello Lunesu lionello at lunesu.remove.com
Thu Dec 28 12:10:35 PST 2006


The diff -u against files from 0.178.

This patch also solves the following bug in doFormat:
(a bug that has nothing to do with write/writeln, but is easily solvable 
because of them)

#import std.stdio;
#void main() {
#   const char[][] x = ["%s","123"];
#   writefln(x);
#}

C:\dmd>dmd -run bug
[Error: std.format

This happens because doFormat is called recursively, once for each of the 
elements of the array. This means that there should never be any parsing for 
string elements, since there'll never be any 2nd argument to be formatted.

Because the new doFormat takes the extra "bool parse" parameter, the fix is 
simple: invoke doFormat with parse set to false.

L. 


begin 666 write.patch
M+2TM(%QD;60N,3<X7&1M9%QS<F-<<&AO8F]S7'-T9%PO9F]R;6%T+F0),C P
M-BTQ,BTR,R R,#HT,SHR-"XP,# P,# P,# @*S R,# -"BLK*R N+V9O<FUA
M="YD"3(P,#8M,3(M,C@@,C(Z,#(Z,38N,S(X,3(U,# P("LP,C P#0I 0" M
M,C U+#8@*S(P-2PW($! #0H@("H)<'5T8R ]"4]U='!U="!I<R!S96YT(&1O
M('1H:7, at 9&5L96=A=&4L(&-H87)A8W1E<B!B>2!C:&%R86-T97(N#0H@("H)
M87)G=6UE;G1S(#T at 07)R87D@;V8 at 5'EP94EN9F\G<RP@;VYE(&9O<B!E86-H
M(&%R9W5M96YT('1O(&)E(&9O<FUA='1E9"X-"B @*@EA<F=P='(@/2!0;VEN
M=',@=&\@=F%R:6%D:6, at 87)G=6UE;G0@;&ES="X-"BL@*@EP87)S92 ]($)O
M;VQE86XN(%1H92!D969A=6QT(&]F('1R=64@=VEL;"!P87)S92!S=')I;F=S
M(&9O<B H)$D at 9F]R;6%T('-P96-I9FEC871I;VYS*2X-"B @*@T*(" J(%1H
M<F]W<SH-"B @*@E-:7-M871C:&5D(&%R9W5M96YT<R!A;F0 at 9F]R;6%T<R!R
M97-U;'0@:6X at 82!&;W)M871%<G)O<B!B96EN9R!T:')O=VXN#0I 0" M-#0R
M+#@@*S0T,RPX($! #0H at +2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM#0H@("HO
M#0H@#0HM=F]I9"!D;T9O<FUA="AV;VED(&1E;&5G871E*&1C:&%R*2!P=71C
M+"!4>7!E26YF;UM=(&%R9W5M96YT<RP@=F%?;&ES="!A<F=P='(I#0HM>R @
M(&EN="!J.PT**W9O:60 at 9&]&;W)M870H=F]I9"!D96QE9V%T92AD8VAA<BD@
M<'5T8RP at 5'EP94EN9F];72!A<F=U;65N=',L('9A7VQI<W0 at 87)G<'1R+"!B
M;V]L('!A<G-E(#UT<G5E*0T**WL-"B @(" @5'EP94EN9F\@=&D[#0H@(" @
M($UA;F=L92!M.PT*(" @("!U:6YT(&9L86=S.PT*0$ @+38P,2PW("LV,#(L
M-R! 0 T*( D@('!U=&,H)ULG*3L-"B )("!S:7IE7W0@='-I>F4@/2!T:2YT
M<VEZ92 at I.PT*( D@('=H:6QE("AL96XM+2D@>PT*+0D@(" @9&]&;W)M870H
M<'5T8RP@*"9T:2E;," N+B Q72P@<"D[#0HK"2 @("!D;T9O<FUA="AP=71C
M+" H)G1I*5LP("XN(#%=+"!P+"!F86QS92D[#0H@"2 @("!P("L]('1S:7IE
M.PT*( D@(" @:68@*&QE;B ^(# I('!U=&,H)RPG*3L-"B )("!]#0I 0" M
M.3,U+#8@*SDS-BPW($! #0H@"71H<F]W(&YE=R!&;W)M871%<G)O<B at B9F]R
M;6%T07)G(BD[#0H@(" @('T-"B -"BL@(" @:6YT(&H[#0H@#0H@(" @(&9O
M<B H:B ](# [(&H@/"!A<F=U;65N=',N;&5N9W1H.R I#0H@(" @('L)=&D@
M/2!A<F=U;65N='-;:BLK73L-"D! ("TY-#0L-R K.30V+#<@0$ -"B )(" @
M(&=O=&\@3&5R<F]R.PT*( EM(#T at 8V%S="A-86YG;&4I=&DN8VQA<W-I;F9O
M+FYA;65;.5T[#0H@#0HM"6EF("AM(#T]($UA;F=L92Y487)R87DI#0HK"6EF
M("AM(#T]($UA;F=L92Y487)R87D@)B8@<&%R<V4I#0H@"7L-"B )(" @($UA
M;F=L92!M,B ](&-A<W0H36%N9VQE*71I+F-L87-S:6YF;RYN86UE6S$P73L-
M"B )(" @(&-H87);72 @9FUT.PD)"2\O(&9O<FUA="!S=')I;F<-"BTM+2!<
M9&UD+C$W.%QD;61<<W)C7'!H;V)O<UQS=&1<+W-T9&EO+F0),C P-BTQ,BTR
M,R R,#HT,SHR-"XP,# P,# P,# @*S R,# -"BLK*R N+W-T9&EO+F0),C P
M-BTQ,BTR." R,#HT,CHU-2XR.38X-S4P,# @*S R,# -"D! ("TU,2PW("LU
M,2PW($! #0H@(" @('9O:60 at 7U]F<%]U;FQO8VLH1DE,12H at 9G I('L@?0T*
M('T-"B -"BUV;VED('=R:71E9G at H1DE,12H at 9G L(%1Y<&5);F9O6UT at 87)G
M=6UE;G1S+"!V;VED*B!A<F=P='(L(&EN="!N97=L:6YE/69A;'-E*0T**W9O
M:60@=W)I=&5F>"A&24Q%*B!F<"P at 5'EP94EN9F];72!A<F=U;65N=',L('9O
M:60J(&%R9W!T<BP at 8F]O;"!N97=L:6YE/69A;'-E+"!B;V]L('!A<G-E/71R
M=64I#0H@>R @(&EN="!O<FEE;G1A=&EO;CL-"B -"B @(" @;W)I96YT871I
M;VX@/2!F=VED92AF<"P@,"D[#0I 0" M.# L-R K.# L-R! 0 T*( D)?0T*
M( D@(" @?0T*( T*+0D@(" @<W1D+F9O<FUA="YD;T9O<FUA="@F<'5T8RP@
M87)G=6UE;G1S+"!A<F=P='(I.PT**PD@(" @<W1D+F9O<FUA="YD;T9O<FUA
M="@F<'5T8RP at 87)G=6UE;G1S+"!A<F=P='(L('!A<G-E*3L-"B )(" @(&EF
M("AN97=L:6YE*0T*( D)1E!55$,H)UQN)RP at 9G I.PT*( E]#0I 0" M,3$W
M+#<@*S$Q-RPW($! #0H@"0ES=&%T:6, at 87-S97)T*# I.PT*( D@(" @?0T*
M( T*+0D@(" @<W1D+F9O<FUA="YD;T9O<FUA="@F<'5T8W<L(&%R9W5M96YT
M<RP at 87)G<'1R*3L-"BL)(" @('-T9"YF;W)M870N9&]&;W)M870H)G!U=&-W
M+"!A<F=U;65N=',L(&%R9W!T<BP@<&%R<V4I.PT*( D@(" @:68@*&YE=VQI
M;F4I#0H@"0E&4%545T,H)UQN)RP at 9G I.PT*( E]#0I 0" M,3,P+#8@*S$S
M,"PT-R! 0 T*( T*( T*("\J*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ
M*BHJ*BHJ*@T**R J($%R9W5M96YT<R!A<F4 at 8V]N=F5R=&5D('1O('-T<FEN
M9W,@#0HK("H at 86YD('=R:71T96X@=&\@)"A"('-T9&]U="DN#0HK("HO#0HK
M#0HK=F]I9"!W<FET92 at N+BXI#0HK>PT**R @("!W<FET969X*'-T9&]U="P@
M7V%R9W5M96YT<RP at 7V%R9W!T<BP at 9F%L<V4L(&9A;'-E*3L-"BM]#0HK#0HK
M+RHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ#0HK("H at 4V%M
M92!A<R D*$(@=W)I=&4I+"!B=70 at 82!N97=L:6YE(&ES(&%P<&5N9&5D#0HK
M("H@=&\@=&AE(&]U='!U="X-"BL@*B\-"BL-"BMV;VED('=R:71E;&XH+BXN
M*0T**WL-"BL@(" @=W)I=&5F>"AS=&1O=70L(%]A<F=U;65N=',L(%]A<F=P
M='(L('1R=64L(&9A;'-E*3L-"BM]#0HK#0HK+RHJ*BHJ*BHJ*BHJ*BHJ*BHJ
M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ#0HK("H at 4V%M92!A<R D*$(@=W)I=&4I+"!B
M=70@;W5T<'5T(&ES('-E;G0@=&\@=&AE#0HK("H@<W1R96%M(&9P(&EN<W1E
M860@;V8@)"A"('-T9&]U="DN#0HK("HO#0HK#0HK=F]I9"!F=W)I=&4H1DE,
M12H at 9G L("XN+BD-"BM[#0HK(" @('=R:71E9G at H9G L(%]A<F=U;65N=',L
M(%]A<F=P='(L(&9A;'-E+"!F86QS92D[#0HK?0T**PT**R\J*BHJ*BHJ*BHJ
M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*@T**R J(%-A;64 at 87,@)"A"('=R
M:71E;&XI+"!B=70@;W5T<'5T(&ES('-E;G0@=&\@=&AE#0HK("H@<W1R96%M
M(&9P(&EN<W1E860@;V8@)"A"('-T9&]U="DN#0HK("HO#0HK#0HK=F]I9"!F
M=W)I=&5L;BA&24Q%*B!F<"P at +BXN*0T**WL-"BL@(" @=W)I=&5F>"AF<"P@
M7V%R9W5M96YT<RP at 7V%R9W!T<BP@=')U92P at 9F%L<V4I.PT**WT-"BL-"BL-
M"BLO*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BH-"B @*B!!
M<F=U;65N=', at 87)E(&9O<FUA='1E9"!P97(@=&AE#0H@("H@)"A,24Y+,B!S
M=&1?9F]R;6%T+FAT;6PC9F]R;6%T+7-T<FEN9RP at 9F]R;6%T('-T<FEN9W,I
M#0H@("H at 86YD('=R:71T96X@=&\@)"A"('-T9&]U="DN#0I 0" M,3,W+#<@
M*S$W."PW($! #0H@#0H@=F]I9"!W<FET968H+BXN*0T*('L-"BT@(" @=W)I
M=&5F>"AS=&1O=70L(%]A<F=U;65N=',L(%]A<F=P='(L(# I.PT**R @("!W
M<FET969X*'-T9&]U="P at 7V%R9W5M96YT<RP at 7V%R9W!T<BP at 9F%L<V4I.PT*
M('T-"B -"B O*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BH-
M"D! ("TQ-#<L-R K,3 at X+#<@0$ -"B -"B!V;VED('=R:71E9FQN*"XN+BD-
M"B![#0HM(" @('=R:71E9G at H<W1D;W5T+"!?87)G=6UE;G1S+"!?87)G<'1R
M+" Q*3L-"BL@(" @=W)I=&5F>"AS=&1O=70L(%]A<F=U;65N=',L(%]A<F=P
M='(L('1R=64I.PT*('T-"B -"B O*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ
M*BHJ*BHJ*BHJ*BH-"D! ("TQ-3<L-R K,3DX+#<@0$ -"B -"B!V;VED(&9W
M<FET968H1DE,12H at 9G L("XN+BD-"B![#0HM(" @('=R:71E9G at H9G L(%]A
M<F=U;65N=',L(%]A<F=P='(L(# I.PT**R @("!W<FET969X*&9P+"!?87)G
M=6UE;G1S+"!?87)G<'1R+"!F86QS92D[#0H@?0T*( T*("\J*BHJ*BHJ*BHJ
M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*@T*0$ @+3$V-RPU("LR,#@L-2! 
M0 T*( T*('9O:60 at 9G=R:71E9FQN*$9)3$4J(&9P+" N+BXI#0H@>PT*+2 @
M("!W<FET969X*&9P+"!?87)G=6UE;G1S+"!?87)G<'1R+" Q*3L-"BL@(" @
M=W)I=&5F>"AF<"P at 7V%R9W5M96YT<RP at 7V%R9W!T<BP@=')U92D[#0H@?0T*
`
end




More information about the Digitalmars-d-announce mailing list