summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormarco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2>2017-09-04 08:07:55 +0000
committermarco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2>2017-09-04 08:07:55 +0000
commit4f0e2ea26fb83383d6a795db64066e9bb6a3d4f7 (patch)
tree825362eef1440c9d110f333641cb3fe0abcb702d
parentb64cd2500b450db70ad7c7f62705d4187bfd19a8 (diff)
downloadfpc-4f0e2ea26fb83383d6a795db64066e9bb6a3d4f7.tar.gz
--- Merging r37135 into '.':
C utils/fpcm/revision.inc C rtl/objpas/sysutils/filutil.inc U rtl/objpas/sysutils/filutilh.inc U rtl/win/sysutils.pp U rtl/unix/sysutils.pp --- Recording mergeinfo for merge of r37135 into '.': U . Summary of conflicts: Text conflicts: 2 # revisions: 37135 git-svn-id: https://svn.freepascal.org/svn/fpc/branches/fixes_3_0@37138 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r--rtl/objpas/sysutils/filutil.inc6
-rw-r--r--rtl/objpas/sysutils/filutilh.inc1
-rw-r--r--rtl/unix/sysutils.pp7
-rw-r--r--rtl/win/sysutils.pp8
4 files changed, 22 insertions, 0 deletions
diff --git a/rtl/objpas/sysutils/filutil.inc b/rtl/objpas/sysutils/filutil.inc
index fe3c5522c8..13e132bdf0 100644
--- a/rtl/objpas/sysutils/filutil.inc
+++ b/rtl/objpas/sysutils/filutil.inc
@@ -542,3 +542,9 @@ begin
InternalFindClose(f.FindHandle{$ifdef USEFINDDATA},f.FindData{$endif});
end;
+{$ifndef SYSUTILS_HAS_FILEFLUSH_IMPL}
+function FileFlush(Handle: THandle): Boolean;
+begin
+ Result:= False;
+end;
+{$endif}
diff --git a/rtl/objpas/sysutils/filutilh.inc b/rtl/objpas/sysutils/filutilh.inc
index 9910371510..87e63a0484 100644
--- a/rtl/objpas/sysutils/filutilh.inc
+++ b/rtl/objpas/sysutils/filutilh.inc
@@ -168,6 +168,7 @@ 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;
Function FileSeek (Handle : THandle; FOffset: Int64; Origin: Longint) : Int64;
+function FileFlush(Handle: THandle): Boolean;
Procedure FileClose (Handle : THandle);
Function FileTruncate (Handle : THandle;Size: Int64) : boolean;
Function FindNext (Var Rslt : TRawByteSearchRec) : Longint;
diff --git a/rtl/unix/sysutils.pp b/rtl/unix/sysutils.pp
index 0250daab92..1f2843454f 100644
--- a/rtl/unix/sysutils.pp
+++ b/rtl/unix/sysutils.pp
@@ -38,6 +38,9 @@ interface
{$DEFINE HAS_LOCALTIMEZONEOFFSET}
{$DEFINE HAS_GETTICKCOUNT64}
+// this target has an fileflush implementation, don't include dummy
+{$DEFINE SYSUTILS_HAS_FILEFLUSH_IMPL}
+
{ used OS file system APIs use ansistring }
{$define SYSUTILS_HAS_ANSISTR_FILEUTIL_IMPL}
{ OS has an ansistring/single byte environment variable API }
@@ -458,6 +461,10 @@ begin
FileOpen:=DoFileLocking(FileOpen, Mode);
end;
+function FileFlush(Handle: THandle): Boolean;
+begin
+ Result:= fpfsync(handle)=0;
+end;
Function FileCreate (Const FileName : RawByteString) : Longint;
diff --git a/rtl/win/sysutils.pp b/rtl/win/sysutils.pp
index 119285b6f3..4c3987dec9 100644
--- a/rtl/win/sysutils.pp
+++ b/rtl/win/sysutils.pp
@@ -37,6 +37,9 @@ uses
{$DEFINE HAS_GETTICKCOUNT64}
{$DEFINE OS_FILESETDATEBYNAME}
+// this target has an fileflush implementation, don't include dummy
+{$DEFINE SYSUTILS_HAS_FILEFLUSH_IMPL}
+
{ used OS file system APIs use unicodestring }
{$define SYSUTILS_HAS_UNICODESTR_FILEUTIL_IMPL}
{ OS has an ansistring/single byte environment variable API }
@@ -283,6 +286,11 @@ const
FILE_SHARE_READ or FILE_SHARE_WRITE);
+function FileFlush(Handle: THandle): Boolean;
+begin
+ Result:= FlushFileBuffers(Handle);
+end;
+
Function FileOpen (Const FileName : unicodestring; Mode : Integer) : THandle;
begin
result := CreateFileW(PWideChar(FileName), dword(AccessMode[Mode and 3]),