mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-12 08:06:07 +02:00
+ Fixed such that TDosStream functions correctly.
This commit is contained in:
parent
ed8a63512c
commit
761c27abbc
@ -11,17 +11,20 @@ Var errno : Longint;
|
|||||||
|
|
||||||
FUNCTION FileOpen (Var FileName: AsciiZ; Mode: Word): THandle;
|
FUNCTION FileOpen (Var FileName: AsciiZ; Mode: Word): THandle;
|
||||||
|
|
||||||
Var LinuxMode : Word;
|
Var LinuxMode : longint;
|
||||||
|
|
||||||
BEGIN
|
BEGIN
|
||||||
LinuxMode:=0;
|
LinuxMode:=0;
|
||||||
if (Mode and stCreate)=stCreate then LinuxMode:=Open_Creat;
|
if (Mode and stCreate)=stCreate then
|
||||||
if (Mode and stOpenRead)=stOpenRead then LinuxMode:=LinuxMode or Open_RdOnly;
|
LinuxMode:=Open_Creat;
|
||||||
If (Mode and stOpenWrite)=stOpenWrite then LinuxMode:=LinuxMode or Open_WrOnly;
|
Case (Mode and 3) of
|
||||||
if (Mode and stOpen)=stOpen then LinuxMode:=LinuxMode or Open_RdWr;
|
0 : LinuxMode:=LinuxMode or Open_RdOnly;
|
||||||
FileOpen:=SYS_Open (pchar(@FileName[0]),438 {666 octal},LinuxMode);
|
1 : LinuxMode:=LinuxMode or Open_WrOnly;
|
||||||
|
2 : LinuxMode:=LinuxMode or Open_RdWr;
|
||||||
|
end;
|
||||||
|
FileOpen:=SYS_Open (pchar(@FileName[0]),LinuxMode,438 {666 octal});
|
||||||
|
If FileOpen=-1 then FileOpen:=0;
|
||||||
DosStreamError:=Errno;
|
DosStreamError:=Errno;
|
||||||
FileOpen:=Errno;
|
|
||||||
END;
|
END;
|
||||||
|
|
||||||
FUNCTION FileRead (Handle: THandle; Var BufferArea; BufferLength: Sw_Word;
|
FUNCTION FileRead (Handle: THandle; Var BufferArea; BufferLength: Sw_Word;
|
||||||
@ -29,7 +32,7 @@ Var BytesMoved: Sw_Word): Word;
|
|||||||
BEGIN
|
BEGIN
|
||||||
BytesMoved:=Sys_read (Handle,Pchar(@BufferArea),BufferLength);
|
BytesMoved:=Sys_read (Handle,Pchar(@BufferArea),BufferLength);
|
||||||
DosStreamError:=Errno;
|
DosStreamError:=Errno;
|
||||||
FileRead := Errno;
|
FileRead:=Errno;
|
||||||
END;
|
END;
|
||||||
|
|
||||||
FUNCTION FileWrite (Handle: THandle; Var BufferArea; BufferLength: Sw_Word;
|
FUNCTION FileWrite (Handle: THandle; Var BufferArea; BufferLength: Sw_Word;
|
||||||
@ -65,7 +68,7 @@ Var sr : syscallregs;
|
|||||||
BEGIN
|
BEGIN
|
||||||
sr.reg2:=Handle;
|
sr.reg2:=Handle;
|
||||||
sr.reg3:=FileSize;
|
sr.reg3:=FileSize;
|
||||||
Syscall(syscall_nr_Truncate,sr);
|
Syscall(syscall_nr_fTruncate,sr);
|
||||||
If Errno=0 then
|
If Errno=0 then
|
||||||
SetFileSize:=0
|
SetFileSize:=0
|
||||||
else
|
else
|
||||||
|
Loading…
Reference in New Issue
Block a user