mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-06-05 22:38:32 +02:00
* Added share mode argument to FileCreate call
git-svn-id: trunk@17548 -
This commit is contained in:
parent
d89aeeadaf
commit
a201f07420
@ -150,7 +150,13 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
function FileCreate(const FileName: string; Mode: integer): LongInt;
|
function FileCreate(const FileName: string; Rights: integer): LongInt;
|
||||||
|
begin
|
||||||
|
{$WARNING FIX ME! To do: FileCreate Access Modes}
|
||||||
|
FileCreate:=FileCreate(FileName);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function FileCreate(const FileName: string; ShareMode: integer; Rights : Integer): LongInt;
|
||||||
begin
|
begin
|
||||||
{$WARNING FIX ME! To do: FileCreate Access Modes}
|
{$WARNING FIX ME! To do: FileCreate Access Modes}
|
||||||
FileCreate:=FileCreate(FileName);
|
FileCreate:=FileCreate(FileName);
|
||||||
|
@ -430,7 +430,12 @@ asm
|
|||||||
end {['eax', 'ebx', 'ecx', 'edx']};
|
end {['eax', 'ebx', 'ecx', 'edx']};
|
||||||
|
|
||||||
|
|
||||||
function FileCreate (const FileName: string; Mode: integer): longint;
|
function FileCreate (const FileName: string; Rights: integer): longint;
|
||||||
|
begin
|
||||||
|
FileCreate:=FileCreate(FileName);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function FileCreate (const FileName: string; ShareMode : integer; Rights: integer): longint;
|
||||||
begin
|
begin
|
||||||
FileCreate:=FileCreate(FileName);
|
FileCreate:=FileCreate(FileName);
|
||||||
end;
|
end;
|
||||||
|
@ -69,7 +69,13 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
function FileCreate(const FileName: string; Mode: integer): LongInt;
|
function FileCreate(const FileName: string; Rights: integer): LongInt;
|
||||||
|
begin
|
||||||
|
result := -1;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function FileCreate(const FileName: string; ShareMode: integer; rights : integer): LongInt;
|
||||||
begin
|
begin
|
||||||
result := -1;
|
result := -1;
|
||||||
end;
|
end;
|
||||||
|
@ -130,7 +130,13 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
Function FileCreate (Const FileName : String; Mode:longint) : Longint;
|
Function FileCreate (Const FileName : String; ShareMode:longint; Rights : longint) : Longint;
|
||||||
|
begin
|
||||||
|
FileCreate:=FileCreate(FileName);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
Function FileCreate (Const FileName : String; Rights:longint) : Longint;
|
||||||
begin
|
begin
|
||||||
FileCreate:=FileCreate(FileName);
|
FileCreate:=FileCreate(FileName);
|
||||||
end;
|
end;
|
||||||
|
@ -93,7 +93,23 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
Function FileCreate (Const FileName : String;Mode : Longint) : Longint;
|
Function FileCreate (Const FileName : String;Rights : Longint) : Longint;
|
||||||
|
|
||||||
|
Var LinuxFlags : longint;
|
||||||
|
|
||||||
|
BEGIN
|
||||||
|
(* TODO fix
|
||||||
|
LinuxFlags:=0;
|
||||||
|
Case (Mode and 3) of
|
||||||
|
0 : LinuxFlags:=LinuxFlags or Open_RdOnly;
|
||||||
|
1 : LinuxFlags:=LinuxFlags or Open_WrOnly;
|
||||||
|
2 : LinuxFlags:=LinuxFlags or Open_RdWr;
|
||||||
|
end;
|
||||||
|
FileCreate:=fdOpen(FileName,LinuxFlags or Open_Creat or Open_Trunc);
|
||||||
|
*)
|
||||||
|
end;
|
||||||
|
|
||||||
|
Function FileCreate (Const FileName : String;ShareMode : Longint; Rights : Longint) : Longint;
|
||||||
|
|
||||||
Var LinuxFlags : longint;
|
Var LinuxFlags : longint;
|
||||||
|
|
||||||
|
@ -151,7 +151,13 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
function FileCreate(const FileName: string; Mode: integer): LongInt;
|
function FileCreate(const FileName: string; Rights: integer): LongInt;
|
||||||
|
begin
|
||||||
|
{$WARNING FIX ME! To do: FileCreate Access Modes}
|
||||||
|
FileCreate:=FileCreate(FileName);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function FileCreate(const FileName: string; ShareMode: integer; Rights : integer): LongInt;
|
||||||
begin
|
begin
|
||||||
{$WARNING FIX ME! To do: FileCreate Access Modes}
|
{$WARNING FIX ME! To do: FileCreate Access Modes}
|
||||||
FileCreate:=FileCreate(FileName);
|
FileCreate:=FileCreate(FileName);
|
||||||
|
@ -87,7 +87,13 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
function FileCreate(const FileName : String; Mode: longint) : THandle;
|
function FileCreate(const FileName : String; Rights: longint) : THandle;
|
||||||
|
begin
|
||||||
|
FileCreate := FileCreate(FileName);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function FileCreate(const FileName : String; ShareMode : longint; Rights: longint) : THandle;
|
||||||
begin
|
begin
|
||||||
FileCreate := FileCreate(FileName);
|
FileCreate := FileCreate(FileName);
|
||||||
end;
|
end;
|
||||||
|
@ -69,7 +69,13 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
function FileCreate(const FileName: string; Mode: integer): LongInt;
|
function FileCreate(const FileName: string; Rights: integer): LongInt;
|
||||||
|
begin
|
||||||
|
result := -1;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function FileCreate(const FileName: string; ShareMode : Integer; Rights: integer): LongInt;
|
||||||
begin
|
begin
|
||||||
result := -1;
|
result := -1;
|
||||||
end;
|
end;
|
||||||
|
@ -106,7 +106,14 @@ begin
|
|||||||
FileCreate:=_open(Pchar(FileName),O_RdWr or O_Creat or O_Trunc,0);
|
FileCreate:=_open(Pchar(FileName),O_RdWr or O_Creat or O_Trunc,0);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Function FileCreate (Const FileName : String; mode:longint) : THandle;
|
Function FileCreate (Const FileName : String; Rights:longint) : THandle;
|
||||||
|
|
||||||
|
begin
|
||||||
|
FileCreate:=FileCreate (FileName);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
Function FileCreate (Const FileName : String; ShareMode: Longint; Rights:longint) : THandle;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
FileCreate:=FileCreate (FileName);
|
FileCreate:=FileCreate (FileName);
|
||||||
|
@ -109,7 +109,13 @@ begin
|
|||||||
FileSetAttr (Filename, 0); // dont know why but open always sets ReadOnly flag
|
FileSetAttr (Filename, 0); // dont know why but open always sets ReadOnly flag
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Function FileCreate (Const FileName : String; mode:longint) : THandle;
|
Function FileCreate (Const FileName : String; rights:longint) : THandle;
|
||||||
|
begin
|
||||||
|
FileCreate:=FileCreate (FileName);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
Function FileCreate (Const FileName : String; ShareMode:longint; rights : longint) : THandle;
|
||||||
begin
|
begin
|
||||||
FileCreate:=FileCreate (FileName);
|
FileCreate:=FileCreate (FileName);
|
||||||
end;
|
end;
|
||||||
|
@ -73,7 +73,7 @@ const
|
|||||||
|
|
||||||
{ TFileStream create mode }
|
{ TFileStream create mode }
|
||||||
const
|
const
|
||||||
fmCreate = $FFFF;
|
fmCreate = $FF00;
|
||||||
fmOpenRead = 0;
|
fmOpenRead = 0;
|
||||||
fmOpenWrite = 1;
|
fmOpenWrite = 1;
|
||||||
fmOpenReadWrite = 2;
|
fmOpenReadWrite = 2;
|
||||||
|
@ -476,8 +476,8 @@ constructor TFileStream.Create(const AFileName: string; Mode: Word);
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
FFileName:=AFileName;
|
FFileName:=AFileName;
|
||||||
If Mode=fmcreate then
|
If (Mode and fmCreate) > 0 then
|
||||||
FHandle:=FileCreate(AFileName)
|
FHandle:=FileCreate(AFileName,Mode)
|
||||||
else
|
else
|
||||||
FHAndle:=FileOpen(AFileName,Mode);
|
FHAndle:=FileOpen(AFileName,Mode);
|
||||||
|
|
||||||
@ -493,8 +493,8 @@ constructor TFileStream.Create(const AFileName: string; Mode: Word; Rights: Card
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
FFileName:=AFileName;
|
FFileName:=AFileName;
|
||||||
If Mode=fmcreate then
|
If (Mode and fmCreate) > 0 then
|
||||||
FHandle:=FileCreate(AFileName,Rights)
|
FHandle:=FileCreate(AFileName,Mode,Rights)
|
||||||
else
|
else
|
||||||
FHAndle:=FileOpen(AFileName,Mode);
|
FHAndle:=FileOpen(AFileName,Mode);
|
||||||
|
|
||||||
|
@ -73,7 +73,8 @@ Const
|
|||||||
|
|
||||||
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; Rights : Integer) : THandle;
|
||||||
|
Function FileCreate (Const FileName : String; ShareMode : Integer; Rights : Integer) : THandle;
|
||||||
Function FileRead (Handle : THandle; out Buffer; Count : longint) : Longint;
|
Function FileRead (Handle : THandle; out Buffer; Count : longint) : Longint;
|
||||||
Function FileWrite (Handle : THandle; const Buffer; Count : Longint) : Longint;
|
Function FileWrite (Handle : THandle; const Buffer; Count : Longint) : Longint;
|
||||||
Function FileSeek (Handle : THandle; FOffset, Origin: Longint) : Longint;
|
Function FileSeek (Handle : THandle; FOffset, Origin: Longint) : Longint;
|
||||||
|
@ -510,11 +510,16 @@ Begin
|
|||||||
FileCreate:=feInvalidHandle;
|
FileCreate:=feInvalidHandle;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
function FileCreate (const FileName: string; Mode: integer): THandle;
|
function FileCreate (const FileName: string; Rights: integer): THandle;
|
||||||
begin
|
begin
|
||||||
FileCreate := FileCreate(FileName);
|
FileCreate := FileCreate(FileName);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function FileCreate (const FileName: string; ShareMode : Integer; Rights: integer): THandle;
|
||||||
|
begin
|
||||||
|
FileCreate := FileCreate(FileName);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
function FileRead (Handle: THandle; Out Buffer; Count: longint): longint;
|
function FileRead (Handle: THandle; Out Buffer; Count: longint): longint;
|
||||||
Var
|
Var
|
||||||
|
@ -442,14 +442,21 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
Function FileCreate (Const FileName : String;Mode : Longint) : Longint;
|
Function FileCreate (Const FileName : String;Rights : Longint) : Longint;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
repeat
|
repeat
|
||||||
FileCreate:=fpOpen(pointer(FileName),O_RdWr or O_Creat or O_Trunc,Mode);
|
FileCreate:=fpOpen(pointer(FileName),O_RdWr or O_Creat or O_Trunc,Rights);
|
||||||
until (FileCreate<>-1) or (fpgeterrno<>ESysEINTR);
|
until (FileCreate<>-1) or (fpgeterrno<>ESysEINTR);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
Function FileCreate (Const FileName : String; ShareMode : Longint; Rights:LongInt ) : Longint;
|
||||||
|
|
||||||
|
begin
|
||||||
|
Result:=FileCreate( FileName, Rights );
|
||||||
|
Result:=DoFileLocking(Result,ShareMode);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
Function FileRead (Handle : Longint; out Buffer; Count : longint) : Longint;
|
Function FileRead (Handle : Longint; out Buffer; Count : longint) : Longint;
|
||||||
|
|
||||||
|
@ -135,7 +135,12 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
Function FileCreate (Const FileName : String; Mode:longint) : Longint;
|
Function FileCreate (Const FileName : String; Rights:longint) : Longint;
|
||||||
|
begin
|
||||||
|
FileCreate:=FileCreate(FileName);
|
||||||
|
end;
|
||||||
|
|
||||||
|
Function FileCreate (Const FileName : String; ShareMode:longint; Rights: Longint) : Longint;
|
||||||
begin
|
begin
|
||||||
FileCreate:=FileCreate(FileName);
|
FileCreate:=FileCreate(FileName);
|
||||||
end;
|
end;
|
||||||
|
@ -69,7 +69,12 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
function FileCreate(const FileName: string; Mode: integer): LongInt;
|
function FileCreate(const FileName: string; Rights: integer): LongInt;
|
||||||
|
begin
|
||||||
|
result := -1;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function FileCreate(const FileName: string; ShareMode: integer; Rights: integer): LongInt;
|
||||||
begin
|
begin
|
||||||
result := -1;
|
result := -1;
|
||||||
end;
|
end;
|
||||||
|
@ -213,38 +213,41 @@ end;
|
|||||||
File Functions
|
File Functions
|
||||||
****************************************************************************}
|
****************************************************************************}
|
||||||
|
|
||||||
Function FileOpen (Const FileName : string; Mode : Integer) : THandle;
|
|
||||||
const
|
const
|
||||||
AccessMode: array[0..2] of Cardinal = (
|
AccessMode: array[0..2] of Cardinal = (
|
||||||
GENERIC_READ,
|
GENERIC_READ,
|
||||||
GENERIC_WRITE,
|
GENERIC_WRITE,
|
||||||
GENERIC_READ or GENERIC_WRITE);
|
GENERIC_READ or GENERIC_WRITE);
|
||||||
ShareMode: array[0..4] of Integer = (
|
ShareModes: array[0..4] of Integer = (
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
FILE_SHARE_READ,
|
FILE_SHARE_READ,
|
||||||
FILE_SHARE_WRITE,
|
FILE_SHARE_WRITE,
|
||||||
FILE_SHARE_READ or FILE_SHARE_WRITE);
|
FILE_SHARE_READ or FILE_SHARE_WRITE);
|
||||||
|
|
||||||
|
Function FileOpen (Const FileName : string; Mode : Integer) : THandle;
|
||||||
begin
|
begin
|
||||||
result := CreateFile(PChar(FileName), dword(AccessMode[Mode and 3]),
|
result := CreateFile(PChar(FileName), dword(AccessMode[Mode and 3]),
|
||||||
dword(ShareMode[(Mode and $F0) shr 4]), nil, OPEN_EXISTING,
|
dword(ShareModes[(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)
|
//if fail api return feInvalidHandle (INVALIDE_HANDLE=feInvalidHandle=-1)
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
Function FileCreate (Const FileName : String) : THandle;
|
Function FileCreate (Const FileName : String) : THandle;
|
||||||
begin
|
begin
|
||||||
Result := CreateFile(PChar(FileName), GENERIC_READ or GENERIC_WRITE,
|
FileCreate:=FileCreate(FileName, fmShareExclusive);
|
||||||
0, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
Function FileCreate (Const FileName : String; Rights:longint) : THandle;
|
||||||
Function FileCreate (Const FileName : String; Mode:longint) : THandle;
|
|
||||||
begin
|
begin
|
||||||
FileCreate:=FileCreate(FileName);
|
FileCreate:=FileCreate(FileName, Mode, 0);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
Function FileCreate (Const FileName : String; ShareMode : Integer; Rights : Integer) : THandle;
|
||||||
|
begin
|
||||||
|
Result := CreateFile(PChar(FileName), GENERIC_READ or GENERIC_WRITE,
|
||||||
|
dword(ShareModes[(ShareMode and $F0) shr 4]), nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
|
||||||
|
end;
|
||||||
|
|
||||||
Function FileRead (Handle : THandle; out Buffer; Count : longint) : Longint;
|
Function FileRead (Handle : THandle; out Buffer; Count : longint) : Longint;
|
||||||
Var
|
Var
|
||||||
|
@ -165,7 +165,13 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
Function FileCreate (Const FileName : String; Mode:longint) : THandle;
|
Function FileCreate (Const FileName : String; Rights:longint) : THandle;
|
||||||
|
begin
|
||||||
|
FileCreate:=FileCreate(FileName);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
Function FileCreate (Const FileName : String; ShareMode:longint; Rights:longint) : THandle;
|
||||||
begin
|
begin
|
||||||
FileCreate:=FileCreate(FileName);
|
FileCreate:=FileCreate(FileName);
|
||||||
end;
|
end;
|
||||||
|
Loading…
Reference in New Issue
Block a user