Browse Source

*fix fileopen (please OS2,EMX maintainers have a look)

git-svn-id: trunk@3858 -
oro06 19 years ago
parent
commit
42bd89095f

+ 1 - 0
rtl/emx/sysutils.pp

@@ -410,6 +410,7 @@ asm
  mov eax, 7F2Bh
  mov eax, 7F2Bh
  call syscall
  call syscall
  pop ebx
  pop ebx
+ //check me, should return feInvalidHandle(=-1) if fail, other negative returned value are no more errors
 end {['eax', 'ebx', 'ecx', 'edx']};
 end {['eax', 'ebx', 'ecx', 'edx']};
 
 
 
 

+ 4 - 2
rtl/objpas/classes/streams.inc

@@ -419,7 +419,8 @@ begin
     FHandle:=FileCreate(AFileName)
     FHandle:=FileCreate(AFileName)
   else
   else
     FHAndle:=FileOpen(AFileName,Mode);
     FHAndle:=FileOpen(AFileName,Mode);
-  If FHandle<0 then
+
+  If (FHandle=feInvalidHandle) then
     If Mode=fmcreate then
     If Mode=fmcreate then
       raise EFCreateError.createfmt(SFCreateError,[AFileName])
       raise EFCreateError.createfmt(SFCreateError,[AFileName])
     else
     else
@@ -435,7 +436,8 @@ begin
     FHandle:=FileCreate(AFileName)
     FHandle:=FileCreate(AFileName)
   else
   else
     FHAndle:=FileOpen(AFileName,Mode);
     FHAndle:=FileOpen(AFileName,Mode);
-  If FHandle<0 then
+
+  If (FHandle=feInvalidHandle) then
     If Mode=fmcreate then
     If Mode=fmcreate then
       raise EFCreateError.createfmt(SFCreateError,[AFileName])
       raise EFCreateError.createfmt(SFCreateError,[AFileName])
     else
     else

+ 3 - 0
rtl/objpas/sysutils/filutilh.inc

@@ -68,6 +68,9 @@ Const
   fsFromCurrent   = 1;
   fsFromCurrent   = 1;
   fsFromEnd       = 2;
   fsFromEnd       = 2;
 
 
+  { File errors }
+  feInvalidHandle : THandle = -1;  //return value on FileOpen error
+
 Function FileOpen (Const FileName : string; Mode : Integer) : THandle;
 Function FileOpen (Const FileName : string; Mode : Integer) : THandle;
 Function FileCreate (Const FileName : String) : THandle;
 Function FileCreate (Const FileName : String) : THandle;
 Function FileCreate (Const FileName : String; Mode : Integer) : THandle;
 Function FileCreate (Const FileName : String; Mode : Integer) : THandle;

+ 1 - 1
rtl/objpas/sysutils/sysutils.inc

@@ -65,7 +65,7 @@
 
 
   begin
   begin
     fd:=FileOpen(FileName,fmOpenRead);
     fd:=FileOpen(FileName,fmOpenRead);
-    If (Fd>=0) then
+    If (Fd<>feInvalidHandle) then
       try
       try
         Result:=FileSetDate(fd,Age);
         Result:=FileSetDate(fd,Age);
       finally
       finally

+ 2 - 1
rtl/os2/sysutils.pp

@@ -466,7 +466,8 @@ begin
   If Rc=0 then
   If Rc=0 then
     FileOpen:=Handle
     FileOpen:=Handle
   else
   else
-    FileOpen:=-RC;
+    FileOpen:=feInvalidHandle; //FileOpen:=-RC;
+    //should return feInvalidHandle(=-1) if fail, other negative returned value are no more errors
 end;
 end;
 
 
 function FileCreate (const FileName: string): longint;
 function FileCreate (const FileName: string): longint;

+ 1 - 0
rtl/win/sysutils.pp

@@ -158,6 +158,7 @@ begin
   result := CreateFile(@FN[1], dword(AccessMode[Mode and 3]),
   result := CreateFile(@FN[1], dword(AccessMode[Mode and 3]),
                        dword(ShareMode[(Mode and $F0) shr 4]), nil, OPEN_EXISTING,
                        dword(ShareMode[(Mode and $F0) shr 4]), nil, OPEN_EXISTING,
                        FILE_ATTRIBUTE_NORMAL, 0);
                        FILE_ATTRIBUTE_NORMAL, 0);
+  //if fail api return feInvalidHandle (INVALIDE_HANDLE=feInvalidHandle=-1)
 end;
 end;
 
 
 
 

+ 1 - 0
rtl/wince/sysutils.pp

@@ -147,6 +147,7 @@ begin
   result := CreateFile(fn, dword(AccessMode[Mode and 3]),
   result := CreateFile(fn, dword(AccessMode[Mode and 3]),
                        dword(ShareMode[(Mode and $F0) shr 4]), nil, OPEN_EXISTING,
                        dword(ShareMode[(Mode and $F0) shr 4]), nil, OPEN_EXISTING,
                        FILE_ATTRIBUTE_NORMAL, 0);
                        FILE_ATTRIBUTE_NORMAL, 0);
+  //if fail api return feInvalidHandle (INVALIDE_HANDLE=feInvalidHandle=-1)
   FreeMem(fn);
   FreeMem(fn);
 end;
 end;