Browse Source

+ FileNameCasePreserving added - see #18066 in Mantis

git-svn-id: trunk@20894 -
Tomas Hajny 13 years ago
parent
commit
d442d14e0c

+ 2 - 1
rtl/embedded/system.pp

@@ -45,7 +45,7 @@ const
   AllowDriveSeparators : set of char = [':'];
 {$endif FPC_HAS_FEATURE_FILEIO}
 
-{ FileNameCaseSensitive is defined below! }
+{ FileNameCaseSensitive and FileNameCasePreserving are defined below! }
 
 {$ifdef FPC_HAS_FEATURE_EXITCODE}
   maxExitCode = 255;
@@ -61,6 +61,7 @@ const
   StdErrorHandle  = 2;
 
   FileNameCaseSensitive : boolean = true;
+  FileNameCasePreserving: boolean = true;
 {$endif FPC_HAS_FEATURE_FILEIO}
 {$ifdef FPC_HAS_FEATURE_TEXTIO}
   CtrlZMarksEOF: boolean = false; (* #26 not considered as end of file *)

+ 3 - 1
rtl/emx/system.pas

@@ -33,7 +33,7 @@ const
  PathSeparator = ';';
  AllowDirectorySeparators : set of char = ['\','/'];
  AllowDriveSeparators : set of char = [':'];
-{ FileNameCaseSensitive is defined separately below!!! }
+{ FileNameCaseSensitive and FileNameCasePreserving are defined separately below!!! }
  maxExitCode = 255;
  MaxPathLen = 256;
  AllFilesMask = '*';
@@ -85,6 +85,7 @@ const   UnusedHandle=-1;
 
         LFNSupport: boolean = true;
         FileNameCaseSensitive: boolean = false;
+        FileNameCasePreserving: boolean = false;
         CtrlZMarksEOF: boolean = true; (* #26 is considered as end of file *)
 
         sLineBreak = LineEnding;
@@ -555,6 +556,7 @@ begin
                 ProcessID := PIB^.PID;
                 ThreadID := TIB^.TIB2^.TID;
                 IsConsole := ApplicationType <> 3;
+                FileNameCasePreserving := true;
             end;
         osDPMI:
             begin

+ 1 - 0
rtl/gba/system.pp

@@ -43,6 +43,7 @@ const
  AllowDirectorySeparators : set of char = ['\','/'];
  AllowDriveSeparators : set of char = [':'];
  FileNameCaseSensitive = false;
+ FileNameCasePreserving = true;
  maxExitCode = 255;
  MaxPathLen = 255;
  AllFilesMask = '*';

+ 3 - 2
rtl/go32v2/system.pp

@@ -43,7 +43,7 @@ const
  PathSeparator = ';';
  AllowDirectorySeparators : set of char = ['\','/'];
  AllowDriveSeparators : set of char = [':'];
-{ FileNameCaseSensitive is defined separately below!!! }
+{ FileNameCaseSensitive and FileNameCasePreserving are defined separately below!!! }
  maxExitCode = 255;
  MaxPathLen = 256;
 
@@ -55,6 +55,7 @@ const
   StdErrorHandle  = 2;
 
   FileNameCaseSensitive : boolean = false;
+  FileNameCasePreserving: boolean = false;
   CtrlZMarksEOF: boolean = true; (* #26 is considered as end of file *)
 
   sLineBreak = LineEnding;
@@ -668,7 +669,7 @@ Begin
   LFNSupport:=CheckLFN;
   if LFNSupport then
    begin
-    FileNameCaseSensitive:=true;
+    FileNameCasePreserving:=true;
     AllFilesMask := '*';
    end
   else

+ 1 - 1
rtl/inc/fexpand.inc

@@ -119,7 +119,7 @@ begin
 {$ENDIF FPC_FEXPAND_UNC}
 
 (* First convert the path to uppercase if appropriate for current platform. *)
-    if FileNameCaseSensitive then
+    if FileNameCasePreserving then
         Pa := Path
     else
         Pa := UpCase (Path);

+ 1 - 0
rtl/linux/oldlinux.pp

@@ -5207,6 +5207,7 @@ function FExpand (const Path: PathStr): PathStr;
 const
   LFNSupport = true;
   FileNameCaseSensitive = true;
+  FileNameCasePreserving = true;
 
 {$I fexpand.inc}
 

+ 1 - 0
rtl/morphos/system.pp

@@ -47,6 +47,7 @@ const
   StdErrorHandle  : LongInt = 0;
 
   FileNameCaseSensitive : Boolean = False;
+  FileNameCasePreserving: boolean = true;
   CtrlZMarksEOF: boolean = false; { #26 not considered as end of file }
 
   sLineBreak = LineEnding;

+ 2 - 1
rtl/nativent/system.pp

@@ -49,7 +49,7 @@ const
  AllowDirectorySeparators : set of char = ['\'];
  AllowDriveSeparators : set of char = [];
 
-{ FileNameCaseSensitive is defined separately below!!! }
+{ FileNameCaseSensitive and FileNameCasePreserving are defined separately below!!! }
  maxExitCode = High(ErrorCode);
  MaxPathLen = High(Word);
  AllFilesMask = '*';
@@ -87,6 +87,7 @@ const
 const
   // NT is case sensitive
   FileNameCaseSensitive : boolean = true;
+  FileNameCasePreserving: boolean = true;
   // todo: check whether this is really the case on NT
   CtrlZMarksEOF: boolean = true; (* #26 is considered as end of file *)
 

+ 1 - 0
rtl/nds/system.pp

@@ -57,6 +57,7 @@ const
   StdErrorHandle  = 2;
 
   FileNameCaseSensitive : boolean = true;
+  FileNameCasePreserving: boolean = true;
   CtrlZMarksEOF: boolean = true; (* #26 not considered as end of file *)
 
   sLineBreak = LineEnding;

+ 2 - 1
rtl/netware/system.pp

@@ -44,7 +44,7 @@ const
  PathSeparator = ';';
  AllowDirectorySeparators : set of char = ['\','/'];
  AllowDriveSeparators : set of char = [':'];
-{ FileNameCaseSensitive is defined separately below!!! }
+{ FileNameCaseSensitive and FileNameCasePreserving are defined separately below!!! }
  maxExitCode = 255;
  MaxPathLen = 256;
  AllFilesMask = '*';
@@ -57,6 +57,7 @@ CONST
    StdErrorHandle  : THandle = 0;
 
    FileNameCaseSensitive : boolean = false;
+   FileNameCasePreserving: boolean = true; (* Not really correct on older Netware versions without the LFN support switched on... *)
    CtrlZMarksEOF: boolean = false; (* #26 not considered as end of file *)
 
    sLineBreak = LineEnding;

+ 2 - 1
rtl/netwlibc/system.pp

@@ -49,7 +49,7 @@ const
  PathSeparator = ';';
  AllowDirectorySeparators : set of char = ['\','/'];
  AllowDriveSeparators : set of char = [':'];
-{ FileNameCaseSensitive is defined separately below!!! }
+{ FileNameCaseSensitive and FileNameCasePreserving are defined separately below!!! }
  maxExitCode = $ffff;
  MaxPathLen = 256;
  AllFilesMask = '*';
@@ -62,6 +62,7 @@ CONST
    StdErrorHandle  : THandle = 0;
 
    FileNameCaseSensitive : boolean = false;
+   FileNameCasePreserving: boolean = true;
    CtrlZMarksEOF: boolean = false; (* #26 not considered as end of file *)
 
    sLineBreak = LineEnding;

+ 8 - 3
rtl/os2/system.pas

@@ -41,7 +41,7 @@ const
   PathSeparator = ';';
   AllowDirectorySeparators : set of char = ['\','/'];
   AllowDriveSeparators : set of char = [':'];
-{ FileNameCaseSensitive is defined separately below!!! }
+{ FileNameCaseSensitive and FileNameCasePreserving are defined separately below!!! }
   MaxExitCode = 65535;
   MaxPathLen = 256;
   AllFilesMask = '*';
@@ -58,6 +58,7 @@ const   UnusedHandle=-1;
 
         LFNSupport: boolean = true;
         FileNameCaseSensitive: boolean = false;
+        FileNameCasePreserving: boolean = true;
         CtrlZMarksEOF: boolean = true; (* #26 is considered as end of file *)
 
         sLineBreak = LineEnding;
@@ -1084,6 +1085,9 @@ var TIB: PThreadInfoBlock;
 const
     DosCallsName: array [0..8] of char = 'DOSCALLS'#0;
 
+{$IFDEF OS2UNICODE}
+ {$I sysucode.inc}
+{$ENDIF OS2UNICODE}
 
 {*var}
 {* ST: pointer;}
@@ -1179,9 +1183,10 @@ begin
     SysInitExceptions;
     fpc_cpucodeinit;
 
-{$ifdef HASWIDESTRING}
     InitUnicodeStringManager;
-{$endif HASWIDESTRING}
+{$ifdef OS2UCODE}
+    InitOS2WideStrings;
+{$endif OS2UCODE}
 
     { ... and I/O }
     SysInitStdIO;

+ 3 - 2
rtl/symbian/system.pp

@@ -36,7 +36,7 @@ const
   PathSeparator = ';';
   AllowDirectorySeparators : set of char = ['\','/'];
   AllowDriveSeparators : set of char = [':'];
-  { FileNameCaseSensitive is defined separately below }
+  { FileNameCaseSensitive and FileNameCasePreserving are defined separately below }
   maxExitCode = 65535;
   MaxPathLen = 260;
   AllFilesMask = '*';
@@ -55,7 +55,8 @@ const
   StdOutputHandle : THandle = 0;
   StdErrorHandle  : THandle = 0;
 
-  FileNameCaseSensitive : boolean = true;
+  FileNameCaseSensitive : boolean = false;
+  FileNameCasePreserving: boolean = true;
   CtrlZMarksEOF: boolean = true; (* #26 not considered as end of file *)
 
   sLineBreak = LineEnding;

+ 2 - 1
rtl/unix/sysunixh.inc

@@ -33,7 +33,7 @@ const
  PathSeparator = ':';
  AllowDirectorySeparators : set of char = ['\','/'];
  AllowDriveSeparators : set of char = [];
-{ FileNameCaseSensitive is defined below! }
+{ FileNameCaseSensitive and FileNameCasePreserving are defined below! }
  maxExitCode = 255;
  {$ifdef LINUX}
  MaxPathLen = 4096; // linux has always got to be BIGGER
@@ -49,6 +49,7 @@ const
   StdErrorHandle  = 2;
 
   FileNameCaseSensitive : boolean = true;
+  FileNameCasePreserving: boolean = true;
   CtrlZMarksEOF: boolean = false; (* #26 not considered as end of file *)
 
   sLineBreak = LineEnding;

+ 3 - 2
rtl/watcom/system.pp

@@ -36,7 +36,7 @@ const
  PathSeparator = ';';
  AllowDirectorySeparators : set of char = ['\','/'];
  AllowDriveSeparators : set of char = [':'];
-{ FileNameCaseSensitive is defined separately below!!! }
+{ FileNameCaseSensitive and FileNameCasePreserving are defined separately below!!! }
  maxExitCode = 255;
  MaxPathLen = 256;
 
@@ -48,6 +48,7 @@ const
   StdErrorHandle  = 2;
 
   FileNameCaseSensitive : boolean = false;
+  FileNameCasePreserving: boolean = false;
   CtrlZMarksEOF: boolean = true; (* #26 is considered as end of file *)
 
   sLineBreak = LineEnding;
@@ -773,7 +774,7 @@ Begin
   LFNSupport:=CheckLFN;
   if LFNSupport then
    begin
-    FileNameCaseSensitive:=true;
+    FileNameCasePreserving:=true;
     AllFilesMask := '*';
    end
   else

+ 1 - 0
rtl/wii/system.pp

@@ -51,6 +51,7 @@ const
   StdErrorHandle  = 2;
 
   FileNameCaseSensitive : boolean = true;
+  FileNameCasePreserving: boolean = true;
   CtrlZMarksEOF: boolean = true; (* #26 not considered as end of file *)
 
   sLineBreak = LineEnding;

+ 3 - 2
rtl/win32/system.pp

@@ -42,7 +42,7 @@ const
  AllowDirectorySeparators : set of char = ['\','/'];
  AllowDriveSeparators : set of char = [':'];
 
-{ FileNameCaseSensitive is defined separately below!!! }
+{ FileNameCaseSensitive and FileNameCasePreserving are defined separately below!!! }
  maxExitCode = 65535;
  MaxPathLen = 260;
  AllFilesMask = '*';
@@ -61,7 +61,8 @@ const
   StdOutputHandle : THandle = 0;
   StdErrorHandle  : THandle = 0;
 
-  FileNameCaseSensitive : boolean = true;
+  FileNameCaseSensitive : boolean = false;
+  FileNameCasePreserving: boolean = true;
   CtrlZMarksEOF: boolean = true; (* #26 is considered as end of file *)
 
   sLineBreak = LineEnding;

+ 3 - 2
rtl/win64/system.pp

@@ -43,7 +43,7 @@ const
  PathSeparator = ';';
  AllowDirectorySeparators : set of char = ['\','/'];
  AllowDriveSeparators : set of char = [':'];
-{ FileNameCaseSensitive is defined separately below!!! }
+{ FileNameCaseSensitive and FileNameCasePreserving are defined separately below!!! }
  maxExitCode = 65535;
  MaxPathLen = 260;
  AllFilesMask = '*';
@@ -63,7 +63,8 @@ const
   StdErrorHandle  : THandle = 0;
   System_exception_frame : PEXCEPTION_FRAME =nil;
 
-  FileNameCaseSensitive : boolean = true;
+  FileNameCaseSensitive : boolean = false;
+  FileNameCasePreserving: boolean = true;
   CtrlZMarksEOF: boolean = true; (* #26 is considered as end of file *)
 
   sLineBreak = LineEnding;

+ 3 - 2
rtl/wince/system.pp

@@ -39,7 +39,7 @@ const
  PathSeparator = ';';
  AllowDirectorySeparators : set of char = ['\','/'];
  AllowDriveSeparators : set of char = [':'];
-{ FileNameCaseSensitive is defined separately below!!! }
+{ FileNameCaseSensitive and FileNameCasePreserving are defined separately below!!! }
  maxExitCode = 65535;
  MaxPathLen = 260;
  AllFilesMask = '*';
@@ -51,7 +51,8 @@ const
   StdOutputHandle : THandle = 0;
   StdErrorHandle  : THandle = 0;
 
-  FileNameCaseSensitive : boolean = true;
+  FileNameCaseSensitive : boolean = false;
+  FileNameCasePreserving: boolean = true;
   CtrlZMarksEOF: boolean = true; (* #26 is considered as end of file *)
 
   sLineBreak = LineEnding;