How about this one? function recursive_mkdir($dir) { if (is_dir($dir)) return true; if (recursive_mkdir(dirname($dir))) return @mkdir($dir); return false; } On Thu, Aug 21, 2008 at 1:04 AM, Ashley Sheridan <ash@xxxxxxxxxxxxxxxxxxxx> 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 <jochem@xxxxxxxxxxxxx> > To: Robert Cummings <robert@xxxxxxxxxxxxx> > Date: Thu, 21 Aug 2008 00:52:09 +0200 > Subject: Re: 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