diff options
| -rw-r--r-- | UEngines.pas | 4 | ||||
| -rw-r--r-- | UMain.pas | 7 | ||||
| -rw-r--r-- | vfs/UVFSCore.pas | 2 | ||||
| -rw-r--r-- | vfs/uVFSprototypes.pas | 3 |
4 files changed, 14 insertions, 2 deletions
diff --git a/UEngines.pas b/UEngines.pas index 903bec3..9483dfb 100644 --- a/UEngines.pas +++ b/UEngines.pas @@ -61,7 +61,7 @@ type FDisplayName: PChar; // always-valid UTF-8 LnkPointTo: PChar; // ANSI ADestination: PChar; - Size: Int64; + Size, PackedSize: Int64; Mode, UID, GID: Cardinal; IsDir, IsLnk, ForceMove, IsOnRO, IsExecutable: boolean; ModifyTime: time_t; @@ -554,6 +554,7 @@ var Handle : PDIR; FName := strdup(PChar(FPath)); FDisplayName := StrToUTF8(PChar(FPath)); Size := StatBuf_local^.st_size; + PackedSize := -1; Mode := StatBuf_local^.st_mode; IsDir := __S_ISTYPE(StatBuf_local^.st_mode, __S_IFDIR); IsLnk := __S_ISTYPE(StatBuf_local^.st_mode, __S_IFLNK); @@ -653,6 +654,7 @@ begin FName := strdup(PChar(APath)); FDisplayName := StrToUTF8(PChar(APath)); Size := StatBuf^.st_size; + PackedSize := -1; Mode := StatBuf^.st_mode; IsDir := __S_ISTYPE(StatBuf^.st_mode, __S_IFDIR); IsLnk := __S_ISTYPE(StatBuf^.st_mode, __S_IFLNK); @@ -6259,7 +6259,12 @@ begin if (ConfSizeFormat < 5) or (Stat^.Size < 1024) then s := Format(' %s', [LANGHandleRunFromArchive_Bytes]); FRunFromVFS.SizeLabel2.Caption := Format('%s%s<span weight="ultrabold"> </span>', [FormatSize(Stat^.Size, 0), s]); if (ConfSizeFormat < 5) or (Stat^.Size < 1024) then s := Format(' %s', [LANGHandleRunFromArchive_Bytes]); - FRunFromVFS.PackedSizeLabel2.Caption := Format('%s%s<span weight="ultrabold"> </span>', [FormatSize(Stat^.Size, 0), s]); + if Stat^.PackedSize >= 0 then begin + FRunFromVFS.PackedSizeLabel2.Caption := Format('%s%s<span weight="ultrabold"> </span>', [FormatSize(Stat^.PackedSize, 0), s]); + end else begin + FRunFromVFS.PackedSizeLabel2.Visible := False; + FRunFromVFS.PackedSizeLabel.Visible := False; + end; FRunFromVFS.DateLabel2.Caption := Format('%s<span weight="ultrabold"> </span>', [FormatDate(Stat^.ModifyTime, True, True)]); if (Command = '') and (not Stat^.IsExecutable) then begin FRunFromVFS.OpensWithLabel2.Caption := Format('%s<span weight="ultrabold"> </span>', [LANGHandleRunFromArchive_NotAssociated]); diff --git a/vfs/UVFSCore.pas b/vfs/UVFSCore.pas index a514512..270b240 100644 --- a/vfs/UVFSCore.pas +++ b/vfs/UVFSCore.pas @@ -596,6 +596,7 @@ begin UID := P^.iUID; GID := P^.iGID; Size := P^.iSize; + PackedSize := P^.iPackedSize; libc_free(P); end; Result := Item; @@ -658,6 +659,7 @@ var Item: PDataItemSL; UID := P^.iUID; GID := P^.iGID; Size := P^.iSize; + PackedSize := P^.iPackedSize; Level := ALevel + Ord(not AddCurrDirStage); end; if AddCurrDirStage then List.Add(Item) diff --git a/vfs/uVFSprototypes.pas b/vfs/uVFSprototypes.pas index 4ccde33..35d6d8f 100644 --- a/vfs/uVFSprototypes.pas +++ b/vfs/uVFSprototypes.pas @@ -112,6 +112,8 @@ type // FDisplayName - plugins must ensure correct UTF-8 string FDisplayName: PChar; iSize: Int64; + // iPackedSize - set to -1 if plugin doesn't support this feature + iPackedSize: Int64; m_time: DWORD; a_time: DWORD; c_time: DWORD; @@ -124,6 +126,7 @@ type FName: PChar; FDisplayName: PChar; iSize: Int64; + iPackedSize: Int64; m_time: QWORD; a_time: QWORD; c_time: QWORD; |
