www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - my simple but useful changes to Phobos - diff-to-115.patch

Hi, I've been playing around with D a little for a few months now and I've made
IMHO a few small useful changes/additions/fixes to Phobos v0.115.  My diff/patch
is attached.

Bug Fixes:
---------
std/file.d  version(linux):

getAttributes() and isdir() do:
mode & S_IFXXX;
but because S_IFXXX are not necessarily single bits, the right way is:
(mode & S_IFMT) == S_IFXXX;

isdir() throws on broken symbolic links because stat() tries to follow the
symlink.  I've added islink(), which uses lstat(), and use it in isdir() to fix.

Additions:
---------
std.path.walk(), like Python's os.walk(), for use in foreach loops.  Pretty
useful to me.

std.file.{copytree(),renametree(),removetree()} which use std.path.walk().
(renametree() for moving across different filesystems because rename() can't do
this on Linux (don't know about Windows...)).

std.math.range(), like Python's range(), for use in foreach loops.

version(linux) std.file.getMode alias for getAttributes because the name is more
familiar to me.

lstat(), chmod(), and mode_t added to std/c/linux/linux.d

Changes:
-------
std.path.join() takes two or more args now (using varargs).

std.syserror.SysError.msg() uses strerror() to get errno message.

internal/dmain2.d prints "ClassName: " of caught Object instead of just "Error:
".

Object.toString() gives "<instance ClassName at b7da6790>"

version(linux) std.file.listdir() throws if opendir() fails.

std.math publically imports std.math2.

std.math2.min(uint,uint) I added to prevent implicit casting conflict with
min(real,real) for a min(uint,uint) I did.  (max(), etc, should also have
unsigned and signed/unsigned combintions versions as well; having to use casts
doesn't seem visually aesthetic.)

import std.socket in phobos/unittest.d

----------------------------

For some reason I get warnings like this when using my libphobos.a:

gcc -o unittest unittest.o libphobos.a -lpthread -lm -g
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.3/../../../../i686-pc-linux-gnu/bin/ld:
Warning: size of symbol `_D3std6stdarg9va_arg_Aa6va_argFKPvZAa' changed from 19
in libphobos.a(path.o) to 34 in libphobos.a(path.o)

----------------------------

Please let me know of bugs/issues/problems.

--Derick


begin 0644 diff-to-115.patch
M9&EF9B`M<B`M8R`O=&UP+W0W+S$Q-2]D;60O<W)C+W!H;V)O<R]I;G1E<FYA
M;"]D;6%I;C(N9"`N+VEN=&5R;F%L+V1M86EN,BYD"BHJ*B`O=&UP+W0W+S$Q


M<B` ,B`Q.#HR,#HT-R


M:70H15A)5%]&04E,55)%*3L-"B` ("` ('T-"BTM+2`W,RPW.2`M+2TM"B` 
M("` ('T-"B` ("` (&-A=&-H("A/8FIE8W0 ;RD-"B` ("` ('L-"B$ "7!R




M<F,O<&AO8F]S+VEN=&5R;F%L+V]B:F5C="YD"4UO;B!&96( ,C  ,3 Z-3,Z





M*'9O:60 *BP =F]I9"`J+"!S:7IE7W0I.PT**BHJ*BHJ*BHJ*BHJ*BHJ"BHJ




M<W1D+G-T<FEN9RYF;W)M870H(CQI;G-T86YC92`E<R!A="`E,#AX/B(L('1H
M:7,N8VQA<W-I;F9O+FYA;64L(&-A<W0H=6EN="EC87-T*'9O:60 *BET:&ES


M;G5X+F0 +B]S=&0O8R]L:6YU>"]L:6YU>"YD"BHJ*B`O=&UP+W0W+S$Q-2]D
M;60O<W)C+W!H;V)O<R]S=&0O8R]L:6YU>"]L:6YU>"YD"4UO;B!&96( ,C  


