www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - std.file: isfile/isdir

reply vathixSpamFix dprogramming.com (Vathix) writes:
Functions isfile() and isdir() from std.file test if the name is a file or 
directory, but if the file or directory doesn't exist they throw an exception. 
I'd say it's not a file or directory if it doesn't even exist. Well, I don't 
mind the current behavior if it would specify this in phobos.html; and I 
suggest adding another function exists().


-- 
Christopher E. Miller
May 07 2004
next sibling parent reply C <qbert atari-soldiers.com> writes:
Ughh, are you serious it throws an exception ?

Can we please change this to return boolean ?

Phobos has become a seriously crippling element for the D language.  But 
im done preaching (begging?), ive shouted myself hoarse. What a shame.

Charles

On Fri, 7 May 2004 16:26:51 +0000 (UTC), Vathix 
<vathixSpamFix dprogramming.com> wrote:

 Functions isfile() and isdir() from std.file test if the name is a file 
 or
 directory, but if the file or directory doesn't exist they throw an 
 exception.
 I'd say it's not a file or directory if it doesn't even exist. Well, I 
 don't
 mind the current behavior if it would specify this in phobos.html; and I
 suggest adding another function exists().
May 07 2004
parent reply Andy Friesen <andy ikagames.com> writes:
C wrote:

 Ughh, are you serious it throws an exception ?
 
 Can we please change this to return boolean ?
 
 Phobos has become a seriously crippling element for the D language.  But 
 im done preaching (begging?), ive shouted myself hoarse. What a shame.
 
 Charles
