From: <ob...@us...> - 2012-03-22 16:29:11
|
Revision: 3771 http://jcl.svn.sourceforge.net/jcl/?rev=3771&view=rev Author: obones Date: 2012-03-22 16:29:05 +0000 (Thu, 22 Mar 2012) Log Message: ----------- Added RequireBackupRestorePrivileges parameter to the SetDir time functions because it may not be necessary to have backup and restore privileges to change times on a directory. These rights are only required when you want to change times on a folder that you don't own. For compatibility reasons, the default behavior is unchanged. Modified Paths: -------------- trunk/jcl/source/common/JclFileUtils.pas Modified: trunk/jcl/source/common/JclFileUtils.pas =================================================================== --- trunk/jcl/source/common/JclFileUtils.pas 2012-03-11 17:27:44 UTC (rev 3770) +++ trunk/jcl/source/common/JclFileUtils.pas 2012-03-22 16:29:05 UTC (rev 3771) @@ -278,9 +278,9 @@ {$IFDEF MSWINDOWS} function LockVolume(const Volume: string; var Handle: THandle): Boolean; function OpenVolume(const Drive: Char): THandle; -function SetDirLastWrite(const DirName: string; const DateTime: TDateTime): Boolean; -function SetDirLastAccess(const DirName: string; const DateTime: TDateTime): Boolean; -function SetDirCreation(const DirName: string; const DateTime: TDateTime): Boolean; +function SetDirLastWrite(const DirName: string; const DateTime: TDateTime; RequireBackupRestorePrivileges: Boolean = True): Boolean; +function SetDirLastAccess(const DirName: string; const DateTime: TDateTime; RequireBackupRestorePrivileges: Boolean = True): Boolean; +function SetDirCreation(const DirName: string; const DateTime: TDateTime; RequireBackupRestorePrivileges: Boolean = True): Boolean; {$ENDIF MSWINDOWS} function SetFileLastWrite(const FileName: string; const DateTime: TDateTime): Boolean; function SetFileLastAccess(const FileName: string; const DateTime: TDateTime): Boolean; @@ -4443,14 +4443,14 @@ end; function SetDirTimesHelper(const DirName: string; const DateTime: TDateTime; - Times: TFileTimes): Boolean; + Times: TFileTimes; RequireBackupRestorePrivileges: Boolean): Boolean; var Handle: THandle; FileTime: TFileTime; SystemTime: TSystemTime; begin Result := False; - if IsDirectory(DirName) and BackupPrivilegesEnabled then + if IsDirectory(DirName) and (not RequireBackupRestorePrivileges or BackupPrivilegesEnabled) then begin Handle := CreateFile(PChar(DirName), GENERIC_WRITE, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0); @@ -4474,19 +4474,19 @@ end; end; -function SetDirLastWrite(const DirName: string; const DateTime: TDateTime): Boolean; +function SetDirLastWrite(const DirName: string; const DateTime: TDateTime; RequireBackupRestorePrivileges: Boolean = True): Boolean; begin - Result := SetDirTimesHelper(DirName, DateTime, ftLastWrite); + Result := SetDirTimesHelper(DirName, DateTime, ftLastWrite, RequireBackupRestorePrivileges); end; -function SetDirLastAccess(const DirName: string; const DateTime: TDateTime): Boolean; +function SetDirLastAccess(const DirName: string; const DateTime: TDateTime; RequireBackupRestorePrivileges: Boolean = True): Boolean; begin - Result := SetDirTimesHelper(DirName, DateTime, ftLastAccess); + Result := SetDirTimesHelper(DirName, DateTime, ftLastAccess, RequireBackupRestorePrivileges); end; -function SetDirCreation(const DirName: string; const DateTime: TDateTime): Boolean; +function SetDirCreation(const DirName: string; const DateTime: TDateTime; RequireBackupRestorePrivileges: Boolean = True): Boolean; begin - Result := SetDirTimesHelper(DirName, DateTime, ftCreation); + Result := SetDirTimesHelper(DirName, DateTime, ftCreation, RequireBackupRestorePrivileges); end; procedure FillByteArray(var Bytes: array of Byte; Count: Cardinal; B: Byte); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |