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