I think this is the correct behaviour. Asking the OS for information about something that isn't there at all sounds exceptional to me. It's generally better for a program to explode spectacularly than to subtly fail in the face of oversight. It's not at all unrealistic to suppose that someone might write something like this: if (isfile(fileName) { .... } else { // assume it is a directory .... } -- andy
May 07 2004
parent reply "Unknown W. Brackets" <unknown at.simplemachines.dot.org> writes:
Andy Friesen wrote:

 I think this is the correct behaviour.  Asking the OS for information 
 about something that isn't there at all sounds exceptional to me.
 
 It's generally better for a program to explode spectacularly than to 
 subtly fail in the face of oversight.  It's not at all unrealistic to 
 suppose that someone might write something like this:
 
    if (isfile(fileName) {
       ....
    } else {
       // assume it is a directory
       ....
    }
 
  -- andy
Not always. I am mentioning it again, and it's not even a compiled language, but PHP handles this differently for good reason. Basically, because PHP supports streams (ssl://, http://, zlib://, ftp://, etc.) it's possible you could get your hands on a variable that contains a URL. The is_file() function returns if this is a *regular filesystem* file... and, similarly, the is_link() function returns if it is a *regular filesystem* symbolic link. (whereas file_exists() might work over zlib:// and tell you if the file exists as a gzip, etc. or under ftp:// the normal way.) But, assuming there is a function like exists(), or file_exists(), etc. it would not be a problem at all. Either way, personally I see assuming that !file is dir as more of an oversight than using isfile on a non-existant path. -[Unknown]
May 07 2004
parent Andy Friesen <andy ikagames.com> writes:
Unknown W. Brackets wrote:

    if (isfile(fileName) {
       ....
    } else {
       // assume it is a directory
       ....
    } 
Either way, personally I see assuming that !file is dir as more of an oversight than using isfile on a non-existant path.
That's exactly what I meant, actually. If it isn't a bug, it sure looks like one to me. If it is, then it would be preferable for the program to instantly explode with a line number and a good error message. -- andy
May 07 2004
prev sibling next sibling parent "Walter" <newshound digitalmars.com> writes:
"Vathix" <vathixSpamFix dprogramming.com> wrote in message
news:c7gdca$orb$1 digitaldaemon.com...
 Functions isfile() and isdir() from std.file test if the name is a file or
 directory, but if the file or directory doesn't exist they throw an
exception.
 I'd say it's not a file or directory if it doesn't even exist. Well, I
don't
 mind the current behavior if it would specify this in phobos.html; and I
 suggest adding another function exists().
I thought there was an exists() function already, but there isn't. You're right, there needs to be one.
May 07 2004
prev sibling parent reply "Walter" <newshound digitalmars.com> writes:
I've attached the overlooked function.


begin 666 file.d
M#0HO+R!#;W!Y<FEG:'0 *&,I(#(P,#$M,C P,R!B>2!$:6=I=&%L($UA<G,-
M"B\O($%L;"!2:6=H=', 4F5S97)V960-"B\O('=W=RYD:6=I=&%L;6%R<RYC
M;VT-" T*;6]D=6QE('-T9"YF:6QE.PT*#0IP<FEV871E(&EM<&]R="!S=&0N
M8RYS=&1I;SL-"G!R:79A=&4 :6UP;W)T('-T9"YP871H.PT*<')I=F%T92!I
M;7!O<G0 <W1D+G-T<FEN9SL-" T*+RHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ
M*BHJ*BHJ*BHJ*BHJ#0H *B\-" T*8VQA<W, 1FEL945X8V5P=&EO;B Z($5X
M8V5P=&EO; T*>PT*("  ('!R:79A=&4 :6UP;W)T('-T9"YS>7-E<G)O<CL-
M" T*("  ('5I;G0 97)R;F\["0D)+R\ ;W!E<F%T:6YG('-Y<W1E;2!E<G)O
M<B!C;V1E#0H-"B  ("!T:&ES*&-H87);72!N86UE*0T*("  ('L-" ET:&ES
M*&YA;64L(")F:6QE($DO3R(I.PT*("  ('T-" T*("  ('1H:7,H8VAA<EM=
M(&YA;64L(&-H87);72!M97-S86=E*0T*("  ('L-" ES=7!E<BAN86UE('X 
M(CH (B!^(&UE<W-A9V4I.PT*("  ('T-" T*("  ('1H:7,H8VAA<EM=(&YA
M;64L('5I;G0 97)R;F\I#0H ("  >PT*"71H:7,H;F%M92P 4WES17)R;W(N
M;7-G*&5R<FYO*2D[#0H)=&AI<RYE<G)N;R ](&5R<FYO.PT*("  ('T-"GT-
M" T*+RHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ#0H *B!"
M87-I8R!&:6QE(&]P97)A=&EO;G,N#0H *B\-" T*+RH /3T]/3T]/3T]/3T]
M/3T]/3T]/3T]/3T]/3T](%=I;C,R(#T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
M("HO#0H-"G9E<G-I;VX *%=I;C,R*0T*>PT*#0IP<FEV871E(&EM<&]R="!S
M=&0N8RYW:6YD;W=S+G=I;F1O=W,[#0IP<FEV871E(&EM<&]R="!S=&0N=71F
M.PT*#0IP<FEV871E(&EN="!U<V579G5N8W, /2 Q.PT*#0IS=&%T:6, =&AI
M<R I#0I[#0H ("  +R\ 5VEN(#DU+" Y."P 344 9&\ ;F]T(&EM<&QE;65N
M="!T:&4 5R!F=6YC=&EO;G,-"B  ("!U<V579G5N8W, /2 H1V5T5F5R<VEO
M;B I(#P ,' X,# P,# P,"D[#0I]#0H-"B\J*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ
M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ* T*("H 4F5A9"!A(&9I;&4N#0H 
M*B!2971U<FYS. T*("H)87)R87D ;V8 8GET97, <F5A9 T*("HO#0H-"G9O
M:61;72!R96%D*&-H87);72!N86UE*0T*>PT*("  ($173U)$('-I>F4[#0H 
M("  1%=/4D0 ;G5M<F5A9#L-"B  ("!(04Y$3$4 :#L-"B  ("!B>71E6UT 
M8G5F.PT*#0H ("  :68 *'5S95=F=6YC<RD-"B  ("![#0H)=V-H87(J(&YA
M;65Z(#T <W1D+G5T9BYT;U541C$V>BAN86UE*3L-" EH(#T 0W)E871E1FEL
M95<H;F%M97HL1T5.15))0U]214%$+$9)3$5?4TA!4D5?4D5!1"QN=6QL+$]0
M14Y?15A)4U1)3D<L#0H)("  ($9)3$5?05144DE"551%7TY/4DU!3"!\($9)
M3$5?1DQ!1U]315%514Y424%,7U-#04XL8V%S="A(04Y$3$4I;G5L;"D[#0H 
M("  ?0T*("  (&5L<V4-"B  ("![#0H)8VAA<BH ;F%M97H /2!T;TU"4WHH
M;F%M92D[#0H):" ]($-R96%T949I;&5!*&YA;65Z+$=%3D5224-?4D5!1"Q&
M24Q%7U-(05)%7U)%040L;G5L;"Q/4$5.7T5825-424Y'+ T*"2  ("!&24Q%
M7T%45%))0E5415].3U)-04P ?"!&24Q%7T9,04=?4T51545.5$E!3%]30T%.
M+&-A<W0H2$%.1$Q%*6YU;&PI.PT*("  ('T-" T*("  (&EF("AH(#T]($E.
M5D%,241?2$%.1$Q%7U9!3%5%*0T*"6=O=&\ 97)R,3L-" T*("  ('-I>F4 
M/2!'971&:6QE4VEZ92AH+"!N=6QL*3L-"B  ("!I9B H<VEZ92 ]/2!)3E9!
M3$E$7T9)3$5?4TE:12D-" EG;W1O(&5R<C([#0H-"B  ("!B=68 /2!N97< 
M8GET95MS:7IE73L-" T*("  (&EF("A296%D1FEL92AH+&)U9BQS:7IE+"9N
M=6UR96%D+&YU;&PI("$](#$I#0H)9V]T;R!E<G(R.PT*#0H ("  :68 *&YU
M;7)E860 (3T <VEZ92D-" EG;W1O(&5R<C([#0H-"B  ("!I9B H(4-L;W-E
M2&%N9&QE*& I*0T*"6=O=&\ 97)R.PT*#0H ("  <F5T=7)N(&)U9CL-" T*
M97)R,CH-"B  ("!#;&]S94AA;F1L92AH*3L-"F5R<CH-"B  ("!D96QE=&4 
M8G5F.PT*97)R,3H-"B  ("!T:')O=R!N97< 1FEL945X8V5P=&EO;BAN86UE
M+"!'971,87-T17)R;W(H*2D[#0I]#0H-"B\J*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ
M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BH-"B J(%=R:71E(&$ 9FEL92X-
M"B J(%)E='5R;G,Z#0H * DP"7-U8V-E<W,-"B J+PT*#0IV;VED('=R:71E
M*&-H87);72!N86UE+"!V;VED6UT 8G5F9F5R*0T*>PT*("  ($A!3D1,12!H
M.PT*("  ($173U)$(&YU;7=R:71T96X[#0H-"B  ("!I9B H=7-E5V9U;F-S
M*0T*("  ('L-" EW8VAA<BH ;F%M97H /2!S=&0N=71F+G1O551&,39Z*&YA
M;64I.PT*"6  /2!#<F5A=&5&:6QE5RAN86UE>BQ'14Y%4DE#7U=2251%+# L
M;G5L;"Q#4D5!5$5?04Q705E3+ T*"2  ("!&24Q%7T%45%))0E5415].3U)-
M04P ?"!&24Q%7T9,04=?4T51545.5$E!3%]30T%.+&-A<W0H2$%.1$Q%*6YU
M;&PI.PT*("  ('T-"B  ("!E;'-E#0H ("  >PT*"6-H87(J(&YA;65Z(#T 
M=&]-0E-Z*&YA;64I.PT*"6  /2!#<F5A=&5&:6QE02AN86UE>BQ'14Y%4DE#
M7U=2251%+# L;G5L;"Q#4D5!5$5?04Q705E3+ T*"2  ("!&24Q%7T%45%))
M0E5415].3U)-04P ?"!&24Q%7T9,04=?4T51545.5$E!3%]30T%.+&-A<W0H
M2$%.1$Q%*6YU;&PI.PT*("  ('T-"B  ("!I9B H:" ]/2!)3E9!3$E$7TA!
M3D1,15]604Q512D-" EG;W1O(&5R<CL-" T*("  (&EF("A7<FET949I;&4H
M:"QB=69F97(L8G5F9F5R+FQE;F=T:"PF;G5M=W)I='1E;BQN=6QL*2 A/2 Q
M*0T*"6=O=&\ 97)R,CL-" T*("  (&EF("AB=69F97(N;&5N9W1H("$](&YU
M;7=R:71T96XI#0H)9V]T;R!E<G(R.PT*("  ( T*("  (&EF(" A0VQO<V5(
M86YD;&4H:"DI#0H)9V]T;R!E<G([#0H ("  <F5T=7)N.PT*#0IE<G(R. T*
M("  ($-L;W-E2&%N9&QE*& I.PT*97)R. T*("  ('1H<F]W(&YE=R!&:6QE
M17AC97!T:6]N*&YA;64L($=E=$QA<W1%<G)O<B I*3L-"GT-" T*#0HO*BHJ
M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ#0H 
M*B!!<'!E;F0 =&\ 82!F:6QE+ T*("HO#0H-"G9O:60 87!P96YD*&-H87);
M72!N86UE+"!V;VED6UT 8G5F9F5R*0T*>PT*("  ($A!3D1,12!H.PT*("  
M($173U)$(&YU;7=R:71T96X[#0H-"B  ("!I9B H=7-E5V9U;F-S*0T*("  
M('L-" EW8VAA<BH ;F%M97H /2!S=&0N=71F+G1O551&,39Z*&YA;64I.PT*
M"6  /2!#<F5A=&5&:6QE5RAN86UE>BQ'14Y%4DE#7U=2251%+# L;G5L;"Q/
M4$5.7T%,5T%94RP-" D ("  1DE,15]!5%1224)55$5?3D]234%,('P 1DE,
M15]&3$%'7U-%455%3E1)04Q?4T-!3BQC87-T*$A!3D1,12EN=6QL*3L-"B  
M("!]#0H ("  96QS90T*("  ('L-" EC:&%R*B!N86UE>B ]('1O34)3>BAN
M86UE*3L-" EH(#T 0W)E871E1FEL94$H;F%M97HL1T5.15))0U]74DE412PP
M+&YU;&PL3U!%3E]!3%=!65,L#0H)("  ($9)3$5?05144DE"551%7TY/4DU!
M3"!\($9)3$5?1DQ!1U]315%514Y424%,7U-#04XL8V%S="A(04Y$3$4I;G5L
M;"D[#0H ("  ?0T*("  (&EF("AH(#T]($E.5D%,241?2$%.1$Q%7U9!3%5%
M*0T*"6=O=&\ 97)R.PT*#0H ("  4V5T1FEL95!O:6YT97(H:"P ,"P ;G5L
M;"P 1DE,15]%3D0I.PT*#0H ("  :68 *%=R:71E1FEL92AH+&)U9F9E<BQB
M=69F97(N;&5N9W1H+"9N=6UW<FET=&5N+&YU;&PI("$](#$I#0H)9V]T;R!E
M<G(R.PT*#0H ("  :68 *&)U9F9E<BYL96YG=&  (3T ;G5M=W)I='1E;BD-
M" EG;W1O(&5R<C([#0H ("  #0H ("  :68 *"%#;&]S94AA;F1L92AH*2D-
M" EG;W1O(&5R<CL-"B  ("!R971U<FX[#0H-"F5R<C(Z#0H ("  0VQO<V5(
M86YD;&4H:"D[#0IE<G(Z#0H ("  =&AR;W< ;F5W($9I;&5%>&-E<'1I;VXH
M;F%M92P 1V5T3&%S=$5R<F]R*"DI.PT*?0T*#0H-"B\J*BHJ*BHJ*BHJ*BHJ
M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BH-"B J(%)E
M;F%M92!A(&9I;&4N#0H *B\-" T*=F]I9"!R96YA;64H8VAA<EM=(&9R;VTL
M(&-H87);72!T;RD-"GL-"B  ("!"3T],(')E<W5L=#L-" T*("  (&EF("AU
M<V579G5N8W,I#0H)<F5S=6QT(#T 36]V949I;&57*'-T9"YU=&8N=&]55$8Q
M-GHH9G)O;2DL('-T9"YU=&8N=&]55$8Q-GHH=&\I*3L-"B  ("!E;'-E#0H)
M<F5S=6QT(#T 36]V949I;&5!*'1O34)3>BAF<F]M*2P =&]-0E-Z*'1O*2D[
M#0H ("  :68 *"%R97-U;'0I#0H)=&AR;W< ;F5W($9I;&5%>&-E<'1I;VXH
M=&\L($=E=$QA<W1%<G)O<B I*3L-"GT-" T*#0HO*BHJ*BHJ*BHJ*BHJ*BHJ
M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ#0H *B!$96QE
M=&4 82!F:6QE+ T*("HO#0H-"G9O:60 <F5M;W9E*&-H87);72!N86UE*0T*
M>PT*("  ($)/3TP <F5S=6QT.PT*#0H ("  :68 *'5S95=F=6YC<RD-" ER
M97-U;'0 /2!$96QE=&5&:6QE5RAS=&0N=71F+G1O551&,39Z*&YA;64I*3L-
M"B  ("!E;'-E#0H)<F5S=6QT(#T 1&5L971E1FEL94$H=&]-0E-Z*&YA;64I
M*3L-"B  ("!I9B H(7)E<W5L="D-" ET:')O=R!N97< 1FEL945X8V5P=&EO
M;BAN86UE+"!'971,87-T17)R;W(H*2D[#0I]#0H-" T*+RHJ*BHJ*BHJ*BHJ
M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ* T*("H 
M1V5T(&9I;&4 <VEZ92X-"B J+PT*#0IU;&]N9R!G9713:7IE*&-H87);72!N
M86UE*0T*>PT*("  ($A!3D1,12!F:6YD:&YD;#L-"B  ("!U:6YT(')E<W5L
M=& [#0H ("  =6EN="!R97-U;'1L.PT*#0H ("  :68 *'5S95=F=6YC<RD-
M"B  ("![#0H)5TE.,S)?1DE.1%]$051!5R!F:6QE9FEN9&)U9CL-" T*"69I
M;F1H;F1L(#T 1FEN9$9I<G-T1FEL95<H<W1D+G5T9BYT;U541C$V>BAN86UE
M*2P )F9I;&5F:6YD8G5F*3L-" ER97-U;'1H(#T 9FEL969I;F1B=68N;D9I
M;&53:7IE2&EG:#L-" ER97-U;'1L(#T 9FEL969I;F1B=68N;D9I;&53:7IE
M3&]W.PT*("  ('T-"B  ("!E;'-E#0H ("  >PT*"5=)3C,R7T9)3D1?1$%4
M02!F:6QE9FEN9&)U9CL-" T*"69I;F1H;F1L(#T 1FEN9$9I<G-T1FEL94$H
M=&]-0E-Z*&YA;64I+" F9FEL969I;F1B=68I.PT*"7)E<W5L=&  /2!F:6QE
M9FEN9&)U9BYN1FEL95-I>F5(:6=H.PT*"7)E<W5L=&P /2!F:6QE9FEN9&)U
M9BYN1FEL95-I>F5,;W<[#0H ("  ?0T*#0H ("  :68 *&9I;F1H;F1L(#T]
M(&-A<W0H2$%.1$Q%*2TQ*0T*("  ('L-" ET:')O=R!N97< 1FEL945X8V5P
M=&EO;BAN86UE+"!'971,87-T17)R;W(H*2D[#0H ("  ?0T*("  ($9I;F1#
M;&]S92AF:6YD:&YD;"D[#0H ("  <F5T=7)N("AC87-T*'5L;VYG*7)E<W5L
M=&  /#P ,S(I("L <F5S=6QT;#L-"GT-" T*+RHJ*BHJ*BHJ*BHJ*BHJ*BHJ
M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ* T*("H 1&]E<R!F
M:6QE("AO<B!D:7)E8W1O<GDI(&5X:7-T/PT*("HO#0H-"FEN="!E>&ES=',H
M8VAA<EM=(&YA;64I#0I[#0H ("  =6EN="!R97-U;'0[#0H-"B  ("!I9B H
M=7-E5V9U;F-S*0T*"2\O(&AT=' Z+R]M<V1N+FUI8W)O<V]F="YC;VTO;&EB
M<F%R>2]D969A=6QT+F%S<#]U<FP]+VQI8G)A<GDO96XM=7,O9FEL96EO+V)A
M<V4O9V5T9FEL96%T=')I8G5T97,N87-P#0H)<F5S=6QT(#T 1V5T1FEL94%T
M=')I8G5T97-7*'-T9"YU=&8N=&]55$8Q-GHH;F%M92DI.PT*("  (&5L<V4-
M" ER97-U;'0 /2!'971&:6QE071T<FEB=71E<T$H=&]-0E-Z*&YA;64I*3L-
M" T*("  (')E='5R;B H<F5S=6QT(#T](#!X1D9&1D9&1D8I(#\ ," Z(#$[
M#0I]#0H-"B\J*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ
M*BHJ*BHJ*BHJ*BHJ*BH-"B J($=E="!F:6QE(&%T=')I8G5T97,N#0H *B\-
M" T*=6EN="!G971!='1R:6)U=&5S*&-H87);72!N86UE*0T*>PT*("  ('5I
M;G0 <F5S=6QT.PT*#0H ("  :68 *'5S95=F=6YC<RD-" ER97-U;'0 /2!'
M971&:6QE071T<FEB=71E<U<H<W1D+G5T9BYT;U541C$V>BAN86UE*2D[#0H 
M("  96QS90T*"7)E<W5L=" ]($=E=$9I;&5!='1R:6)U=&5S02AT;TU"4WHH
M;F%M92DI.PT*("  (&EF("AR97-U;'0 /3T ,'A&1D9&1D9&1BD-"B  ("![
M#0H)=&AR;W< ;F5W($9I;&5%>&-E<'1I;VXH;F%M92P 1V5T3&%S=$5R<F]R
M*"DI.PT*("  ('T-"B  ("!R971U<FX <F5S=6QT.PT*?0T*#0HO*BHJ*BHJ
M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ
M* T*("H 27, ;F%M92!A(&9I;&4_#0H *B\-" T*:6YT(&ES9FEL92AC:&%R
M6UT ;F%M92D-"GL-"B  ("!R971U<FX *&=E=$%T=')I8G5T97,H;F%M92D 
M)B!&24Q%7T%45%))0E5415]$25)%0U1/4EDI(#T](# [#0I]#0H-"B\J*BHJ
M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ
M*BHJ#0H *B!)<R!N86UE(&$ 9&ER96-T;W)Y/PT*("HO#0H-"FEN="!I<V1I
M<BAC:&%R6UT ;F%M92D-"GL-"B  ("!R971U<FX *&=E=$%T=')I8G5T97,H
M;F%M92D )B!&24Q%7T%45%))0E5415]$25)%0U1/4EDI("$](# [#0I]#0H-
M"B\J*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ
M*BHJ*BHJ*BHJ#0H *B!#:&%N9V4 9&ER96-T;W)Y+ T*("HO#0H-"G9O:60 
M8VAD:7(H8VAA<EM=('!A=&AN86UE*0T*>R  ($)/3TP <F5S=6QT.PT*#0H 
M("  :68 *'5S95=F=6YC<RD-" ER97-U;'0 /2!3971#=7)R96YT1&ER96-T
M;W)Y5RAS=&0N=71F+G1O551&,39Z*'!A=&AN86UE*2D[#0H ("  96QS90T*
M"7)E<W5L=" ](%-E=$-U<G)E;G1$:7)E8W1O<GE!*'1O34)3>BAP871H;F%M
M92DI.PT*#0H ("  :68 *"%R97-U;'0I#0H ("  >PT*"71H<F]W(&YE=R!&
M:6QE17AC97!T:6]N*'!A=&AN86UE+"!'971,87-T17)R;W(H*2D[#0H ("  
M?0T*?0T*#0HO*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ
M*BHJ*BHJ*BHJ*BHJ*BHJ* T*("H 36%K92!D:7)E8W1O<GDN#0H *B\-" T*
M=F]I9"!M:V1I<BAC:&%R6UT <&%T:&YA;64I#0I[("  0D]/3"!R97-U;'0[
M#0H-"B  ("!I9B H=7-E5V9U;F-S*0T*"7)E<W5L=" ]($-R96%T941I<F5C
M=&]R>5<H<W1D+G5T9BYT;U541C$V>BAP871H;F%M92DL(&YU;&PI.PT*("  
M(&5L<V4-" ER97-U;'0 /2!#<F5A=&5$:7)E8W1O<GE!*'1O34)3>BAP871H
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
M1FEL94YA;64L("(N+B(I(#T](# I#0H)"2  ("!C;VYT:6YU93L-" T*"0EI
M(#T <F5S=6QT+FQE;F=T:#L-" D)<F5S=6QT+FQE;F=T:" ](&D *R Q.PT*
M"0EC;&5N9W1H(#T <W1D+G-T<FEN9RYW8W-L96XH9FEL96EN9F\N8T9I;&5.
M86UE*3L-" D)<F5S=6QT6VE=(#T <W1D+G5T9BYT;U541C H9FEL96EN9F\N
M8T9I;&5.86UE6S  +BX 8VQE;F=T:%TI.PT*"2  ("!]('=H:6QE("A&:6YD
M3F5X=$9I;&57*& L)F9I;&5I;F9O*2 A/2!&04Q312D[#0H)("  ($9I;F1#
M;&]S92AH*3L-" E]#0H ("  ?0T*("  (&5L<V4-"B  ("![#0H)5TE.,S)?
M1DE.1%]$051!(&9I;&5I;F9O.PT*#0H):" ]($9I;F1&:7)S=$9I;&5!*'1O
M34)3>BAC*2P )F9I;&5I;F9O*3L-" EI9B H:" A/2!)3E9!3$E$7TA!3D1,
M15]604Q512D-" E[#0H)("  (&1O#0H)("  ('L ("!I;G0 :3L-" D):6YT
M(&-L96YG=& [#0H-" D)+R\ 4VMI<" B+B( 86YD("(N+B(-" D):68 *'-T
M9"YS=')I;F<N<W1R8VUP*&9I;&5I;F9O+F-&:6QE3F%M92P (BXB*2 ]/2 P
M('Q\#0H)"2  ("!S=&0N<W1R:6YG+G-T<F-M<"AF:6QE:6YF;RYC1FEL94YA
M;64L("(N+B(I(#T](# I#0H)"2  ("!C;VYT:6YU93L-" T*"0EI(#T <F5S
M=6QT+FQE;F=T:#L-" D)<F5S=6QT+FQE;F=T:" ](&D *R Q.PT*"0EC;&5N
M9W1H(#T <W1D+G-T<FEN9RYS=')L96XH9FEL96EN9F\N8T9I;&5.86UE*3L-
M" D)<F5S=6QT6VE=(#T 9FEL96EN9F\N8T9I;&5.86UE6S  +BX 8VQE;F=T
M:%TN9'5P.PT*"2  ("!]('=H:6QE("A&:6YD3F5X=$9I;&5!*& L)F9I;&5I
M;F9O*2 A/2!&04Q312D[#0H)("  ($9I;F1#;&]S92AH*3L-" E]#0H ("  
M?0T*("  (')E='5R;B!R97-U;'0[#0I]#0H-"B\J*BHJ*BHJ*BHJ*BHJ*BHJ
M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BH-"B J(%-I;F-E(%=I;B Y>"!D
M;V5S(&YO="!S=7!P;W)T('1H92 B5R( 05!))W,L(&9I<G-T(&-O;G9E<G0-
M"B J('1O('=C:&%R+"!T:&5N(&-O;G9E<G0 =&\ ;75L=&EB>71E('5S:6YG
M('1H92!C=7)R96YT(&-O9&4-"B J('!A9V4N#0H *B H5&AA;FMS('1O('EA
M;F5U<F%O(&9O<B!T:&ES*0T*("HO#0H-"F-H87(J('1O34)3>BAC:&%R6UT 
M<RD-"GL-"B  (" O+R!/;FQY(&YE960 =&\ 9&\ =&AI<R!I9B!A;GD 8VAA
M<G, :&%V92!T:&4 :&EG:"!B:70 <V5T#0H ("  9F]R96%C:" H8VAA<B!C
M.R!S*0T*("  ('L-" EI9B H8R ^/2 P># P*0T*"7L ("!C:&%R6UT <F5S
M=6QT.PT*"2  ("!I;G0 :3L-" D ("  =V-H87(J('=S(#T <W1D+G5T9BYT
M;U541C$V>BAS*3L-" D ("  <F5S=6QT+FQE;F=T:" ](%=I9&5#:&%R5&]-
M=6QT:4)Y=&4H,"P ,"P =W,L("TQ+"!N=6QL+" P+"!N=6QL+"!N=6QL*3L-
M" D ("  :2 ](%=I9&5#:&%R5&]-=6QT:4)Y=&4H,"P ,"P =W,L("TQ+"!R
M97-U;'0L(')E<W5L="YL96YG=& L(&YU;&PL(&YU;&PI.PT*"2  ("!A<W-E
M<G0H:2 ]/2!R97-U;'0N;&5N9W1H*3L-" D ("  <F5T=7)N(')E<W5L=#L-
M" E]#0H ("  ?0T*("  (')E='5R;B!S=&0N<W1R:6YG+G1O4W1R:6YG>BAS
M*3L-"GT-" T*?0T*#0HO*B ]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T 
M;&EN=7  /3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T *B\-" T*=F5R<VEO;B H
M;&EN=7 I#0I[#0H-"G!R:79A=&4 :6UP;W)T('-T9"YC+FQI;G5X+FQI;G5X
M.PT*#0HO*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ
M*BHJ*BH-"B J(%)E860 82!F:6QE+ T*("H 4F5T=7)N<SH-"B J"6%R<F%Y
M(&]F(&)Y=&5S(')E860-"B J+PT*#0IV;VED6UT <F5A9"AC:&%R6UT ;F%M
M92D-"GL-"B  ("!U:6YT('-I>F4[#0H ("  =6EN="!N=6UR96%D.PT*("  
M(&EN="!F9#L-"B  ("!S=')U8W1?<W1A="!S=&%T8G5F.PT*("  (&)Y=&5;
M72!B=68[#0H ("  8VAA<B J;F%M97H[#0H-"B  ("!N86UE>B ]('1O4W1R
M:6YG>BAN86UE*3L-"B  (" O+W!R:6YT9B B9FEL92YR96%D*"<E<R<I7&XB
M+&YA;65Z*3L-"B  ("!F9" ]('-T9"YC+FQI;G5X+FQI;G5X+F]P96XH;F%M
M97HL($]?4D1/3DQ9*3L-"B  ("!I9B H9F0 /3T +3$I#0H ("  >PT*("  
M("  (" O+W!R:6YT9B B7'1O<&5N(&5R<F]R+"!E<G)N;R ]("5D7&XB+&=E
M=$5R<FYO*"DI.PT*("  ("  ("!G;W1O(&5R<C$[#0H ("  ?0T*#0H ("  
M+R]P<FEN=&8H(EQT9FEL92!O<&5N961<;B(I.PT*("  (&EF("AS=&0N8RYL
M:6YU>"YL:6YU>"YF<W1A="AF9"P )G-T871B=68I*0T*("  ('L-"B  ("  
M("  +R]P<FEN=&8H(EQT9G-T870 97)R;W(L(&5R<FYO(#T )61<;B(L9V5T
M17)R;F\H*2D[#0H ("  ("  (&=O=&\ 97)R,CL-"B  ("!]#0H ("  <VEZ
M92 ]('-T871B=68N<W1?<VEZ93L-"B  ("!B=68 /2!N97< 8GET95MS:7IE
M73L-" T*("  (&YU;7)E860 /2!S=&0N8RYL:6YU>"YL:6YU>"YR96%D*&9D
M+"!C87-T*&-H87(J*6)U9BP <VEZ92D[#0H ("  :68 *&YU;7)E860 (3T 
M<VEZ92D-"B  ("![#0H ("  ("  ("\O<')I;G1F*")<=')E860 97)R;W(L
M(&5R<FYO(#T )61<;B(L9V5T17)R;F\H*2D[#0H ("  ("  (&=O=&\ 97)R
M,CL-"B  ("!]#0H-"B  ("!I9B H<W1D+F,N;&EN=7 N;&EN=7 N8VQO<V4H
M9F0I(#T]("TQ*0T*("  ('L-" DO+W!R:6YT9B B7'1C;&]S92!E<G)O<BP 
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
/;G5L;#L-"GT-" T*?0T*
`
end
May 07 2004
parent reply "Vathix" <vathixSpamFix dprogramming.com> writes:
"Walter" <newshound digitalmars.com> wrote in message
news:c7gkv5$160c$1 digitaldaemon.com...
 I've attached the overlooked function.
You're returning false if getting the file attributes fails, but a different error could have occured like due to permissions or disk failure. I think it should test, on failure if GetLastError() returns ERROR_FILE_NOT_FOUND or ERROR_PATH_NOT_FOUND; and something with errno for linux, I assume. Sorry for nitpicking :> -- Christopher E. Miller
May 07 2004
next sibling parent "Walter" <newshound digitalmars.com> writes:
"Vathix" <vathixSpamFix dprogramming.com> wrote in message
news:c7gnga$19im$1 digitaldaemon.com...
 "Walter" <newshound digitalmars.com> wrote in message
 news:c7gkv5$160c$1 digitaldaemon.com...
 I've attached the overlooked function.
You're returning false if getting the file attributes fails, but a
different
 error could have occured like due to permissions or disk failure. I think
it
 should test, on failure if GetLastError() returns ERROR_FILE_NOT_FOUND or
 ERROR_PATH_NOT_FOUND; and something with errno for linux, I assume. Sorry
 for nitpicking :>
It's a good point, and I could argue it either way.
May 07 2004
prev sibling parent "Unknown W. Brackets" <unknown at.simplemachines.dot.org> writes:
Vathix wrote:

 You're returning false if getting the file attributes fails, but a different
 error could have occured like due to permissions or disk failure. I think it
 should test, on failure if GetLastError() returns ERROR_FILE_NOT_FOUND or
 ERROR_PATH_NOT_FOUND; and something with errno for linux, I assume. Sorry
 for nitpicking :>
 
Many other implementations simply say a file does not exist if you cannot access it too. It's called security through obscurity :P. (kidding) -[Unknown]
May 07 2004