Page 1 of 1

[SOLVED] opendir() with Mac OSX

Posted: Tue Aug 17, 2004 7:52 pm
by sharyn
I am doing a recursive directory traversal which I originally wrote for Win XP but had to port it over to the Mac. It's not working like it did on the PC. The problem seems to be with the Opendir() function.

Code: Select all

function recursedir($BASEDIR)
{
  $hndl=opendir($BASEDIR);
echo "recursedir : hndl = $hndl<br>";
  while($file=readdir($hndl)) 
  {
    if ($file=='.' || $file=='..') continue;
    $completepath="$BASEDIR/$file";
    if (is_dir($completepath)) 
    {
      # its a dir, recurse.
      print "<font color="#FF0000"> DIR: $BASEDIR/$file</font><br>\n";
      recursedir($BASEDIR.'/'.$file);
    } 
    else
    {
      # its a file.
      print "FILE: $BASEDIR/$file<br>\n";
      $FN = $BASEDIR."/".$file;
      ReadThisFile($FN);
    }
  }
} //Recurse Dir
When I echo the opendir handle on the PC I get "recursedir : hndl = Resource id # N" (N is a number), but when I do the same call on the Mac, I just get "recursedir : hndl = " and then it stops and won't recurse. Any ideas? Thanks in advance.

- sharyn

Posted: Tue Aug 17, 2004 8:14 pm
by feyd
try using DIRECTORY_SEPERATOR (a constant) instead of / ... since Mac's don't use / for directory seperation...

Posted: Thu Aug 19, 2004 12:51 pm
by sharyn
Feyd,

I am using OSX which is unix based, so while the directory separator used to be a ":", it's now using "/"s. But I fixed the problem. It turns out I was not passing it the entire path, just the path from where I was starting from (ie. inetpub/wwwroot - or whatever the case is for Macs.

So the code actually works, I just had to feed it the right input. heh heh heh :oops:

I appreciate your help though.

- sharyn