M*BHJ* HM+2T .2PQ-2`M+2TM"B` :6UP;W)T('-T9"YC+FQI;G5X+FQI;G5X
M97AT97)N.PT*("`-"B` 86QI87, :6YT(&]F9E]T.PT**R!A;&EA<R!U:6YT
M(&UO9&5?=#L-
M*BHJ"BHJ*B`Q,#DL
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
M6UT ;F5W<"`]('-T9"YP871H+FIO:6XH;F5W<&%T:"P <W5B9&ER*3L-"BL 
M"0D)87-S97)T*&5X:7-T<RAN97=P*2D["2\O(&-O<&EE9"!S=6(M9&ER<R!S
M:&]U;&0 86QR96%D>2!H879E(&)E96X 8W)E871E9"!A<R!W92=R92!W86QK



M+G!A=& N:F]I;BAN97=P+"!D*3L-"BL "0D)"6UO9&4 /2!G971!='1R:6)U



M;BAP+"!F*3L-"BL "0D)"6X /2!S=&0N<&%T:"YJ;VEN*&YE=W`L(&8I.PT*

M(&XI.PT**R`)"0D)8VAM;V0H<W1D+G-T<FEN9RYT;U-T<FEN9WHH;BDL(&UO



M*R`O*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ

M9B!D:7)E8W1O<GDL(')E8W5R<VEV96QY(&UO=F4 86QL('-U8BUC;VYT96YT
M<RX-"BL ("H 57-E('=H96X ;W)I9W!A=&  86YD(&YE=W!A=&  87)E(&YO
M="!O;B!T:&4 <V%M92!F:6QE+7-Y<W1E;2`H=6YD97( 3&EN=7 -"BL ("H 
M870 ;&5A<W0I+"!O=&AE<G=I<V4 :68 =&AE>2!A<F4L('-T9"YC+G-T9&EO
M+G)E;F%M92 I('=O=6QD('=O<FL 9FEN92X-"BL ("H /S\_(&ES('1H97)E
M(&%N(&5A<WD =V%Y('1O(&9I<G-T(&9I;F0 ;W5T(&EF('1H97D 87)E(&]N
M('1H92!S86UE($93(&%N9`T**R` *B` ("` :G5S="!U<V4 <W1D+F,N<W1D

M=F]I9"!R96YA;65T<F5E*&-H87);72!O<FEG<&%T:"P 8VAA<EM=(&YE=W!A

M"2\O(&)O='1O;2UD;W=N(&1E;&5T92`H;F]W(&5M<'1Y*2!D:7)E8W1O<FEE


M*BHJ*BHJ*BHJ*BHJ*BHJ*BH-"BL ("H 4F5M;W9E(&$ 9FEL92!O<B!D:7)E
M8W1O<GD[(&EF(&1I<F5C=&]R>2P <F5C=7)S:79E;'D <F5M;W9E(&%L;"!S


M*2![('1H<F]W(&4[('T-"BL "0T**R`):68 *&ES9&ER*'!A=& I*0T**R`)
M>PT**R`)"69O<F5A8V  *&-H87);72!P+"!C:&%R6UU;72!D:7)S+"!C:&%R
M6UU;72!F:6QE<SL <W1D+G!A=& N=V%L:RAP871H+"!F86QS92P )G1H<F]W

M<'1Y(&1I<F5C=&]R:65S(&9I<G-T+"!S;R!R96UO=F4H*2!W:6QL(&%L=V%Y

M('L-"BL "0D)"7)E;6]V92AS=&0N<&%T:"YJ;VEN*'`L(&4I*3L-"BL "0D)
M?0T**R`)"7T-"BL "7T-"BL "7)E;6]V92AP871H*3L-"BL ?0T*9&EF9B`M
M<B`M8R`O=&UP+W0W+S$Q-2]D;60O<W)C+W!H;V)O<R]S=&0O;6%T:"YD("XO
M<W1D+VUA=& N9`HJ*BH +W1M<"]T-R\Q,34O9&UD+W-R8R]P:&]B;W,O<W1D


M"BHJ*B`Q,2PQ-B`J*BHJ"BTM+2`Q,2PQ."`M+2TM"B` <')I=F%T92!I;7!O




M971U<FX ,#L-"B` ("` (')E='5R;B!F86)S*'  +2!Y*2`\/2!P<F5C:7-I


M92AI;G0 <W1A<G0L(&EN="!S=&]P+"!I;G0 <W1E<"D-"BL >PT**R`)9&5B
M=6<H<F%N9V4I('=R:71E9FQN*")R86YG92AS=&%R=#TE9"P <W1O<#TE9"P 
M<W1E<#TE9"DB+"!S=&%R="QS=&]P+'-T97`I.PT**R`):6YT6UT <CL-"BL 
M"6EN="!D:69F(#T <W1A<G0 +2!S=&]P.PT**R`-"BL "6EF(" H<W1E<"`^


M9FQO870I9&EF9B]S=&5P*2DI73L-"BL "0ED96)U9RAR86YG92D =W)I=&5F



M"BL :6YT6UT <F%N9V4H:6YT('-T87)T+"!I;G0 <W1O<"D-"BL >PT**R`)
M<F5T=7)N(')A;F=E*'-T87)T+"!S=&]P+"`Q*3L-"BL ?0T**R`-"BL :6YT

M=&]P+"`Q*3L-"BL ?0T**R`-"BL =6YI='1E<W0 +R\ <F%N9V4 =&5S=',-
M"BL >PT**R`)+R\ =&AE(&)E;&]W(&EN=%M=<R!W97)E(&=E;F5R871E9"!B




M("TS-"P +3,S+"`M,S(L("TS,2P +3,P+"`M,CDL("TR."P +3(W+"`M,C8L
M("TR-2P +3(T+"`M,C,L("TR,BP +3(Q+"`M,C`L("TQ.2P +3$X+"`M,3<L



M(#DU





M,BP ,S<Q,#DL






M+"`V.#DR-




M(#DQ-30X+"`Y,C(U-2P .3(Y-C(L(#DS-C8Y










































M-#DL





M-S,X-RP ,C X,#DT
































M,3 X.#DL









M;CDV=&]N,3(V-C4Y-'-N,S0U-B`](%LM.38L("TS-34R+"`M-S`P."P +3$P











M,#DQ

M-30W,BP +3(T.#DR."P +3(U,C,X-"P +3(U-3 T,"P +3(U.3(Y-BP +3(V
M,C<U,BP +3(V-C(P."P +3(V.38V-"P +3(W,S$R,"P +3(W-C4W-BP +3(X




M.3$U,BP +3,U,C8P."P +3,U-C`V-"P +3,U.34R,"P +3,V,CDW-BP +3,V


M,#DY

M-34U,BP +30S.3`P."P +30T,C0V-"P +30T-3DR,"P +30T.3,W-BP +30U
M,C S,BP +30U-C(X."P +30U.3<T-"P +30V,S(P,"P +30V-C8U-BP +30W

M-S,Y,BPM-#DP.




M-SDR+"`M-3<W,C0X+"`M-3 P-S`T+"`M-3 T,38P+"`M-3 W-C$V+"`M-3DQ






M-S4R+"`M-CDX,C`X+"`M-S`Q-C8T+"`M-S`U,3(P+"`M-S`X-3<V+"`M-S$R

M,S$R+"`M-S,R-S8X+"`M-S,V,C(T+"`M-S,Y-C P+"`M-S0S,3,V+"`M-S0V



































M,S0U=&\T-38W-C-S-S`W*3L-"BL "6%S<V5R="AR86YG92 M.38L+3$R-C8U
M.30L+3,T-38I(#T








M-BPV-C<L,3$Q*2D <')I;G1F*"(E9"`B+"!I*3L-"BL "7!R:6YT9B B7&XB
M*3L-"BL ?2`O+R!E;F0 <F%N9V4 =6YI='1E<W0-"F1I9F8 +7( +6, +W1M
M<"]T-R\Q,34O9&UD+W-R8R]P:&]B;W,O<W1D+VUA=& R+F0 +B]S=&0O;6%T

M+F0)36]N($9E8B`R."`Q.#HU





M,34O9&UD+W-R8R]P:&]B;W,O<W1D+W!A=& N9"`N+W-T9"]P871H+F0**BHJ

M8B`R."`Q.#HU

M* HM+2T ,3`L,3< +2TM+0H ("\O9&5B=6<]<&%T:#L)"2\O('5N8V]M;65N
M="!T;R!T=7)N(&]N(&1E8G5G9VEN9R!P<FEN=&8G<PT*("`-"B` <')I=F%T
M92!I;7!O<G0 <W1D+G-T<FEN9SL-"BL <')I=F%T92!I;7!O<G0 <W1D+G-T







M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BH-"B$ ("H 2F]I;B!T=V\ ;W( ;6]R92!P





M(&D /"!?87)G=6UE;G1S+FQE;F=T:#L :2LK*0T*(2`)"7` /2!?:F]I;BAP
M+"!V85]A<F<A*&-H87);72DH7V%R9W!T<BDI.PT*(2`-"B$ "7)E='5R;B!P





M;RYB87(B+"`B6V9G73\_/V)A>B(I*3L-"B` ?0T**R`-"BL +RHJ*BHJ*BHJ
M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ* T**R` *B!786QK(&$ 9&ER96-T
M;W)Y('1R964L(&QI:V4 4'ET:&]N)W, ;W,N=V%L:R I+"!U<VEN9R!A(&9O

M;W`L(&)O;VP =&]P9&]W;CUT<G5E+"!V;VED(&1E;&5G871E*$]B:F5C="D 


M7U=A;&L-"BL >PT**R`)<')I=F%T92!I;G0 9&5L96=A=&4H:6YO=70 8VAA
M<EM=+"!I;F]U="!C:&%R6UU;72P :6YO=70 8VAA<EM=6UTI(%]F;W)E86-H

M;VP 7W1O<&1O=VX /2!T<G5E.PT**R`)<')I=F%T92!V;VED(&1E;&5G871E

M;V]L('1O<&1O=VXL('9O:60 9&5L96=A=&4H3V)J96-T*2!O;F5R<F]R*0T*

M.PT**R`)"5]O;F5R<F]R(#T
M871E('9O:60 7W=A;&LH8VAA<EM=('1O<"P 8F]O;"!T;W!D;W=N+"!V;VED

M87-S97)T(" A("A?9F]R96%C:$-O9&4 :7, ;G5L;"DI.PT**R`)?0T**R`)
M8F]D>0T**R`)>PT**R`)"6-H87);75M=(&YA;65S+"!D:7)S+"!N;VYD:7)S


M871C:"`H3V)J96-T(&4I('L-"BL "0D):68 *&]N97)R;W(I('L-"BL "0D)
M"2\O(&]N97)R;W(H*2!C86X =&AR;W< :68 :70 =V%N=', =&\ <W1O<"!W
M86QK:6YG+`T**R`)"0D)+R\ ;W( ;F]T('1H<F]W('1O(&-O;G1I;G5E('=A

M.PD)+R\ <VEL96YT;'D :6=N;W)E(&%N9"!K965P('=A;&MI;F<-"BL "0E]

M9B`H<W1D+F9I;&4N:7-D:7(H:F]I;BAT;W`L(&XI*2D-"BL "0D)"61I<G, 
M?CT ;CL-"BL "0D)96QS90T**R`)"0D);F]N9&ER<R!^/2!N.PT**R`)"7T-


