mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-17 21:09:20 +02:00
+ initial implementation of path dependent IsFileNameCaseSensitive/IsFileNameCasePreserving functions for darwin
git-svn-id: trunk@49164 -
This commit is contained in:
parent
ad66a19666
commit
c1f85ac3a1
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -16346,6 +16346,7 @@ tests/test/units/sysutils/tfile1.pp svneol=native#text/plain
|
|||||||
tests/test/units/sysutils/tfile2.pp svneol=native#text/plain
|
tests/test/units/sysutils/tfile2.pp svneol=native#text/plain
|
||||||
tests/test/units/sysutils/tfileage.pp svneol=native#text/pascal
|
tests/test/units/sysutils/tfileage.pp svneol=native#text/pascal
|
||||||
tests/test/units/sysutils/tfilename.pp svneol=native#text/plain
|
tests/test/units/sysutils/tfilename.pp svneol=native#text/plain
|
||||||
|
tests/test/units/sysutils/tfilenamecase1.pp svneol=native#text/pascal
|
||||||
tests/test/units/sysutils/tfloattostr.pp svneol=native#text/plain
|
tests/test/units/sysutils/tfloattostr.pp svneol=native#text/plain
|
||||||
tests/test/units/sysutils/tformat.pp svneol=native#text/plain
|
tests/test/units/sysutils/tformat.pp svneol=native#text/plain
|
||||||
tests/test/units/sysutils/tinttohex.pp svneol=native#text/pascal
|
tests/test/units/sysutils/tinttohex.pp svneol=native#text/pascal
|
||||||
|
@ -875,3 +875,28 @@ Function FileSetDateUTC (Const FileName : RawByteString;const FileDateTimeUTC :
|
|||||||
begin
|
begin
|
||||||
Result:=FileSetDateUTC(UnicodeString(FileName),FileDateTimeUTC);
|
Result:=FileSetDateUTC(UnicodeString(FileName),FileDateTimeUTC);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{$IFNDEF HAS_ISFILENAMECASESENSITIVE}
|
||||||
|
Function IsFileNameCaseSensitive(Const aFileName : RawByteString) : Boolean;
|
||||||
|
begin
|
||||||
|
Result:=FileNameCaseSensitive;
|
||||||
|
end;
|
||||||
|
|
||||||
|
Function IsFileNameCaseSensitive(Const aFileName : UnicodeString) : Boolean;
|
||||||
|
begin
|
||||||
|
Result:=FileNameCaseSensitive;
|
||||||
|
end;
|
||||||
|
{$ENDIF HAS_ISFILENAMECASESENSITIVE}
|
||||||
|
|
||||||
|
{$IFNDEF HAS_ISFILENAMECASEPRESERVING}
|
||||||
|
Function IsFileNameCasePreserving(Const aFileName : RawByteString) : Boolean;
|
||||||
|
begin
|
||||||
|
Result:=FileNameCasePreserving;
|
||||||
|
end;
|
||||||
|
|
||||||
|
Function IsFileNameCasePreserving(Const aFileName : UnicodeString) : Boolean;
|
||||||
|
begin
|
||||||
|
Result:=FileNameCasePreserving;
|
||||||
|
end;
|
||||||
|
{$ENDIF HAS_ISFILENAMECASEPRESERVING}
|
||||||
|
|
||||||
|
@ -252,3 +252,9 @@ Function GetFileAsString(Const aFileName : RawByteString; aEncoding : TEncoding)
|
|||||||
Function GetFileAsString(Const aFileName : UnicodeString) : UnicodeString;
|
Function GetFileAsString(Const aFileName : UnicodeString) : UnicodeString;
|
||||||
Function GetFileAsString(Const aFileName : UnicodeString; aEncoding : TEncoding) : UnicodeString;
|
Function GetFileAsString(Const aFileName : UnicodeString; aEncoding : TEncoding) : UnicodeString;
|
||||||
|
|
||||||
|
Function IsFileNameCaseSensitive(Const aFileName : RawByteString) : Boolean;
|
||||||
|
Function IsFileNameCaseSensitive(Const aFileName : UnicodeString) : Boolean;
|
||||||
|
|
||||||
|
Function IsFileNameCasePreserving(Const aFileName : RawByteString) : Boolean;
|
||||||
|
Function IsFileNameCasePreserving(Const aFileName : UnicodeString) : Boolean;
|
||||||
|
|
||||||
|
@ -183,3 +183,5 @@ const
|
|||||||
{$if defined(linux)}
|
{$if defined(linux)}
|
||||||
function FpSchedGetAffinity(pid : pid_t;cpusetsize : size_t;mask : pcpu_set_t) : cint; cdecl; external clib name 'sched_getaffinity';
|
function FpSchedGetAffinity(pid : pid_t;cpusetsize : size_t;mask : pcpu_set_t) : cint; cdecl; external clib name 'sched_getaffinity';
|
||||||
{$endif}
|
{$endif}
|
||||||
|
Function FpPathconf(path : pchar;name : cint) : clong; cdecl; external clib name 'pathconf';
|
||||||
|
|
||||||
|
@ -55,6 +55,11 @@ uses
|
|||||||
{$DEFINE HAVECLOCKGETTIME}
|
{$DEFINE HAVECLOCKGETTIME}
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
|
||||||
|
{$IF defined(DARWIN)}
|
||||||
|
{$DEFINE HAS_ISFILENAMECASEPRESERVING}
|
||||||
|
{$DEFINE HAS_ISFILENAMECASESENSITIVE}
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
{$if defined(LINUX)}
|
{$if defined(LINUX)}
|
||||||
{$if sizeof(clong)<8}
|
{$if sizeof(clong)<8}
|
||||||
{$DEFINE USE_STATX}
|
{$DEFINE USE_STATX}
|
||||||
@ -1196,6 +1201,42 @@ begin
|
|||||||
end
|
end
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{$IF defined(DARWIN)}
|
||||||
|
Function IsFileNameCaseSensitive(Const aFileName : RawByteString) : Boolean;
|
||||||
|
var
|
||||||
|
res : clong;
|
||||||
|
begin
|
||||||
|
res:=FpPathconf(PChar(aFileName),11 {_PC_CASE_SENSITIVE });
|
||||||
|
{ fall back to default if path is not found }
|
||||||
|
if res<0 then
|
||||||
|
Result:=FileNameCaseSensitive
|
||||||
|
else
|
||||||
|
Result:=res<>0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
Function IsFileNameCaseSensitive(Const aFileName : UnicodeString) : Boolean;
|
||||||
|
begin
|
||||||
|
Result:=IsFileNameCaseSensitive(RawByteString(aFileName));
|
||||||
|
end;
|
||||||
|
|
||||||
|
Function IsFileNameCasePreserving(Const aFileName : RawByteString) : Boolean;
|
||||||
|
var
|
||||||
|
res : clong;
|
||||||
|
begin
|
||||||
|
res:=FpPathconf(PChar(aFileName),12 { _PC_CASE_PRESERVING });
|
||||||
|
if res<0 then
|
||||||
|
{ fall back to default if path is not found }
|
||||||
|
Result:=FileNameCasePreserving
|
||||||
|
else
|
||||||
|
Result:=res<>0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
Function IsFileNameCasePreserving(Const aFileName : UnicodeString) : Boolean;
|
||||||
|
begin
|
||||||
|
Result:=IsFileNameCasePreserving(RawByteString(aFileName));
|
||||||
|
end;
|
||||||
|
{$ENDIF defined(DARWIN)}
|
||||||
|
|
||||||
{****************************************************************************
|
{****************************************************************************
|
||||||
Disk Functions
|
Disk Functions
|
||||||
****************************************************************************}
|
****************************************************************************}
|
||||||
|
@ -116,6 +116,9 @@ begin
|
|||||||
{$IFDEF DEBUG}
|
{$IFDEF DEBUG}
|
||||||
{$IFDEF FPC}
|
{$IFDEF FPC}
|
||||||
WriteLn ('FileNameCaseSensitive = ', FileNameCaseSensitive);
|
WriteLn ('FileNameCaseSensitive = ', FileNameCaseSensitive);
|
||||||
|
WriteLn ('IsFileNameCaseSensitive('''+TempDir+''') = ', IsFileNameCaseSensitive(TempDir));
|
||||||
|
Writeln('Setting FileNameCaseSensitive to result of IsFileNameCaseSensitive('''+TempDir+''');');
|
||||||
|
FileNameCaseSensitive:=IsFileNameCaseSensitive(TempDir);
|
||||||
{$ENDIF FPC}
|
{$ENDIF FPC}
|
||||||
WriteLn ('TempDir = ', TempDir);
|
WriteLn ('TempDir = ', TempDir);
|
||||||
WriteLn ('SetCurrentDir result = ', SetCurrentDir (TempDir));
|
WriteLn ('SetCurrentDir result = ', SetCurrentDir (TempDir));
|
||||||
|
29
tests/test/units/sysutils/tfilenamecase1.pp
Normal file
29
tests/test/units/sysutils/tfilenamecase1.pp
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
uses
|
||||||
|
Sysutils;
|
||||||
|
var
|
||||||
|
f : file;
|
||||||
|
Begin
|
||||||
|
Writeln('IsFileNameCaseSensitive: ',IsFileNameCaseSensitive('tfilenamecase1.dat'));
|
||||||
|
Writeln('IsFileNameCasePreserving ',IsFileNameCasePreserving('tfilenamecase1.dat'));
|
||||||
|
Assign(f,'tfilenamecase1.dat');
|
||||||
|
Rewrite(f);
|
||||||
|
Close(f);
|
||||||
|
if IsFileNameCaseSensitive('tfilenamecase1.dat') then
|
||||||
|
begin
|
||||||
|
if FileExists('Tfilenamecase1.dat') then
|
||||||
|
halt(1);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
if not(FileExists('Tfilenamecase1.dat')) then
|
||||||
|
halt(2);
|
||||||
|
end;
|
||||||
|
if IsFileNameCasePreserving('tfilenamecase1.dat') then
|
||||||
|
begin
|
||||||
|
if not(FileExists('Tfilenamecase1.dat')) then
|
||||||
|
halt(1);
|
||||||
|
end;
|
||||||
|
End.
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user