mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-10-21 03:41:27 +02:00
+ support for 64-bit FS calls
git-svn-id: trunk@6724 -
This commit is contained in:
parent
1740525027
commit
b9c017eb60
@ -102,13 +102,50 @@ type
|
||||
FileAlloc:cardinal; {Amount of space the file really
|
||||
occupies on disk.}
|
||||
AttrFile:cardinal; {Attributes of file.}
|
||||
cbList:longint; {Size of the file's extended attributes.}
|
||||
cbList:cardinal; {Size of the file's extended attributes.}
|
||||
Name:shortstring; {Also possible to use as ASCIIZ.
|
||||
The byte following the last string
|
||||
character is always zero.}
|
||||
end;
|
||||
PFileFindBuf4=^TFileFindBuf4;
|
||||
|
||||
TFileFindBuf3L=object(TFileStatus)
|
||||
NextEntryOffset: cardinal; {Offset of next entry}
|
||||
DateCreation, {Date of file creation.}
|
||||
TimeCreation, {Time of file creation.}
|
||||
DateLastAccess, {Date of last access to file.}
|
||||
TimeLastAccess, {Time of last access to file.}
|
||||
DateLastWrite, {Date of last modification of file.}
|
||||
TimeLastWrite:word; {Time of last modification of file.}
|
||||
FileSize, {Size of file.}
|
||||
FileAlloc:int64; {Amount of space the file really
|
||||
occupies on disk.}
|
||||
AttrFile:cardinal; {Attributes of file.}
|
||||
Name:shortstring; {Also possible to use as ASCIIZ.
|
||||
The byte following the last string
|
||||
character is always zero.}
|
||||
end;
|
||||
PFileFindBuf3L=^TFileFindBuf3L;
|
||||
|
||||
TFileFindBuf4L=object(TFileStatus)
|
||||
NextEntryOffset: cardinal; {Offset of next entry}
|
||||
DateCreation, {Date of file creation.}
|
||||
TimeCreation, {Time of file creation.}
|
||||
DateLastAccess, {Date of last access to file.}
|
||||
TimeLastAccess, {Time of last access to file.}
|
||||
DateLastWrite, {Date of last modification of file.}
|
||||
TimeLastWrite:word; {Time of last modification of file.}
|
||||
FileSize, {Size of file.}
|
||||
FileAlloc:int64; {Amount of space the file really
|
||||
occupies on disk.}
|
||||
AttrFile:cardinal; {Attributes of file.}
|
||||
cbList:cardinal; {Size of the file's extended attributes.}
|
||||
Name:shortstring; {Also possible to use as ASCIIZ.
|
||||
The byte following the last string
|
||||
character is always zero.}
|
||||
end;
|
||||
PFileFindBuf4L=^TFileFindBuf4L;
|
||||
|
||||
TFSInfo = record
|
||||
case word of
|
||||
1:
|
||||
@ -373,11 +410,6 @@ function DosSetPathInfo(FileName:PChar;InfoLevel:cardinal;
|
||||
Options:cardinal):cardinal; cdecl;
|
||||
external 'DOSCALLS' index 219;
|
||||
|
||||
function DosOpen(FileName:PChar;var Handle: THandle; var Action: cardinal;
|
||||
InitSize,Attrib,OpenFlags,FileMode:cardinal;
|
||||
EA:Pointer):cardinal; cdecl;
|
||||
external 'DOSCALLS' index 273;
|
||||
|
||||
function DosClose(Handle: THandle): cardinal; cdecl;
|
||||
external 'DOSCALLS' index 257;
|
||||
|
||||
@ -389,13 +421,6 @@ function DosWrite(Handle: THandle; Buffer: pointer; Count: cardinal;
|
||||
var ActCount: cardinal): cardinal; cdecl;
|
||||
external 'DOSCALLS' index 282;
|
||||
|
||||
function DosSetFilePtr(Handle: THandle; Pos: longint; Method: cardinal;
|
||||
var PosActual: cardinal): cardinal; cdecl;
|
||||
external 'DOSCALLS' index 256;
|
||||
|
||||
function DosSetFileSize (Handle: THandle; Size: cardinal): cardinal; cdecl;
|
||||
external 'DOSCALLS' index 272;
|
||||
|
||||
procedure DosSleep (MSec: cardinal); cdecl; external 'DOSCALLS' index 229;
|
||||
|
||||
function DosCreateQueue (var Handle: THandle; Priority:longint;
|
||||
@ -455,14 +480,14 @@ const
|
||||
FindResvdMask = $00003737; {Allowed bits in attribute
|
||||
specification for DosFindFirst call.}
|
||||
|
||||
function FileOpen (const FileName: string; Mode: integer): longint;
|
||||
function FileOpen (const FileName: string; Mode: integer): THandle;
|
||||
Var
|
||||
Handle: THandle;
|
||||
Rc, Action: cardinal;
|
||||
begin
|
||||
(* DenyNone if sharing not specified. *)
|
||||
if Mode and 112 = 0 then Mode:=Mode or 64;
|
||||
Rc:=DosOpen(PChar (FileName), Handle, Action, 0, 0, 1, Mode, nil);
|
||||
Rc:=Sys_DosOpenL(PChar (FileName), Handle, Action, 0, 0, 1, Mode, nil);
|
||||
If Rc=0 then
|
||||
FileOpen:=Handle
|
||||
else
|
||||
@ -470,27 +495,27 @@ begin
|
||||
//should return feInvalidHandle(=-1) if fail, other negative returned value are no more errors
|
||||
end;
|
||||
|
||||
function FileCreate (const FileName: string): longint;
|
||||
function FileCreate (const FileName: string): THandle;
|
||||
Const
|
||||
Mode = ofReadWrite or faCreate or doDenyRW; (* Sharing to DenyAll *)
|
||||
Var
|
||||
Handle: THandle;
|
||||
RC, Action: cardinal;
|
||||
Begin
|
||||
RC:=DosOpen(PChar (FileName), Handle, Action, 0, 0, $12, Mode, Nil);
|
||||
RC:=Sys_DosOpenL(PChar (FileName), Handle, Action, 0, 0, $12, Mode, Nil);
|
||||
If RC=0 then
|
||||
FileCreate:=Handle
|
||||
else
|
||||
FileCreate:=-RC;
|
||||
FileCreate:=feInvalidHandle;
|
||||
End;
|
||||
|
||||
function FileCreate (const FileName: string; Mode: integer): longint;
|
||||
function FileCreate (const FileName: string; Mode: integer): THandle;
|
||||
begin
|
||||
FileCreate := FileCreate(FileName);
|
||||
end;
|
||||
|
||||
|
||||
function FileRead (Handle: longint; var Buffer; Count: longint): longint;
|
||||
function FileRead (Handle: THandle; var Buffer; Count: longint): longint;
|
||||
Var
|
||||
T: cardinal;
|
||||
begin
|
||||
@ -498,7 +523,7 @@ begin
|
||||
FileRead := longint (T);
|
||||
end;
|
||||
|
||||
function FileWrite (Handle: longint; const Buffer; Count: longint): longint;
|
||||
function FileWrite (Handle: THandle; const Buffer; Count: longint): longint;
|
||||
Var
|
||||
T: cardinal;
|
||||
begin
|
||||
@ -506,30 +531,35 @@ begin
|
||||
FileWrite := longint (T);
|
||||
end;
|
||||
|
||||
function FileSeek (Handle, FOffset, Origin: longint): longint;
|
||||
function FileSeek (Handle: THandle; FOffset, Origin: longint): longint;
|
||||
var
|
||||
npos: cardinal;
|
||||
NPos: int64;
|
||||
begin
|
||||
if DosSetFilePtr (Handle, FOffset, Origin, npos) = 0 Then
|
||||
FileSeek:= longint (npos)
|
||||
if (Sys_DosSetFilePtrL (Handle, FOffset, Origin, NPos) = 0)
|
||||
and (NPos < high (longint)) then
|
||||
FileSeek:= longint (NPos)
|
||||
else
|
||||
FileSeek:=-1;
|
||||
end;
|
||||
|
||||
function FileSeek (Handle: longint; FOffset: Int64; Origin: Longint): Int64;
|
||||
function FileSeek (Handle: THandle; FOffset: Int64; Origin: Longint): Int64;
|
||||
var
|
||||
NPos: int64;
|
||||
begin
|
||||
{$warning need to add 64bit call }
|
||||
Result:=FileSeek(Handle,Longint(Foffset),Longint(Origin));
|
||||
if Sys_DosSetFilePtrL (Handle, FOffset, Origin, NPos) = 0 then
|
||||
FileSeek:= NPos
|
||||
else
|
||||
FileSeek:=-1;
|
||||
end;
|
||||
|
||||
procedure FileClose (Handle: longint);
|
||||
procedure FileClose (Handle: THandle);
|
||||
begin
|
||||
DosClose(Handle);
|
||||
end;
|
||||
|
||||
function FileTruncate (Handle, Size: longint): boolean;
|
||||
function FileTruncate (Handle: THandle; Size: longint): boolean;
|
||||
begin
|
||||
FileTruncate:=DosSetFileSize(Handle, Size)=0;
|
||||
FileTruncate:=Sys_DosSetFileSizeL(Handle, Size)=0;
|
||||
FileSeek(Handle, 0, 2);
|
||||
end;
|
||||
|
||||
@ -626,7 +656,7 @@ begin
|
||||
F.FindHandle := 0;
|
||||
end;
|
||||
|
||||
function FileGetDate (Handle: longint): longint;
|
||||
function FileGetDate (Handle: THandle): longint;
|
||||
var
|
||||
FStat: TFileStatus3;
|
||||
Time: Longint;
|
||||
@ -642,7 +672,7 @@ begin
|
||||
FileGetDate:=Time;
|
||||
end;
|
||||
|
||||
function FileSetDate (Handle, Age: longint): longint;
|
||||
function FileSetDate (Handle: THandle; Age: longint): longint;
|
||||
var
|
||||
FStat: PFileStatus3;
|
||||
RC: cardinal;
|
||||
|
Loading…
Reference in New Issue
Block a user