M<F5A8V  8F]D>0T**R`)"0EI9B`H<F5S=6QT*0T**R`)"0D)=&AR;W< ;F5W

M<EM=(&X[(&1I<G,I('L-"BL "0D)<"`](&IO:6XH=&]P+"!N*3L-"BL "0D)
M:68 *"$ <W1D+F9I;&4N:7-L:6YK*'`I*0T**R`)"0D)7W=A;&LH<"P =&]P


M;F1I<G,I.PDO+R!G:79E('1O('1H92!F;W)E86-H(&)O9'D-"BL "0D):68 
M*')E<W5L="D-"BL "0D)"71H<F]W(&YE=R!?0V5A<V4H<F5S=6QT*3L-"BL 

M;W5T(&-H87);72P :6YO=70 8VAA<EM=6UTL(&EN;W5T(&-H87);75M=*2!F



M:RA?=&]P+"!?=&]P9&]W;BP 7V]N97)R;W(I.PT**R`)"6-A=&-H("A?0V5A
M<V4 8RD-"BL "0D)<F5T=7)N(&,N<F5S=6QT.PD-"BL "0D-"BL "0ER971U
M<FX ,#L-

M>R!T:&ES+G)E<W5L="`](')E<W5L=#L





M17)R;W(-"B` >PT*(2` ("` <')I=F%T92!I;7!O<G0 <W1D+F,N<W1D:6\[

M('-T871I8R!C:&%R6UT ;7-G*'5I;G0 97)R8V]D92D-"B$ ("` ('L-"B$ 

M>PT*(2`)("` (&-A<V4 ,CH)<F5S=6QT(#T (F9I;&4 ;F]T(&9O=6YD(CL)



M/2`B86-C97-S(&1E;FEE9"(["6)R96%K.PT*(2`)("` (&-A<V4 -CH)<F5S
M=6QT(#T
M. ER97-U;'0 /2`B;F]T(&5N;W5G:"!M96UO<GDB.PEB<F5A:SL-"B$ "2` 

M(2`)("` (&-A<V4 ,34Z"7)E<W5L="`](")I;G9A;&ED(&1R:79E(CL)8G)E






M=6QT(#T <F5S=6QT6S` +BX <W1R;&5N*')E<W5L="E=.PT*(2`)"6)R96%K


M=F5R<VEO;B`H5VEN9&]W<RD-"B` "7L-"B$ "0DO+R!43T1/.B!S=')E<G)O
M<B I(&ES($,X.2!S;R!7:6YD;W=S('=H;W5L9"!B92!A8FQE('1O('5S92!I


M="!S=&0N8RYS=&1I;SL-"B$ "0EP<FEV871E(&EM<&]R="!S=&0N<W1R:6YG
M.PT*(2`)"0T*(2`)"7-T871I8R!C:&%R6UT ;7-G*'5I;G0 97)R8V]D92D-





M<F5S=6QT(#T (F%C8V5S<R!D96YI960B.PEB<F5A:SL-"B$ "0D)8V%S92`V
M. ER97-U;'0 /2`B:6YV86QI9"!H86YD;&4B.PEB<F5A:SL-"B$ "0D)8V%S
M92`X. ER97-U;'0 /2`B;F]T(&5N;W5G:"!M96UO<GDB.PEB<F5A:SL-"B$ 
M"0D)8V%S92`Q-#H)<F5S=6QT(#T (F]U="!O9B!M96UO<GDB.PEB<F5A:SL-
M"B$ "0D)8V%S92`Q-3H)<F5S=6QT(#T (FEN=F%L:60 9')I=F4B.PEB<F5A
M:SL-"B$ "0D)8V%S92`R,3H)<F5S=6QT(#T (FYO="!R96%D>2(["0EB<F5A
M:SL-"B$ "0D)8V%S92`S,CH)<F5S=6QT(#T (G-H87)I;F< =FEO;&%T:6]N

M<F%M971E<B(["6)R96%K.PT*(2`)"0T*(2`)"0ED969A=6QT. T*(2`)"0ER

M<W!R:6YT9BAR97-U;'0L("(E=2(L(&5R<F-O9&4I.PT*(2`)"0ER97-U;'0 

M(2`)"7T-"B$ "0D-"B$ "0ER971U<FX <F5S=6QT.PT*(2`)"7T-"B` "7T-
M"BL "79E<G-I;VX *&QI;G5X*0T**R`)>PT**R`)"7!R:79A=&4 :6UP;W)T





M;U-T<FEN9RAS=')E<G)O<BAC87-T*&EN="EE<G)C;V1E*2DI.PT*(2`)"7T-


M8F]S+W5N:71T97-T+F0 +B]U;FET=&5S="YD"BHJ*B`O=&UP+W0W+S$Q-2]D




M;7!O<G0 <W1D+G-T9&EO.PT**R!I;7!O<G0 <W1D+G-O8VME=#L-

`
end
Mar 02 2005