Hi, I am new here.. Hmm, I think what you should add in your function, Yeti, is else - wont it will be for better performance? and not the suppress the error, and Jochem, then it will be perfect - wont it? I am not sure about the else - but as long you provide to the PHP Processor more information - wont it make him be faster?
function recursive_mkdir($dir) { if (is_dir($dir)) return true; else { if (recursive_mkdir(dirname($dir))) return @mkdir($dir); return false; } } On Thu, Aug 21, 2008 at 3:42 PM, Jochem Maas <[EMAIL PROTECTED]> wrote: > Yeti schreef: >> >> How about this one? >> >> function recursive_mkdir($dir) { >> if (is_dir($dir)) return true; >> if (recursive_mkdir(dirname($dir))) return @mkdir($dir); >> return false; >> } > > covers half of one of my gripes about the OP's originally posted function. > and it introduces a regression in that file mode is no longer supported. > > so I'd say it's no better. > >> >> On Thu, Aug 21, 2008 at 1:04 AM, Ashley Sheridan >> <[EMAIL PROTECTED]> wrote: >>> >>> Whats even more fun is inheriting somebody elses' *undocumented* code. >>> Oh, and if just happens to be in a strange programming language that you >>> don't know too well, all the better! Sounds awful, but it did happen to >>> me once :-/ >>> >>> Ash >>> www.ashleysheridan.co.uk >>> >>> >>> ---------- Forwarded message ---------- >>> From: Jochem Maas <[EMAIL PROTECTED]> >>> To: Robert Cummings <[EMAIL PROTECTED]> >>> Date: Thu, 21 Aug 2008 00:52:09 +0200 >>> Subject: Re: [PHP] Does this seem wrong to anyone else? >>> Robert Cummings schreef: >>>> >>>> On Wed, 2008-08-20 at 14:09 -0700, Stephen Johnson wrote: >>>>> >>>>> I am debugging someone else¹s code, and this is what they have : >>>>> >>>>> >>>>> 1055 function mkdir_recursive($pathname, $mode) >>>>> 1056 { >>>>> 1057 is_dir(dirname($pathname)) || >>>>> mkdir_recursive(dirname($pathname), $mode); >>>>> 1058 return is_dir($pathname) || @mkdir($pathname, $mode); >>>>> 1059 } >>>>> >>>>> The part that bothers me is that mkdir_recursive calls itself from >>>>> within >>>>> itself. >>>>> I am not an expert on this particular type of thing, and maybe that is >>>>> allowed, but it seems wrong to me, and this error is being generated: >>>> >>>> That's the point of recursion... to recursively call oneself! >>>> >>>>> Fatal error: Call to undefined function mkdir_recursive() in xxxxx.php >>>>> on >>>>> line 1057 >>> >>> the call to mkdir_recursive() on line 1057 is made inside >>> mkdir_recursive() >>> so it's impossible that the function doesn't exist ... unless the >>> function >>> you posted is actually a method of a class, in which case some time in >>> the past >>> the project included a standalone function mkdir_recursive() which is >>> been >>> removed. at least that would be my first/best guess. >>> >>>> Not sure why you're getting that error since it appears to be well >>>> defined above... unless xxxxx.php is not the same file in which >>>> mkdir_recursive() ha sbeen defined. I'll wager it's not... in which case >>>> you need to ensure the file that contains the mkdir_recursive() function >>>> declaration is included into xxxxx.php. BTW, FWIW, I wouldn't call the >>>> above code good quality since it obfuscates its intent by using || >>>> hackishness. It's succinct but less obvious. >>> >>> it's plain horrid, not to mention using is_dir() & dirname() twice >>> unnecessarily, >>> providing no checks as to whether the path exists and is a file or >>> whether file >>> permissions are okay (if your gonna wrap mkdir() might as well do a >>> proper job) , etc. >>> >>> worst of all the call to mkdir() is error suppressed ... a nice big wtf >>> waiting >>> to happen when it fails. >>> >>> oh and there is absolutely no need to use recursion here, a while loop >>> could >>> be used instead which would be more efficient. >>> >>> lastly Stut pointed out that php5 negates the need for this function >>> altogether, >>> but you might still be stuck on php4 for some reason. >>> >>> ain't it fun inheriting other peoples 'code' ;-) >>> >>>> Cheers, >>>> Rob. >>> >>> -- >>> PHP General Mailing List (http://www.php.net/) >>> To unsubscribe, visit: http://www.php.net/unsub.php >>> >>> >>> -- >>> PHP General Mailing List (http://www.php.net/) >>> To unsubscribe, visit: http://www.php.net/unsub.php >>> >> > > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > >