I’ve been trying to build a project stored on a Fat32FS USB pen drive and found 
make wasn’t locating any of the files using the wildcard function. The wildcard 
was looking for *.cc files so I believe it is to do with suffix swapping.

After further investigation I think I’ve tracked the problem down to the 
unixlib directory iteration in the unix/dirent.c file. I believe the following 
comments from the top of the file are relevant.

/* It is a common mistake to assume that the offsets returned from
   OS_GBPB is monotonic increasing with unity steps from the start
   offset 0 onwards.  Accoring to the PRMs, the only thing you may
   be sure of is that offset 0 starts the GBPB enumeration and
   offset -1 returned indicates the end of the enumeration.
...
/* After preaching the passion, now the hack : when we're going to do
   the reverse suffix swapping, we will have up to two outstanding OS_GBPB
   sessions : one in the main dir and another in the suffix dir.
   How we're going to give an 'off_t' result in telldir describing these
   two offsets in OS_GBPB ? Well, we are going to rely on unity monotonic
   increase of the offsets and this up to GBPB_MAX_ENUM.  If these
   conditions are not fullfilled, we stop the enumeration.
   Another solution is to return table index numbers which, when presented
   to seekdir, will get looked up in a table giving the two internal dir
   offsets.  */

>From comments when I mentioned this bug on the ROOL forum it made me think 
>Fat32FS does not increment the value as expected by the hack.

Is there anybody who could look at to confirm my findings (and possibly fix) 
this?

Regards,
Alan
_______________________________________________
GCCSDK mailing list gcc@gccsdk.riscos.info
Bugzilla: http://www.riscos.info/bugzilla/index.cgi
List Info: http://www.riscos.info/mailman/listinfo/gcc
Main Page: http://www.riscos.info/index.php/GCCSDK

Reply via email to