Change AddFile method from procedure to boolean function

git-svn-id: trunk@29269 -
This commit is contained in:
pierre 2014-12-12 13:55:26 +00:00
parent ec24138bfa
commit 43213dc637

View File

@ -187,7 +187,7 @@ TYPE
CONSTRUCTOR Create (TargetStream : TStream); OVERLOAD; CONSTRUCTOR Create (TargetStream : TStream); OVERLOAD;
CONSTRUCTOR Create (TargetFilename : STRING; Mode : INTEGER = fmCreate); OVERLOAD; CONSTRUCTOR Create (TargetFilename : STRING; Mode : INTEGER = fmCreate); OVERLOAD;
DESTRUCTOR Destroy; OVERRIDE; // Writes End-Of-File Tag DESTRUCTOR Destroy; OVERRIDE; // Writes End-Of-File Tag
PROCEDURE AddFile (Filename : STRING; TarFilename : STRING = ''); FUNCTION AddFile (Filename : STRING; TarFilename : STRING = '') : BOOLEAN;
PROCEDURE AddStream (Stream : TStream; TarFilename : STRING; FileDateGmt : TDateTime); PROCEDURE AddStream (Stream : TStream; TarFilename : STRING; FileDateGmt : TDateTime);
PROCEDURE AddString (Contents : STRING; TarFilename : STRING; FileDateGmt : TDateTime); PROCEDURE AddString (Contents : STRING; TarFilename : STRING; FileDateGmt : TDateTime);
PROCEDURE AddDir (Dirname : STRING; DateGmt : TDateTime; MaxDirSize : INT64 = 0); PROCEDURE AddDir (Dirname : STRING; DateGmt : TDateTime; MaxDirSize : INT64 = 0);
@ -787,17 +787,30 @@ BEGIN
END; END;
PROCEDURE TTarWriter.AddFile (Filename : STRING; TarFilename : STRING = ''); FUNCTION TTarWriter.AddFile (Filename : STRING; TarFilename : STRING = '') : BOOLEAN;
VAR VAR
S : TFileStream; S : TFileStream;
Date : TDateTime; Date : TDateTime;
BEGIN BEGIN
AddFile:=false;
Date := FileTimeGMT (Filename); Date := FileTimeGMT (Filename);
IF TarFilename = '' THEN IF TarFilename = '' THEN
TarFilename := ConvertFilename (Filename); TarFilename := ConvertFilename (Filename);
TRY
S := TFileStream.Create (Filename, fmOpenRead OR fmShareDenyWrite); S := TFileStream.Create (Filename, fmOpenRead OR fmShareDenyWrite);
EXCEPT
ON EFOpenError DO
BEGIN
Writeln(stderr,'LibTar error: unable to open file "',Filename,'" for reading.');
S.Free;
exit;
END;
END;
TRY TRY
AddStream (S, TarFilename, Date); AddStream (S, TarFilename, Date);
// No error, AddFile succeeded
AddFile:=true;
FINALLY FINALLY
S.Free S.Free
END; END;