diff --git a/library/fsl/fsl_fpc.pas b/library/fsl/fsl_fpc.pas index 75c17ba78..f9f125f60 100644 --- a/library/fsl/fsl_fpc.pas +++ b/library/fsl/fsl_fpc.pas @@ -119,6 +119,7 @@ TSemaphore = class (TEventObject) function DeleteDirectory(const DirectoryName: string; OnlyChildren: boolean): boolean; procedure FileSetReadOnly(const FileName : String; readOnly : boolean); procedure FileSetModified(const FileName : String; dateTime : TDateTime); +function FileCanBeReadOnly : boolean; //function ColorToString(Color: TColor): AnsiString; @@ -461,9 +462,7 @@ procedure FileSetReadOnly(const FileName : String; readOnly : boolean); raise EFslException.Create('chmod failed'); {$ENDIF} {$IFDEF OSX} -begin - raise EFslException.Create('Not supported'); -end; + // nothing {$ENDIF} end; @@ -472,6 +471,16 @@ procedure FileSetModified(const FileName : String; dateTime : TDateTime); FileSetDate(filename, DateTimeToFileDate(dateTIme)); end; +function FileCanBeReadOnly : boolean; +begin + {$IFDEF OSX} + result := false; + {$ELSE} + result := true; + {$ENDIF} + +end; + { TShortStringHelper } function TShortStringHelper.substring(start, stop : integer) : String; @@ -694,7 +703,7 @@ function TZDecompressionStream.Read(var buffer; count: Longint): Longint; begin if FZStream.avail_in = 0 then begin - FZStream.avail_in := FStream.Read(FBuffer, Length(FBuffer)); + FZStream.avail_in := FStream.Read(FBuffer[0], Length(FBuffer)); if FZStream.avail_in = 0 then begin @@ -757,14 +766,14 @@ function TZDecompressionStream.Seek(const Offset: Int64; Origin: TSeekOrigin): I if localOffset > 0 then begin SetLength(buf, BufSize); - for i := 1 to localOffset div BufSize do ReadBuffer(buf, BufSize); - ReadBuffer(buf, localOffset mod BufSize); + for i := 1 to localOffset div BufSize do ReadBuffer(buf[0], BufSize); + ReadBuffer(buf[0], localOffset mod BufSize); end; end else if (Offset = 0) and (Origin = soEnd) then begin SetLength(buf, BufSize); - while Read(buf, BufSize) > 0 do ; + while Read(buf[0], BufSize) > 0 do ; end else raise EIOException.Create('Invalid Operation'); @@ -829,6 +838,7 @@ class function TDirectory.GetFiles(const Path: string): TStringDynArray; ts.add(fsl_utilities.FilePath([Path, SearchRec.Name])); until FindNext(SearchRec) <> 0; end; + FindClose(SearchRec); result := ts.ToStringArray; finally @@ -850,6 +860,7 @@ class function TDirectory.GetFiles(const Path, Mask: string): TStringDynArray; ts.add(fsl_utilities.FilePath([Path, SearchRec.Name])); until FindNext(SearchRec) <> 0; end; + FindClose(SearchRec); result := ts.ToStringArray; finally @@ -871,6 +882,7 @@ class function TDirectory.getDirectories(const Path: string): TStringDynArray; ts.add(fsl_utilities.FilePath([Path, SearchRec.Name])); until FindNext(SearchRec) <> 0; end; + FindClose(SearchRec); result := ts.ToStringArray; finally diff --git a/library/fsl/fsl_stream.pas b/library/fsl/fsl_stream.pas index cb91ead34..c72051c6a 100644 --- a/library/fsl/fsl_stream.pas +++ b/library/fsl/fsl_stream.pas @@ -6030,8 +6030,8 @@ function TTarArchive.FindNext (var DirRec : TTarDirRec) : boolean; // --- EOF reached? Result := FALSE; - FStream.ReadBuffer (Rec, RECORDSIZE); - if Rec [0] = #0 then EXIT; // EOF reached + FStream.ReadBuffer(Rec[0], RECORDSIZE); + if Rec [0] = #0 then EXIT; // EOF reached Result := TRUE; ClearDirRec (DirRec); @@ -6140,7 +6140,7 @@ function TTarArchive.ReadFile : TBytes; if FBytesToGo = 0 then EXIT; RestBytes := Records (FBytesToGo) * RECORDSIZE - FBytesToGo; SetLength (Result, FBytesToGo); - FStream.ReadBuffer(Result, {$IFNDEF FPC}0, {$ENDIF}FBytesToGo); + FStream.ReadBuffer(Result[0], {$IFNDEF FPC}0, {$ENDIF}FBytesToGo); FStream.Seek (RestBytes, soFromCurrent); FBytesToGo := 0; end; diff --git a/library/fsl/fsl_threads.pas b/library/fsl/fsl_threads.pas index a894b8f82..519e3fc51 100644 --- a/library/fsl/fsl_threads.pas +++ b/library/fsl/fsl_threads.pas @@ -835,7 +835,7 @@ procedure TFslExternalProcessThread.execute; FProcess.Execute; repeat SetLength(Buffer, BUF_SIZE); - BytesRead := FProcess.Output.Read(Buffer, BUF_SIZE); + BytesRead := FProcess.Output.Read(Buffer[0], BUF_SIZE); processOutput(TEncoding.UTF8.GetString(Buffer, 0, BytesRead)); until BytesRead = 0; FExitCode := FProcess.ExitCode;