mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-06-07 01:38:30 +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;
|
||||
|
||||
|
||||
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
|
||||
{$WARNING FIX ME! To do: FileCreate Access Modes}
|
||||
FileCreate:=FileCreate(FileName);
|
||||
|
@ -430,7 +430,12 @@ asm
|
||||
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
|
||||
FileCreate:=FileCreate(FileName);
|
||||
end;
|
||||
|
@ -69,7 +69,13 @@ begin
|
||||
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
|
||||
result := -1;
|
||||
end;
|
||||
|
@ -130,7 +130,13 @@ begin
|
||||
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
|
||||
FileCreate:=FileCreate(FileName);
|
||||
end;
|
||||
|
@ -93,7 +93,23 @@ begin
|
||||
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;
|
||||
|
||||
|
@ -151,7 +151,13 @@ begin
|
||||
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
|
||||
{$WARNING FIX ME! To do: FileCreate Access Modes}
|
||||
FileCreate:=FileCreate(FileName);
|
||||
|
@ -87,7 +87,13 @@ begin
|
||||
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
|
||||
FileCreate := FileCreate(FileName);
|
||||
end;
|
||||
|
@ -69,7 +69,13 @@ begin
|
||||
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
|
||||
result := -1;
|
||||
end;
|
||||
|
@ -106,7 +106,14 @@ begin
|
||||
FileCreate:=_open(Pchar(FileName),O_RdWr or O_Creat or O_Trunc,0);
|
||||
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
|
||||
FileCreate:=FileCreate (FileName);
|
||||
|
@ -109,7 +109,13 @@ begin
|
||||
FileSetAttr (Filename, 0); // dont know why but open always sets ReadOnly flag
|
||||
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
|
||||
FileCreate:=FileCreate (FileName);
|
||||
end;
|
||||
|
@ -73,7 +73,7 @@ const
|
||||
|
||||
{ TFileStream create mode }
|
||||
const
|
||||
fmCreate = $FFFF;
|
||||
fmCreate = $FF00;
|
||||
fmOpenRead = 0;
|
||||
fmOpenWrite = 1;
|
||||
fmOpenReadWrite = 2;
|
||||
|
@ -476,8 +476,8 @@ constructor TFileStream.Create(const AFileName: string; Mode: Word);
|
||||
|
||||
begin
|
||||
FFileName:=AFileName;
|
||||
If Mode=fmcreate then
|
||||
FHandle:=FileCreate(AFileName)
|
||||
If (Mode and fmCreate) > 0 then
|
||||
FHandle:=FileCreate(AFileName,Mode)
|
||||
else
|
||||
FHAndle:=FileOpen(AFileName,Mode);
|
||||
|
||||
@ -493,8 +493,8 @@ constructor TFileStream.Create(const AFileName: string; Mode: Word; Rights: Card
|
||||
|
||||
begin
|
||||
FFileName:=AFileName;
|
||||
If Mode=fmcreate then
|
||||
FHandle:=FileCreate(AFileName,Rights)
|
||||
If (Mode and fmCreate) > 0 then
|
||||
FHandle:=FileCreate(AFileName,Mode,Rights)
|
||||
else
|
||||
FHAndle:=FileOpen(AFileName,Mode);
|
||||
|
||||
|
@ -73,7 +73,8 @@ Const
|
||||
|
||||
Function FileOpen (Const FileName : string; Mode : Integer) : 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 FileWrite (Handle : THandle; const Buffer; Count : Longint) : Longint;
|
||||
Function FileSeek (Handle : THandle; FOffset, Origin: Longint) : Longint;
|
||||
|
@ -510,11 +510,16 @@ Begin
|
||||
FileCreate:=feInvalidHandle;
|
||||
End;
|
||||
|
||||
function FileCreate (const FileName: string; Mode: integer): THandle;
|
||||
function FileCreate (const FileName: string; Rights: integer): THandle;
|
||||
begin
|
||||
FileCreate := FileCreate(FileName);
|
||||
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;
|
||||
Var
|
||||
|
@ -442,14 +442,21 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
Function FileCreate (Const FileName : String;Mode : Longint) : Longint;
|
||||
Function FileCreate (Const FileName : String;Rights : Longint) : Longint;
|
||||
|
||||
begin
|
||||
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);
|
||||
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;
|
||||
|
||||
|
@ -135,7 +135,12 @@ begin
|
||||
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
|
||||
FileCreate:=FileCreate(FileName);
|
||||
end;
|
||||
|
@ -69,7 +69,12 @@ begin
|
||||
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
|
||||
result := -1;
|
||||
end;
|
||||
|
@ -213,38 +213,41 @@ end;
|
||||
File Functions
|
||||
****************************************************************************}
|
||||
|
||||
Function FileOpen (Const FileName : string; Mode : Integer) : THandle;
|
||||
const
|
||||
AccessMode: array[0..2] of Cardinal = (
|
||||
GENERIC_READ,
|
||||
GENERIC_WRITE,
|
||||
GENERIC_READ or GENERIC_WRITE);
|
||||
ShareMode: array[0..4] of Integer = (
|
||||
ShareModes: array[0..4] of Integer = (
|
||||
0,
|
||||
0,
|
||||
FILE_SHARE_READ,
|
||||
FILE_SHARE_WRITE,
|
||||
FILE_SHARE_READ or FILE_SHARE_WRITE);
|
||||
|
||||
Function FileOpen (Const FileName : string; Mode : Integer) : THandle;
|
||||
begin
|
||||
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);
|
||||
//if fail api return feInvalidHandle (INVALIDE_HANDLE=feInvalidHandle=-1)
|
||||
end;
|
||||
|
||||
|
||||
Function FileCreate (Const FileName : String) : THandle;
|
||||
begin
|
||||
Result := CreateFile(PChar(FileName), GENERIC_READ or GENERIC_WRITE,
|
||||
0, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
|
||||
FileCreate:=FileCreate(FileName, fmShareExclusive);
|
||||
end;
|
||||
|
||||
|
||||
Function FileCreate (Const FileName : String; Mode:longint) : THandle;
|
||||
Function FileCreate (Const FileName : String; Rights:longint) : THandle;
|
||||
begin
|
||||
FileCreate:=FileCreate(FileName);
|
||||
FileCreate:=FileCreate(FileName, Mode, 0);
|
||||
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;
|
||||
Var
|
||||
|
@ -165,7 +165,13 @@ begin
|
||||
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
|
||||
FileCreate:=FileCreate(FileName);
|
||||
end;
|
||||
|
Loading…
Reference in New Issue
Block a user