>> It seems you rather created a new problem for *nix
>> users. As a rule: never transform casing of paths
>> and filenames in portable code, and use hb_FileMatch()
>> to check for equality of filenames and paths. This
>> will do case sensitive comparison on *nixes and case
>> insensitive ones on win/dos/os2.
>>
>
> I could not get the whole concept.
I told it above :)
> I am storing the filename as is selected. Before, I was
> lower-casing them. So the situation is exactly the same
> in both cases. I never used hb_FileMatch(), can you
> fix this code to allow projects to be portable on
> any platforms and at the same time sources be
> located accordingly ?
I'd feel it better if you'd understand the concept
and keep it fixed in the future. F.e. if you look
for a file names "Hello.prg" on Linux, it's not
good to use 'LOWER( "Hello.prg" ) == fn' when looking
it up in a list of filenames, as there might also exist
a "hello.prg" which is a different file. So it's
better to use hb_FileMatch( "Hello.prg", fn ) instead.
The only place where you want to keep using LOWER(),
is when looking for file types:
LOWER( ExtOf( "Hello.PRG" ) ) == ".prg"
Here is your patch:
---
- cLPath := hbide_pathNormalized( cPath, .t. )
- IF left( cLPath, len( cLRoot ) ) == cLRoot
+ cLPath := hbide_pathNormalized( cPath, .f. )
+ IF left( lower( cLPath ), len( cLRoot ) ) == cLRoot
---
You've added a LOWER() call to a comparison, which
won't remove any code which converts filenames to
lowercase, and as I understand this was the problem
of original poster ("For example file name is Main.prg but
in project list is main.prg").
I hope that help, or others can jump in.
Viktor
_______________________________________________
Harbour mailing list (attachment size limit: 40KB)
[email protected]
http://lists.harbour-project.org/mailman/listinfo/harbour