mirror of
https://github.com/doublecmd/doublecmd.git
synced 2026-06-21 09:58:13 +00:00
Compare commits
272 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0b8ba38384 | ||
|
|
c1785922df | ||
|
|
ebf4142948 | ||
|
|
2f75d651ed | ||
|
|
7ebc7cbe36 | ||
|
|
fd247eff2a | ||
|
|
2f4f8428e1 | ||
|
|
f462b65ba3 | ||
|
|
f468e20db5 | ||
|
|
eae57c455c | ||
|
|
b74ed59ed6 | ||
|
|
ecca68beed | ||
|
|
7490fb959d | ||
|
|
b29753ce8c | ||
|
|
5b653c1332 | ||
|
|
cb7439743c | ||
|
|
99d8dfed0c | ||
|
|
cd1d9e8347 | ||
|
|
84a862d722 | ||
|
|
e32f2a912f | ||
|
|
df1b6b27f2 | ||
|
|
75009e20ab | ||
|
|
441ce780e6 | ||
|
|
1538255b22 | ||
|
|
f943538641 | ||
|
|
94cc42cabe | ||
|
|
df335ced59 | ||
|
|
adce914beb | ||
|
|
9e2e2ee3d4 | ||
|
|
217a1f1047 | ||
|
|
73c435acc9 | ||
|
|
2e2456d78b | ||
|
|
b0ca10d89b | ||
|
|
d00f8b7b7c | ||
|
|
5bac92d740 | ||
|
|
28ea809388 | ||
|
|
85a086424b | ||
|
|
2232d58e91 | ||
|
|
b81bb31aad | ||
|
|
9b4bfe551e | ||
|
|
3d4cdea77d | ||
|
|
760704ef61 | ||
|
|
e60ecc4715 | ||
|
|
a44742c37a | ||
|
|
64fd0712ef | ||
|
|
120578c7e0 | ||
|
|
989a3ff520 | ||
|
|
b78af243e3 | ||
|
|
65bb0d8432 | ||
|
|
0c40b156af | ||
|
|
a844456e49 | ||
|
|
f4b618334b | ||
|
|
d0532ef243 | ||
|
|
5caf988b12 | ||
|
|
325763648c | ||
|
|
43d029a5da | ||
|
|
58c0d8487d | ||
|
|
249133688a | ||
|
|
4a8a5a6f5c | ||
|
|
c35c9a3183 | ||
|
|
013fc32ae1 | ||
|
|
0a15654e73 | ||
|
|
075bb220bc | ||
|
|
5220e14f81 | ||
|
|
6681768462 | ||
|
|
508adfcefb | ||
|
|
9233057f4f | ||
|
|
1266be234c | ||
|
|
f7674f4e58 | ||
|
|
22c256c62c | ||
|
|
af6c4ed14d | ||
|
|
288c803f39 | ||
|
|
227d8c22b7 | ||
|
|
b64b716bad | ||
|
|
01e634045a | ||
|
|
fb0b9d3c4d | ||
|
|
1ca8eac42d | ||
|
|
efa95e1b58 | ||
|
|
220bd2ec55 | ||
|
|
d272e36a2d | ||
|
|
752459d65a | ||
|
|
ee1f44b3ce | ||
|
|
a10df2f68b | ||
|
|
9aec6075db | ||
|
|
8e83d8ea8b | ||
|
|
7c33c64c07 | ||
|
|
b16c3ce409 | ||
|
|
bc5a9fda5e | ||
|
|
8e8460b5cb | ||
|
|
cab264cfad | ||
|
|
08251735e5 | ||
|
|
086b468cfa | ||
|
|
2e16e1c166 | ||
|
|
01267bc754 | ||
|
|
710e2e0d59 | ||
|
|
0425317579 | ||
|
|
354226175f | ||
|
|
6089526461 | ||
|
|
3ebf1727df | ||
|
|
78120eb2f3 | ||
|
|
0eb417d153 | ||
|
|
fdb07b3b5b | ||
|
|
ee4893a22c | ||
|
|
01daa52beb | ||
|
|
3d80a6ad9a | ||
|
|
7a4aa3cd71 | ||
|
|
2254d53e43 | ||
|
|
fcf3635fcb | ||
|
|
a92542047d | ||
|
|
9f3bc40097 | ||
|
|
21ffa7b2c0 | ||
|
|
48f2d4cf09 | ||
|
|
02913857ab | ||
|
|
1d60637432 | ||
|
|
0a70db43e5 | ||
|
|
7fb0454687 | ||
|
|
113d6ef518 | ||
|
|
e537770a28 | ||
|
|
30d7b8a80c | ||
|
|
b7c83fb25c | ||
|
|
5deb4e99e3 | ||
|
|
2f97288d7c | ||
|
|
2c15917a14 | ||
|
|
7b85aa6445 | ||
|
|
419553ab31 | ||
|
|
b645fe668b | ||
|
|
d4e956b46e | ||
|
|
861c5b61c2 | ||
|
|
3fa5525d1a | ||
|
|
b49e5f44eb | ||
|
|
0d464d30e2 | ||
|
|
4e03c743f1 | ||
|
|
d93b70f8ed | ||
|
|
efb78948f4 | ||
|
|
d241666742 | ||
|
|
65c94ff8ba | ||
|
|
d453644a48 | ||
|
|
e6e15e7e84 | ||
|
|
aedf74a507 | ||
|
|
8824b665ad | ||
|
|
c1982daff0 | ||
|
|
8c23edb71f | ||
|
|
ae0e12fac0 | ||
|
|
38e32dae79 | ||
|
|
6093e1aa57 | ||
|
|
012607073e | ||
|
|
b8795bb97d | ||
|
|
2845d264d2 | ||
|
|
798ebf6ea4 | ||
|
|
0e543bd728 | ||
|
|
1c3fc8dabd | ||
|
|
976d0bb0b7 | ||
|
|
b1d0f2f15e | ||
|
|
7da4137a73 | ||
|
|
22b53326a6 | ||
|
|
1afb3ad023 | ||
|
|
3a2619384c | ||
|
|
0d65407394 | ||
|
|
36aa1be761 | ||
|
|
f77a2eac54 | ||
|
|
63895bcc3b | ||
|
|
9624ce1218 | ||
|
|
97041103d3 | ||
|
|
6232e752c1 | ||
|
|
e49684af6b | ||
|
|
3cf34c9a9f | ||
|
|
200a718538 | ||
|
|
5f4fa564a7 | ||
|
|
c02347051f | ||
|
|
c9767b6e68 | ||
|
|
c522743f98 | ||
|
|
5c22ec3b74 | ||
|
|
3100aa02c9 | ||
|
|
9885358914 | ||
|
|
b12ae242ab | ||
|
|
f6e09040e3 | ||
|
|
c842cc7d83 | ||
|
|
1597fb4eca | ||
|
|
1acbe04b14 | ||
|
|
3b56004a06 | ||
|
|
a7d176ca38 | ||
|
|
ada9ada758 | ||
|
|
a45d5f0b7b | ||
|
|
367d5d4d83 | ||
|
|
410fbfd484 | ||
|
|
5b951aa8d5 | ||
|
|
763185f6f0 | ||
|
|
1f27c6a884 | ||
|
|
a1d58d4ddc | ||
|
|
c6e12ac43e | ||
|
|
d558f929a6 | ||
|
|
1b677500b4 | ||
|
|
86644c3990 | ||
|
|
fe41de0fbd | ||
|
|
4221336461 | ||
|
|
4153c217ed | ||
|
|
78a126fcb3 | ||
|
|
afe532a963 | ||
|
|
55758f0ad9 | ||
|
|
24645a4924 | ||
|
|
9f6ac077f6 | ||
|
|
a778da9010 | ||
|
|
378c2275de | ||
|
|
b0e43b7ade | ||
|
|
b3740938db | ||
|
|
25f731263a | ||
|
|
a69e315e07 | ||
|
|
e9a4a29c02 | ||
|
|
0f7624b96f | ||
|
|
7dd1451a6f | ||
|
|
3ce407b582 | ||
|
|
4a0a7031d4 | ||
|
|
624fb20515 | ||
|
|
b1a12d5bd3 | ||
|
|
26406eaf5f | ||
|
|
be71e4a4b5 | ||
|
|
3c0087eb6b | ||
|
|
88f53e941c | ||
|
|
e59225dbb0 | ||
|
|
47a1ca2066 | ||
|
|
e1f94cbb4d | ||
|
|
a8f322bb5b | ||
|
|
875ec687b3 | ||
|
|
582c349c83 | ||
|
|
7a8950c593 | ||
|
|
824de51e1a | ||
|
|
12f47430d7 | ||
|
|
82f9a739a2 | ||
|
|
a79f945444 | ||
|
|
cc6481296b | ||
|
|
2f6c2c5f38 | ||
|
|
53a3088434 | ||
|
|
a0fd299da8 | ||
|
|
60e9f5cf67 | ||
|
|
0e3e514db9 | ||
|
|
a40b642242 | ||
|
|
a6181298b5 | ||
|
|
10850f10f6 | ||
|
|
0aba9be501 | ||
|
|
7615ae031b | ||
|
|
9e53886212 | ||
|
|
c68af22f12 | ||
|
|
00b302707d | ||
|
|
61ba8c96e2 | ||
|
|
93306f5157 | ||
|
|
96b19fbd81 | ||
|
|
650576b64d | ||
|
|
2d3d31c6fc | ||
|
|
60e14a610d | ||
|
|
d190bc3b63 | ||
|
|
bc29e0e0a6 | ||
|
|
ce98266df2 | ||
|
|
80b80482f1 | ||
|
|
2a7b6c7b76 | ||
|
|
8d1ad60597 | ||
|
|
018d556bd9 | ||
|
|
6e51697be9 | ||
|
|
450c6b4102 | ||
|
|
e69e797f58 | ||
|
|
ee4cffd98f | ||
|
|
348e8a2c93 | ||
|
|
547c314dad | ||
|
|
f07d132ac9 | ||
|
|
c0ce7ff06e | ||
|
|
b7f285366d | ||
|
|
a116ac810c | ||
|
|
3adbbc2f5d | ||
|
|
59bbffaf24 | ||
|
|
beba631a94 | ||
|
|
48a7500188 | ||
|
|
883fb71d52 | ||
|
|
b5f68e8f0a |
261 changed files with 6151 additions and 3590 deletions
13
.github/workflows/winget.yml
vendored
Normal file
13
.github/workflows/winget.yml
vendored
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
name: Publish to WinGet
|
||||
on:
|
||||
release:
|
||||
types: [released]
|
||||
jobs:
|
||||
publish:
|
||||
runs-on: windows-latest # action can only be run on windows
|
||||
steps:
|
||||
- uses: vedantmgoyal2009/winget-releaser@v2
|
||||
with:
|
||||
identifier: alexx2000.DoubleCommander
|
||||
installers-regex: '.(exe|msi)$'
|
||||
token: ${{ secrets.WINGET_TOKEN }}
|
||||
|
|
@ -38,7 +38,6 @@ if "%1"=="" ( call :release
|
|||
echo Available modes: components, plugins, doublecmd, release, debug
|
||||
)))))))
|
||||
|
||||
pause
|
||||
GOTO:EOF
|
||||
|
||||
:components
|
||||
|
|
|
|||
2
clean.sh
2
clean.sh
|
|
@ -21,7 +21,7 @@ find . -iname '*.o' -delete
|
|||
find plugins -iname '*.w?x' -delete
|
||||
find plugins -iname '*.dsx' -delete
|
||||
find plugins -iname '*.or' -delete
|
||||
find plugins -iname '*.res' -not -path "*/src/*" -delete
|
||||
find plugins -iname '*.res' -not -path "*/sevenzip/src/*" -delete
|
||||
find plugins -iname '*.a' -delete
|
||||
rm -f src/doublecmd.res doublecmd
|
||||
rm -f tools/extractdwrflnfo
|
||||
|
|
|
|||
|
|
@ -36,6 +36,12 @@ type
|
|||
TKASButton = class(TPanel)
|
||||
private
|
||||
FState: TButtonState;
|
||||
FShowCaption: Boolean;
|
||||
FButtonGlyph: TButtonGlyph;
|
||||
function GetGlyph: TBitmap;
|
||||
function IsGlyphStored: Boolean;
|
||||
procedure SetGlyph(AValue: TBitmap);
|
||||
procedure SetShowCaption(AValue: Boolean);
|
||||
function GetDrawDetails: TThemedElementDetails;
|
||||
protected
|
||||
procedure Paint; override;
|
||||
|
|
@ -47,8 +53,17 @@ type
|
|||
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
|
||||
procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
|
||||
procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
|
||||
protected
|
||||
procedure GlyphChanged(Sender: TObject);
|
||||
procedure ActionChange(Sender: TObject; CheckDefaults: Boolean); override;
|
||||
procedure CalculatePreferredSize(var PreferredWidth, PreferredHeight: Integer; WithThemeSpace: Boolean); override;
|
||||
public
|
||||
constructor Create(TheOwner: TComponent); override;
|
||||
destructor Destroy; override;
|
||||
published
|
||||
property Action;
|
||||
property Glyph: TBitmap read GetGlyph write SetGlyph stored IsGlyphStored;
|
||||
property ShowCaption: Boolean read FShowCaption write SetShowCaption default True;
|
||||
end;
|
||||
|
||||
procedure Register;
|
||||
|
|
@ -56,7 +71,7 @@ procedure Register;
|
|||
implementation
|
||||
|
||||
uses
|
||||
LCLType, LCLProc, LCLIntf;
|
||||
LCLType, LCLProc, LCLIntf, ActnList;
|
||||
|
||||
procedure Register;
|
||||
begin
|
||||
|
|
@ -97,8 +112,44 @@ begin
|
|||
Result := ThemeServices.GetElementDetails(Detail)
|
||||
end;
|
||||
|
||||
procedure TKASButton.SetShowCaption(AValue: Boolean);
|
||||
begin
|
||||
if FShowCaption = AValue then Exit;
|
||||
FShowCaption:= AValue;
|
||||
Invalidate;
|
||||
end;
|
||||
|
||||
function TKASButton.GetGlyph: TBitmap;
|
||||
begin
|
||||
Result:= FButtonGlyph.Glyph;
|
||||
end;
|
||||
|
||||
function TKASButton.IsGlyphStored: Boolean;
|
||||
var
|
||||
Act: TCustomAction;
|
||||
begin
|
||||
if Action <> nil then
|
||||
begin
|
||||
Result:= True;
|
||||
Act:= TCustomAction(Action);
|
||||
if (Act.ActionList <> nil) and (Act.ActionList.Images <> nil) and
|
||||
(Act.ImageIndex >= 0) and (Act.ImageIndex < Act.ActionList.Images.Count) then
|
||||
Result := False;
|
||||
end
|
||||
else Result:= (FButtonGlyph.Glyph <> nil) and (not FButtonGlyph.Glyph.Empty) and
|
||||
(FButtonGlyph.Glyph.Width > 0) and (FButtonGlyph.Glyph.Height > 0);
|
||||
end;
|
||||
|
||||
procedure TKASButton.SetGlyph(AValue: TBitmap);
|
||||
begin
|
||||
FButtonGlyph.Glyph := AValue;
|
||||
InvalidatePreferredSize;
|
||||
AdjustSize;
|
||||
end;
|
||||
|
||||
procedure TKASButton.Paint;
|
||||
var
|
||||
APoint: TPoint;
|
||||
SysFont: TFont;
|
||||
PaintRect: TRect;
|
||||
TextFlags: Integer;
|
||||
|
|
@ -109,7 +160,7 @@ begin
|
|||
ThemeServices.DrawElement(Canvas.Handle, Details, PaintRect);
|
||||
PaintRect := ThemeServices.ContentRect(Canvas.Handle, Details, PaintRect);
|
||||
|
||||
if Caption <> EmptyStr then
|
||||
if FShowCaption and (Caption <> EmptyStr) then
|
||||
begin
|
||||
TextFlags := DT_CENTER or DT_VCENTER;
|
||||
if UseRightToLeftReading then begin
|
||||
|
|
@ -128,6 +179,12 @@ begin
|
|||
Canvas.Brush.Style := bsClear;
|
||||
DrawText(Canvas.Handle, PChar(Caption), Length(Caption), PaintRect, TextFlags);
|
||||
end;
|
||||
end
|
||||
else if not FButtonGlyph.Glyph.Empty then
|
||||
begin
|
||||
APoint.X:= (PaintRect.Width - FButtonGlyph.Width) div 2;
|
||||
APoint.Y:= (PaintRect.Height - FButtonGlyph.Height) div 2;
|
||||
FButtonGlyph.Draw(Canvas, PaintRect, APoint, FState, True, 0);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
|
@ -182,10 +239,64 @@ begin
|
|||
Invalidate;
|
||||
end;
|
||||
|
||||
procedure TKASButton.GlyphChanged(Sender: TObject);
|
||||
begin
|
||||
InvalidatePreferredSize;
|
||||
AdjustSize;
|
||||
end;
|
||||
|
||||
procedure TKASButton.ActionChange(Sender: TObject; CheckDefaults: Boolean);
|
||||
begin
|
||||
inherited ActionChange(Sender, CheckDefaults);
|
||||
|
||||
if Sender is TCustomAction then
|
||||
begin
|
||||
with TCustomAction(Sender) do
|
||||
begin
|
||||
if (Glyph.Empty) and (ActionList <> nil) and (ActionList.Images <> nil) and
|
||||
(ImageIndex >= 0) and (ImageIndex < ActionList.Images.Count) then
|
||||
ActionList.Images.GetBitmap(ImageIndex, Glyph);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TKASButton.CalculatePreferredSize(var PreferredWidth,
|
||||
PreferredHeight: Integer; WithThemeSpace: Boolean);
|
||||
var
|
||||
PaintRect: TRect;
|
||||
ClientRect: TRect;
|
||||
Details: TThemedElementDetails;
|
||||
begin
|
||||
inherited CalculatePreferredSize(PreferredWidth, PreferredHeight, WithThemeSpace);
|
||||
|
||||
if (not FButtonGlyph.Glyph.Empty) then
|
||||
begin
|
||||
Details:= GetDrawDetails;
|
||||
PaintRect:= TRect.Create(0, 0, 32, 32);
|
||||
ClientRect:= ThemeServices.ContentRect(Canvas.Handle, Details, PaintRect);
|
||||
|
||||
PreferredWidth:= Abs(PaintRect.Width - ClientRect.Width) + FButtonGlyph.Width;
|
||||
PreferredHeight:= Abs(PaintRect.Height - ClientRect.Height) + FButtonGlyph.Height;
|
||||
end;
|
||||
end;
|
||||
|
||||
constructor TKASButton.Create(TheOwner: TComponent);
|
||||
begin
|
||||
inherited Create(TheOwner);
|
||||
|
||||
FButtonGlyph := TButtonGlyph.Create;
|
||||
FButtonGlyph.NumGlyphs := 1;
|
||||
FButtonGlyph.OnChange := GlyphChanged;
|
||||
FButtonGlyph.IsDesigning := csDesigning in ComponentState;
|
||||
|
||||
FShowCaption:= True;
|
||||
TabStop:= True;
|
||||
end;
|
||||
|
||||
destructor TKASButton.Destroy;
|
||||
begin
|
||||
FreeAndNil(FButtonGlyph);
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
|
|
|||
|
|
@ -12,9 +12,17 @@ type
|
|||
{ TKASButtonPanel }
|
||||
|
||||
TKASButtonPanel = class(TPanel)
|
||||
private
|
||||
FSameWidth: Boolean;
|
||||
FSameHeight: Boolean;
|
||||
protected
|
||||
procedure ButtonsAutoSize;
|
||||
procedure DoAutoSize; override;
|
||||
public
|
||||
constructor Create(TheOwner: TComponent); override;
|
||||
published
|
||||
property SameWidth: Boolean read FSameWidth write FSameWidth default True;
|
||||
property SameHeight: Boolean read FSameHeight write FSameHeight default True;
|
||||
end;
|
||||
|
||||
procedure Register;
|
||||
|
|
@ -44,8 +52,8 @@ begin
|
|||
AControl:= Controls[Index];
|
||||
if AControl is TCustomButton then
|
||||
begin
|
||||
if AControl.Width > AMaxWidth then AMaxWidth:= AControl.Width;
|
||||
if AControl.Height > AMaxHeight then AMaxHeight:= AControl.Height;
|
||||
if FSameWidth and (AControl.Width > AMaxWidth) then AMaxWidth:= AControl.Width;
|
||||
if FSameHeight and (AControl.Height > AMaxHeight) then AMaxHeight:= AControl.Height;
|
||||
end;
|
||||
end;
|
||||
for Index:= 0 to ControlCount - 1 do
|
||||
|
|
@ -53,8 +61,8 @@ begin
|
|||
AControl:= Controls[Index];
|
||||
if AControl is TCustomButton then
|
||||
begin
|
||||
AControl.Constraints.MinWidth:= AMaxWidth;
|
||||
AControl.Constraints.MinHeight:= AMaxHeight;
|
||||
if FSameWidth then AControl.Constraints.MinWidth:= AMaxWidth;
|
||||
if FSameHeight then AControl.Constraints.MinHeight:= AMaxHeight;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
|
@ -62,7 +70,15 @@ end;
|
|||
procedure TKASButtonPanel.DoAutoSize;
|
||||
begin
|
||||
inherited DoAutoSize;
|
||||
if AutoSize then ButtonsAutosize;
|
||||
if csDesigning in ComponentState then Exit;
|
||||
if AutoSize and (FSameWidth or FSameHeight) then ButtonsAutosize;
|
||||
end;
|
||||
|
||||
constructor TKASButtonPanel.Create(TheOwner: TComponent);
|
||||
begin
|
||||
FSameWidth:= True;
|
||||
FSameHeight:= True;
|
||||
inherited Create(TheOwner);
|
||||
end;
|
||||
|
||||
end.
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
Extended ComboBox classes
|
||||
|
||||
Copyright (C) 2012 Przemyslaw Nagay (cobines@gmail.com)
|
||||
Copyright (C) 2015-2017 Alexander Koblov (alexx2000@mail.ru)
|
||||
Copyright (C) 2015-2023 Alexander Koblov (alexx2000@mail.ru)
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
|
@ -49,7 +49,7 @@ type
|
|||
procedure CalculatePreferredSize(
|
||||
var PreferredWidth, PreferredHeight: Integer;
|
||||
WithThemeSpace: Boolean); override;
|
||||
procedure CalculateSize(MaxWidth: Integer; var NeededWidth: Integer);
|
||||
procedure CalculateSize(MaxWidth: Integer; var PreferredWidth: Integer; PreferredHeight: Integer);
|
||||
{$if lcl_fullversion >= 1070000}
|
||||
procedure DoAutoAdjustLayout(const AMode: TLayoutAdjustmentPolicy;
|
||||
const AXProportion, AYProportion: Double); override;
|
||||
|
|
@ -101,10 +101,11 @@ begin
|
|||
if (Parent = nil) or (not Parent.HandleAllocated) then Exit;
|
||||
|
||||
AWidth := Constraints.MinMaxWidth(10000);
|
||||
CalculateSize(AWidth, PreferredWidth);
|
||||
CalculateSize(AWidth, PreferredWidth, PreferredHeight);
|
||||
end;
|
||||
|
||||
procedure TComboBoxAutoWidth.CalculateSize(MaxWidth: Integer; var NeededWidth: Integer);
|
||||
procedure TComboBoxAutoWidth.CalculateSize(MaxWidth: Integer;
|
||||
var PreferredWidth: Integer; PreferredHeight: Integer);
|
||||
var
|
||||
DC: HDC;
|
||||
R: TRect;
|
||||
|
|
@ -135,19 +136,20 @@ begin
|
|||
end;
|
||||
|
||||
if LabelText = '' then begin
|
||||
NeededWidth := 1;
|
||||
PreferredWidth := 1;
|
||||
Exit;
|
||||
end;
|
||||
|
||||
DC := GetDC(Parent.Handle);
|
||||
try
|
||||
LabelText:= LabelText + 'W';
|
||||
R := Rect(0, 0, MaxWidth, 10000);
|
||||
OldFont := SelectObject(DC, HGDIOBJ(Font.Reference.Handle));
|
||||
Flags := DT_CALCRECT or DT_EXPANDTABS;
|
||||
|
||||
DrawText(DC, PChar(LabelText), Length(LabelText), R, Flags);
|
||||
SelectObject(DC, OldFont);
|
||||
NeededWidth := R.Right - R.Left + GetSystemMetrics(SM_CXVSCROLL) * 2;
|
||||
PreferredWidth := (R.Right - R.Left) + PreferredHeight;
|
||||
finally
|
||||
ReleaseDC(Parent.Handle, DC);
|
||||
end;
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
-------------------------------------------------------------------------
|
||||
Path edit class with auto complete feature
|
||||
|
||||
Copyright (C) 2012-2021 Alexander Koblov (alexx2000@mail.ru)
|
||||
Copyright (C) 2012-2022 Alexander Koblov (alexx2000@mail.ru)
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
|
@ -27,7 +27,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls,
|
||||
ShellCtrls, LCLType;
|
||||
ShellCtrls, LCLType, LCLVersion;
|
||||
|
||||
type
|
||||
|
||||
|
|
@ -186,6 +186,12 @@ end;
|
|||
{ TKASPathEdit }
|
||||
|
||||
procedure TKASPathEdit.AutoComplete(const Path: String);
|
||||
{$IF LCL_FULLVERSION >= 2020000}
|
||||
const
|
||||
AFlags: array[Boolean] of TMaskOptions = (
|
||||
[moDisableSets], [moDisableSets, moCaseSensitive]
|
||||
);
|
||||
{$ENDIF}
|
||||
var
|
||||
I: Integer;
|
||||
AMask: TMask;
|
||||
|
|
@ -208,7 +214,12 @@ begin
|
|||
try
|
||||
// Check mask and make absolute file name
|
||||
AMask:= TMask.Create(ExtractFileName(Path) + '*',
|
||||
FileNameCaseSensitive);
|
||||
{$IF LCL_FULLVERSION >= 2020000}
|
||||
AFlags[FileNameCaseSensitive]
|
||||
{$ELSE}
|
||||
FileNameCaseSensitive
|
||||
{$ENDIF}
|
||||
);
|
||||
for I:= 0 to FStringList.Count - 1 do
|
||||
begin
|
||||
if AMask.Matches(FStringList[I]) then
|
||||
|
|
|
|||
|
|
@ -11,10 +11,13 @@ type
|
|||
TKASToolPanel = class(TToolWindow)
|
||||
published
|
||||
property Align default alNone;
|
||||
property Anchors;
|
||||
property AutoSize;
|
||||
property ChildSizing;
|
||||
property EdgeBorders default [ebTop];
|
||||
property EdgeInner;
|
||||
property EdgeOuter;
|
||||
property TabOrder;
|
||||
property Visible;
|
||||
end;
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ Based on Mozilla's i18n component - https://dxr.mozilla.org/mozilla/source/exten
|
|||
-----------State
|
||||
Version 0.2.9 stable.
|
||||
Copyright (C) 2011-2019 Alexander Koblov
|
||||
The latest version can be found at https://sourceforge.net/p/doublecmd/code/HEAD/tree/trunk/components/chsdet/.
|
||||
The latest version can be found at https://github.com/doublecmd/doublecmd/tree/master/components/chsdet/.
|
||||
|
||||
-----------Original
|
||||
Based on
|
||||
|
|
|
|||
|
|
@ -34,12 +34,12 @@ interface
|
|||
uses
|
||||
Classes, SysUtils;
|
||||
|
||||
procedure crc32_init;
|
||||
function crc32_16bytes(const data: PByte; length: Integer; previousCrc32: Cardinal = 0): Cardinal;
|
||||
|
||||
implementation
|
||||
{$R-}{$Q-}
|
||||
|
||||
{
|
||||
const
|
||||
/// zlib's CRC32 polynomial
|
||||
Polynomial: Cardinal = $EDB88320;
|
||||
|
|
@ -81,6 +81,555 @@ begin
|
|||
end;
|
||||
HaveTable:= True;
|
||||
end;
|
||||
}
|
||||
|
||||
const
|
||||
Crc32Lookup: array[0..15, 0..255] of Cardinal = (
|
||||
(
|
||||
$00000000,$77073096,$EE0E612C,$990951BA,$076DC419,$706AF48F,$E963A535,$9E6495A3,
|
||||
$0EDB8832,$79DCB8A4,$E0D5E91E,$97D2D988,$09B64C2B,$7EB17CBD,$E7B82D07,$90BF1D91,
|
||||
$1DB71064,$6AB020F2,$F3B97148,$84BE41DE,$1ADAD47D,$6DDDE4EB,$F4D4B551,$83D385C7,
|
||||
$136C9856,$646BA8C0,$FD62F97A,$8A65C9EC,$14015C4F,$63066CD9,$FA0F3D63,$8D080DF5,
|
||||
$3B6E20C8,$4C69105E,$D56041E4,$A2677172,$3C03E4D1,$4B04D447,$D20D85FD,$A50AB56B,
|
||||
$35B5A8FA,$42B2986C,$DBBBC9D6,$ACBCF940,$32D86CE3,$45DF5C75,$DCD60DCF,$ABD13D59,
|
||||
$26D930AC,$51DE003A,$C8D75180,$BFD06116,$21B4F4B5,$56B3C423,$CFBA9599,$B8BDA50F,
|
||||
$2802B89E,$5F058808,$C60CD9B2,$B10BE924,$2F6F7C87,$58684C11,$C1611DAB,$B6662D3D,
|
||||
$76DC4190,$01DB7106,$98D220BC,$EFD5102A,$71B18589,$06B6B51F,$9FBFE4A5,$E8B8D433,
|
||||
$7807C9A2,$0F00F934,$9609A88E,$E10E9818,$7F6A0DBB,$086D3D2D,$91646C97,$E6635C01,
|
||||
$6B6B51F4,$1C6C6162,$856530D8,$F262004E,$6C0695ED,$1B01A57B,$8208F4C1,$F50FC457,
|
||||
$65B0D9C6,$12B7E950,$8BBEB8EA,$FCB9887C,$62DD1DDF,$15DA2D49,$8CD37CF3,$FBD44C65,
|
||||
$4DB26158,$3AB551CE,$A3BC0074,$D4BB30E2,$4ADFA541,$3DD895D7,$A4D1C46D,$D3D6F4FB,
|
||||
$4369E96A,$346ED9FC,$AD678846,$DA60B8D0,$44042D73,$33031DE5,$AA0A4C5F,$DD0D7CC9,
|
||||
$5005713C,$270241AA,$BE0B1010,$C90C2086,$5768B525,$206F85B3,$B966D409,$CE61E49F,
|
||||
$5EDEF90E,$29D9C998,$B0D09822,$C7D7A8B4,$59B33D17,$2EB40D81,$B7BD5C3B,$C0BA6CAD,
|
||||
$EDB88320,$9ABFB3B6,$03B6E20C,$74B1D29A,$EAD54739,$9DD277AF,$04DB2615,$73DC1683,
|
||||
$E3630B12,$94643B84,$0D6D6A3E,$7A6A5AA8,$E40ECF0B,$9309FF9D,$0A00AE27,$7D079EB1,
|
||||
$F00F9344,$8708A3D2,$1E01F268,$6906C2FE,$F762575D,$806567CB,$196C3671,$6E6B06E7,
|
||||
$FED41B76,$89D32BE0,$10DA7A5A,$67DD4ACC,$F9B9DF6F,$8EBEEFF9,$17B7BE43,$60B08ED5,
|
||||
$D6D6A3E8,$A1D1937E,$38D8C2C4,$4FDFF252,$D1BB67F1,$A6BC5767,$3FB506DD,$48B2364B,
|
||||
$D80D2BDA,$AF0A1B4C,$36034AF6,$41047A60,$DF60EFC3,$A867DF55,$316E8EEF,$4669BE79,
|
||||
$CB61B38C,$BC66831A,$256FD2A0,$5268E236,$CC0C7795,$BB0B4703,$220216B9,$5505262F,
|
||||
$C5BA3BBE,$B2BD0B28,$2BB45A92,$5CB36A04,$C2D7FFA7,$B5D0CF31,$2CD99E8B,$5BDEAE1D,
|
||||
$9B64C2B0,$EC63F226,$756AA39C,$026D930A,$9C0906A9,$EB0E363F,$72076785,$05005713,
|
||||
$95BF4A82,$E2B87A14,$7BB12BAE,$0CB61B38,$92D28E9B,$E5D5BE0D,$7CDCEFB7,$0BDBDF21,
|
||||
$86D3D2D4,$F1D4E242,$68DDB3F8,$1FDA836E,$81BE16CD,$F6B9265B,$6FB077E1,$18B74777,
|
||||
$88085AE6,$FF0F6A70,$66063BCA,$11010B5C,$8F659EFF,$F862AE69,$616BFFD3,$166CCF45,
|
||||
$A00AE278,$D70DD2EE,$4E048354,$3903B3C2,$A7672661,$D06016F7,$4969474D,$3E6E77DB,
|
||||
$AED16A4A,$D9D65ADC,$40DF0B66,$37D83BF0,$A9BCAE53,$DEBB9EC5,$47B2CF7F,$30B5FFE9,
|
||||
$BDBDF21C,$CABAC28A,$53B39330,$24B4A3A6,$BAD03605,$CDD70693,$54DE5729,$23D967BF,
|
||||
$B3667A2E,$C4614AB8,$5D681B02,$2A6F2B94,$B40BBE37,$C30C8EA1,$5A05DF1B,$2D02EF8D
|
||||
)
|
||||
,(
|
||||
$00000000,$191B3141,$32366282,$2B2D53C3,$646CC504,$7D77F445,$565AA786,$4F4196C7,
|
||||
$C8D98A08,$D1C2BB49,$FAEFE88A,$E3F4D9CB,$ACB54F0C,$B5AE7E4D,$9E832D8E,$87981CCF,
|
||||
$4AC21251,$53D92310,$78F470D3,$61EF4192,$2EAED755,$37B5E614,$1C98B5D7,$05838496,
|
||||
$821B9859,$9B00A918,$B02DFADB,$A936CB9A,$E6775D5D,$FF6C6C1C,$D4413FDF,$CD5A0E9E,
|
||||
$958424A2,$8C9F15E3,$A7B24620,$BEA97761,$F1E8E1A6,$E8F3D0E7,$C3DE8324,$DAC5B265,
|
||||
$5D5DAEAA,$44469FEB,$6F6BCC28,$7670FD69,$39316BAE,$202A5AEF,$0B07092C,$121C386D,
|
||||
$DF4636F3,$C65D07B2,$ED705471,$F46B6530,$BB2AF3F7,$A231C2B6,$891C9175,$9007A034,
|
||||
$179FBCFB,$0E848DBA,$25A9DE79,$3CB2EF38,$73F379FF,$6AE848BE,$41C51B7D,$58DE2A3C,
|
||||
$F0794F05,$E9627E44,$C24F2D87,$DB541CC6,$94158A01,$8D0EBB40,$A623E883,$BF38D9C2,
|
||||
$38A0C50D,$21BBF44C,$0A96A78F,$138D96CE,$5CCC0009,$45D73148,$6EFA628B,$77E153CA,
|
||||
$BABB5D54,$A3A06C15,$888D3FD6,$91960E97,$DED79850,$C7CCA911,$ECE1FAD2,$F5FACB93,
|
||||
$7262D75C,$6B79E61D,$4054B5DE,$594F849F,$160E1258,$0F152319,$243870DA,$3D23419B,
|
||||
$65FD6BA7,$7CE65AE6,$57CB0925,$4ED03864,$0191AEA3,$188A9FE2,$33A7CC21,$2ABCFD60,
|
||||
$AD24E1AF,$B43FD0EE,$9F12832D,$8609B26C,$C94824AB,$D05315EA,$FB7E4629,$E2657768,
|
||||
$2F3F79F6,$362448B7,$1D091B74,$04122A35,$4B53BCF2,$52488DB3,$7965DE70,$607EEF31,
|
||||
$E7E6F3FE,$FEFDC2BF,$D5D0917C,$CCCBA03D,$838A36FA,$9A9107BB,$B1BC5478,$A8A76539,
|
||||
$3B83984B,$2298A90A,$09B5FAC9,$10AECB88,$5FEF5D4F,$46F46C0E,$6DD93FCD,$74C20E8C,
|
||||
$F35A1243,$EA412302,$C16C70C1,$D8774180,$9736D747,$8E2DE606,$A500B5C5,$BC1B8484,
|
||||
$71418A1A,$685ABB5B,$4377E898,$5A6CD9D9,$152D4F1E,$0C367E5F,$271B2D9C,$3E001CDD,
|
||||
$B9980012,$A0833153,$8BAE6290,$92B553D1,$DDF4C516,$C4EFF457,$EFC2A794,$F6D996D5,
|
||||
$AE07BCE9,$B71C8DA8,$9C31DE6B,$852AEF2A,$CA6B79ED,$D37048AC,$F85D1B6F,$E1462A2E,
|
||||
$66DE36E1,$7FC507A0,$54E85463,$4DF36522,$02B2F3E5,$1BA9C2A4,$30849167,$299FA026,
|
||||
$E4C5AEB8,$FDDE9FF9,$D6F3CC3A,$CFE8FD7B,$80A96BBC,$99B25AFD,$B29F093E,$AB84387F,
|
||||
$2C1C24B0,$350715F1,$1E2A4632,$07317773,$4870E1B4,$516BD0F5,$7A468336,$635DB277,
|
||||
$CBFAD74E,$D2E1E60F,$F9CCB5CC,$E0D7848D,$AF96124A,$B68D230B,$9DA070C8,$84BB4189,
|
||||
$03235D46,$1A386C07,$31153FC4,$280E0E85,$674F9842,$7E54A903,$5579FAC0,$4C62CB81,
|
||||
$8138C51F,$9823F45E,$B30EA79D,$AA1596DC,$E554001B,$FC4F315A,$D7626299,$CE7953D8,
|
||||
$49E14F17,$50FA7E56,$7BD72D95,$62CC1CD4,$2D8D8A13,$3496BB52,$1FBBE891,$06A0D9D0,
|
||||
$5E7EF3EC,$4765C2AD,$6C48916E,$7553A02F,$3A1236E8,$230907A9,$0824546A,$113F652B,
|
||||
$96A779E4,$8FBC48A5,$A4911B66,$BD8A2A27,$F2CBBCE0,$EBD08DA1,$C0FDDE62,$D9E6EF23,
|
||||
$14BCE1BD,$0DA7D0FC,$268A833F,$3F91B27E,$70D024B9,$69CB15F8,$42E6463B,$5BFD777A,
|
||||
$DC656BB5,$C57E5AF4,$EE530937,$F7483876,$B809AEB1,$A1129FF0,$8A3FCC33,$9324FD72
|
||||
),
|
||||
(
|
||||
$00000000,$01C26A37,$0384D46E,$0246BE59,$0709A8DC,$06CBC2EB,$048D7CB2,$054F1685,
|
||||
$0E1351B8,$0FD13B8F,$0D9785D6,$0C55EFE1,$091AF964,$08D89353,$0A9E2D0A,$0B5C473D,
|
||||
$1C26A370,$1DE4C947,$1FA2771E,$1E601D29,$1B2F0BAC,$1AED619B,$18ABDFC2,$1969B5F5,
|
||||
$1235F2C8,$13F798FF,$11B126A6,$10734C91,$153C5A14,$14FE3023,$16B88E7A,$177AE44D,
|
||||
$384D46E0,$398F2CD7,$3BC9928E,$3A0BF8B9,$3F44EE3C,$3E86840B,$3CC03A52,$3D025065,
|
||||
$365E1758,$379C7D6F,$35DAC336,$3418A901,$3157BF84,$3095D5B3,$32D36BEA,$331101DD,
|
||||
$246BE590,$25A98FA7,$27EF31FE,$262D5BC9,$23624D4C,$22A0277B,$20E69922,$2124F315,
|
||||
$2A78B428,$2BBADE1F,$29FC6046,$283E0A71,$2D711CF4,$2CB376C3,$2EF5C89A,$2F37A2AD,
|
||||
$709A8DC0,$7158E7F7,$731E59AE,$72DC3399,$7793251C,$76514F2B,$7417F172,$75D59B45,
|
||||
$7E89DC78,$7F4BB64F,$7D0D0816,$7CCF6221,$798074A4,$78421E93,$7A04A0CA,$7BC6CAFD,
|
||||
$6CBC2EB0,$6D7E4487,$6F38FADE,$6EFA90E9,$6BB5866C,$6A77EC5B,$68315202,$69F33835,
|
||||
$62AF7F08,$636D153F,$612BAB66,$60E9C151,$65A6D7D4,$6464BDE3,$662203BA,$67E0698D,
|
||||
$48D7CB20,$4915A117,$4B531F4E,$4A917579,$4FDE63FC,$4E1C09CB,$4C5AB792,$4D98DDA5,
|
||||
$46C49A98,$4706F0AF,$45404EF6,$448224C1,$41CD3244,$400F5873,$4249E62A,$438B8C1D,
|
||||
$54F16850,$55330267,$5775BC3E,$56B7D609,$53F8C08C,$523AAABB,$507C14E2,$51BE7ED5,
|
||||
$5AE239E8,$5B2053DF,$5966ED86,$58A487B1,$5DEB9134,$5C29FB03,$5E6F455A,$5FAD2F6D,
|
||||
$E1351B80,$E0F771B7,$E2B1CFEE,$E373A5D9,$E63CB35C,$E7FED96B,$E5B86732,$E47A0D05,
|
||||
$EF264A38,$EEE4200F,$ECA29E56,$ED60F461,$E82FE2E4,$E9ED88D3,$EBAB368A,$EA695CBD,
|
||||
$FD13B8F0,$FCD1D2C7,$FE976C9E,$FF5506A9,$FA1A102C,$FBD87A1B,$F99EC442,$F85CAE75,
|
||||
$F300E948,$F2C2837F,$F0843D26,$F1465711,$F4094194,$F5CB2BA3,$F78D95FA,$F64FFFCD,
|
||||
$D9785D60,$D8BA3757,$DAFC890E,$DB3EE339,$DE71F5BC,$DFB39F8B,$DDF521D2,$DC374BE5,
|
||||
$D76B0CD8,$D6A966EF,$D4EFD8B6,$D52DB281,$D062A404,$D1A0CE33,$D3E6706A,$D2241A5D,
|
||||
$C55EFE10,$C49C9427,$C6DA2A7E,$C7184049,$C25756CC,$C3953CFB,$C1D382A2,$C011E895,
|
||||
$CB4DAFA8,$CA8FC59F,$C8C97BC6,$C90B11F1,$CC440774,$CD866D43,$CFC0D31A,$CE02B92D,
|
||||
$91AF9640,$906DFC77,$922B422E,$93E92819,$96A63E9C,$976454AB,$9522EAF2,$94E080C5,
|
||||
$9FBCC7F8,$9E7EADCF,$9C381396,$9DFA79A1,$98B56F24,$99770513,$9B31BB4A,$9AF3D17D,
|
||||
$8D893530,$8C4B5F07,$8E0DE15E,$8FCF8B69,$8A809DEC,$8B42F7DB,$89044982,$88C623B5,
|
||||
$839A6488,$82580EBF,$801EB0E6,$81DCDAD1,$8493CC54,$8551A663,$8717183A,$86D5720D,
|
||||
$A9E2D0A0,$A820BA97,$AA6604CE,$ABA46EF9,$AEEB787C,$AF29124B,$AD6FAC12,$ACADC625,
|
||||
$A7F18118,$A633EB2F,$A4755576,$A5B73F41,$A0F829C4,$A13A43F3,$A37CFDAA,$A2BE979D,
|
||||
$B5C473D0,$B40619E7,$B640A7BE,$B782CD89,$B2CDDB0C,$B30FB13B,$B1490F62,$B08B6555,
|
||||
$BBD72268,$BA15485F,$B853F606,$B9919C31,$BCDE8AB4,$BD1CE083,$BF5A5EDA,$BE9834ED
|
||||
),
|
||||
(
|
||||
$00000000,$B8BC6765,$AA09C88B,$12B5AFEE,$8F629757,$37DEF032,$256B5FDC,$9DD738B9,
|
||||
$C5B428EF,$7D084F8A,$6FBDE064,$D7018701,$4AD6BFB8,$F26AD8DD,$E0DF7733,$58631056,
|
||||
$5019579F,$E8A530FA,$FA109F14,$42ACF871,$DF7BC0C8,$67C7A7AD,$75720843,$CDCE6F26,
|
||||
$95AD7F70,$2D111815,$3FA4B7FB,$8718D09E,$1ACFE827,$A2738F42,$B0C620AC,$087A47C9,
|
||||
$A032AF3E,$188EC85B,$0A3B67B5,$B28700D0,$2F503869,$97EC5F0C,$8559F0E2,$3DE59787,
|
||||
$658687D1,$DD3AE0B4,$CF8F4F5A,$7733283F,$EAE41086,$525877E3,$40EDD80D,$F851BF68,
|
||||
$F02BF8A1,$48979FC4,$5A22302A,$E29E574F,$7F496FF6,$C7F50893,$D540A77D,$6DFCC018,
|
||||
$359FD04E,$8D23B72B,$9F9618C5,$272A7FA0,$BAFD4719,$0241207C,$10F48F92,$A848E8F7,
|
||||
$9B14583D,$23A83F58,$311D90B6,$89A1F7D3,$1476CF6A,$ACCAA80F,$BE7F07E1,$06C36084,
|
||||
$5EA070D2,$E61C17B7,$F4A9B859,$4C15DF3C,$D1C2E785,$697E80E0,$7BCB2F0E,$C377486B,
|
||||
$CB0D0FA2,$73B168C7,$6104C729,$D9B8A04C,$446F98F5,$FCD3FF90,$EE66507E,$56DA371B,
|
||||
$0EB9274D,$B6054028,$A4B0EFC6,$1C0C88A3,$81DBB01A,$3967D77F,$2BD27891,$936E1FF4,
|
||||
$3B26F703,$839A9066,$912F3F88,$299358ED,$B4446054,$0CF80731,$1E4DA8DF,$A6F1CFBA,
|
||||
$FE92DFEC,$462EB889,$549B1767,$EC277002,$71F048BB,$C94C2FDE,$DBF98030,$6345E755,
|
||||
$6B3FA09C,$D383C7F9,$C1366817,$798A0F72,$E45D37CB,$5CE150AE,$4E54FF40,$F6E89825,
|
||||
$AE8B8873,$1637EF16,$048240F8,$BC3E279D,$21E91F24,$99557841,$8BE0D7AF,$335CB0CA,
|
||||
$ED59B63B,$55E5D15E,$47507EB0,$FFEC19D5,$623B216C,$DA874609,$C832E9E7,$708E8E82,
|
||||
$28ED9ED4,$9051F9B1,$82E4565F,$3A58313A,$A78F0983,$1F336EE6,$0D86C108,$B53AA66D,
|
||||
$BD40E1A4,$05FC86C1,$1749292F,$AFF54E4A,$322276F3,$8A9E1196,$982BBE78,$2097D91D,
|
||||
$78F4C94B,$C048AE2E,$D2FD01C0,$6A4166A5,$F7965E1C,$4F2A3979,$5D9F9697,$E523F1F2,
|
||||
$4D6B1905,$F5D77E60,$E762D18E,$5FDEB6EB,$C2098E52,$7AB5E937,$680046D9,$D0BC21BC,
|
||||
$88DF31EA,$3063568F,$22D6F961,$9A6A9E04,$07BDA6BD,$BF01C1D8,$ADB46E36,$15080953,
|
||||
$1D724E9A,$A5CE29FF,$B77B8611,$0FC7E174,$9210D9CD,$2AACBEA8,$38191146,$80A57623,
|
||||
$D8C66675,$607A0110,$72CFAEFE,$CA73C99B,$57A4F122,$EF189647,$FDAD39A9,$45115ECC,
|
||||
$764DEE06,$CEF18963,$DC44268D,$64F841E8,$F92F7951,$41931E34,$5326B1DA,$EB9AD6BF,
|
||||
$B3F9C6E9,$0B45A18C,$19F00E62,$A14C6907,$3C9B51BE,$842736DB,$96929935,$2E2EFE50,
|
||||
$2654B999,$9EE8DEFC,$8C5D7112,$34E11677,$A9362ECE,$118A49AB,$033FE645,$BB838120,
|
||||
$E3E09176,$5B5CF613,$49E959FD,$F1553E98,$6C820621,$D43E6144,$C68BCEAA,$7E37A9CF,
|
||||
$D67F4138,$6EC3265D,$7C7689B3,$C4CAEED6,$591DD66F,$E1A1B10A,$F3141EE4,$4BA87981,
|
||||
$13CB69D7,$AB770EB2,$B9C2A15C,$017EC639,$9CA9FE80,$241599E5,$36A0360B,$8E1C516E,
|
||||
$866616A7,$3EDA71C2,$2C6FDE2C,$94D3B949,$090481F0,$B1B8E695,$A30D497B,$1BB12E1E,
|
||||
$43D23E48,$FB6E592D,$E9DBF6C3,$516791A6,$CCB0A91F,$740CCE7A,$66B96194,$DE0506F1
|
||||
)
|
||||
,(
|
||||
$00000000,$3D6029B0,$7AC05360,$47A07AD0,$F580A6C0,$C8E08F70,$8F40F5A0,$B220DC10,
|
||||
$30704BC1,$0D106271,$4AB018A1,$77D03111,$C5F0ED01,$F890C4B1,$BF30BE61,$825097D1,
|
||||
$60E09782,$5D80BE32,$1A20C4E2,$2740ED52,$95603142,$A80018F2,$EFA06222,$D2C04B92,
|
||||
$5090DC43,$6DF0F5F3,$2A508F23,$1730A693,$A5107A83,$98705333,$DFD029E3,$E2B00053,
|
||||
$C1C12F04,$FCA106B4,$BB017C64,$866155D4,$344189C4,$0921A074,$4E81DAA4,$73E1F314,
|
||||
$F1B164C5,$CCD14D75,$8B7137A5,$B6111E15,$0431C205,$3951EBB5,$7EF19165,$4391B8D5,
|
||||
$A121B886,$9C419136,$DBE1EBE6,$E681C256,$54A11E46,$69C137F6,$2E614D26,$13016496,
|
||||
$9151F347,$AC31DAF7,$EB91A027,$D6F18997,$64D15587,$59B17C37,$1E1106E7,$23712F57,
|
||||
$58F35849,$659371F9,$22330B29,$1F532299,$AD73FE89,$9013D739,$D7B3ADE9,$EAD38459,
|
||||
$68831388,$55E33A38,$124340E8,$2F236958,$9D03B548,$A0639CF8,$E7C3E628,$DAA3CF98,
|
||||
$3813CFCB,$0573E67B,$42D39CAB,$7FB3B51B,$CD93690B,$F0F340BB,$B7533A6B,$8A3313DB,
|
||||
$0863840A,$3503ADBA,$72A3D76A,$4FC3FEDA,$FDE322CA,$C0830B7A,$872371AA,$BA43581A,
|
||||
$9932774D,$A4525EFD,$E3F2242D,$DE920D9D,$6CB2D18D,$51D2F83D,$167282ED,$2B12AB5D,
|
||||
$A9423C8C,$9422153C,$D3826FEC,$EEE2465C,$5CC29A4C,$61A2B3FC,$2602C92C,$1B62E09C,
|
||||
$F9D2E0CF,$C4B2C97F,$8312B3AF,$BE729A1F,$0C52460F,$31326FBF,$7692156F,$4BF23CDF,
|
||||
$C9A2AB0E,$F4C282BE,$B362F86E,$8E02D1DE,$3C220DCE,$0142247E,$46E25EAE,$7B82771E,
|
||||
$B1E6B092,$8C869922,$CB26E3F2,$F646CA42,$44661652,$79063FE2,$3EA64532,$03C66C82,
|
||||
$8196FB53,$BCF6D2E3,$FB56A833,$C6368183,$74165D93,$49767423,$0ED60EF3,$33B62743,
|
||||
$D1062710,$EC660EA0,$ABC67470,$96A65DC0,$248681D0,$19E6A860,$5E46D2B0,$6326FB00,
|
||||
$E1766CD1,$DC164561,$9BB63FB1,$A6D61601,$14F6CA11,$2996E3A1,$6E369971,$5356B0C1,
|
||||
$70279F96,$4D47B626,$0AE7CCF6,$3787E546,$85A73956,$B8C710E6,$FF676A36,$C2074386,
|
||||
$4057D457,$7D37FDE7,$3A978737,$07F7AE87,$B5D77297,$88B75B27,$CF1721F7,$F2770847,
|
||||
$10C70814,$2DA721A4,$6A075B74,$576772C4,$E547AED4,$D8278764,$9F87FDB4,$A2E7D404,
|
||||
$20B743D5,$1DD76A65,$5A7710B5,$67173905,$D537E515,$E857CCA5,$AFF7B675,$92979FC5,
|
||||
$E915E8DB,$D475C16B,$93D5BBBB,$AEB5920B,$1C954E1B,$21F567AB,$66551D7B,$5B3534CB,
|
||||
$D965A31A,$E4058AAA,$A3A5F07A,$9EC5D9CA,$2CE505DA,$11852C6A,$562556BA,$6B457F0A,
|
||||
$89F57F59,$B49556E9,$F3352C39,$CE550589,$7C75D999,$4115F029,$06B58AF9,$3BD5A349,
|
||||
$B9853498,$84E51D28,$C34567F8,$FE254E48,$4C059258,$7165BBE8,$36C5C138,$0BA5E888,
|
||||
$28D4C7DF,$15B4EE6F,$521494BF,$6F74BD0F,$DD54611F,$E03448AF,$A794327F,$9AF41BCF,
|
||||
$18A48C1E,$25C4A5AE,$6264DF7E,$5F04F6CE,$ED242ADE,$D044036E,$97E479BE,$AA84500E,
|
||||
$4834505D,$755479ED,$32F4033D,$0F942A8D,$BDB4F69D,$80D4DF2D,$C774A5FD,$FA148C4D,
|
||||
$78441B9C,$4524322C,$028448FC,$3FE4614C,$8DC4BD5C,$B0A494EC,$F704EE3C,$CA64C78C
|
||||
),
|
||||
(
|
||||
$00000000,$CB5CD3A5,$4DC8A10B,$869472AE,$9B914216,$50CD91B3,$D659E31D,$1D0530B8,
|
||||
$EC53826D,$270F51C8,$A19B2366,$6AC7F0C3,$77C2C07B,$BC9E13DE,$3A0A6170,$F156B2D5,
|
||||
$03D6029B,$C88AD13E,$4E1EA390,$85427035,$9847408D,$531B9328,$D58FE186,$1ED33223,
|
||||
$EF8580F6,$24D95353,$A24D21FD,$6911F258,$7414C2E0,$BF481145,$39DC63EB,$F280B04E,
|
||||
$07AC0536,$CCF0D693,$4A64A43D,$81387798,$9C3D4720,$57619485,$D1F5E62B,$1AA9358E,
|
||||
$EBFF875B,$20A354FE,$A6372650,$6D6BF5F5,$706EC54D,$BB3216E8,$3DA66446,$F6FAB7E3,
|
||||
$047A07AD,$CF26D408,$49B2A6A6,$82EE7503,$9FEB45BB,$54B7961E,$D223E4B0,$197F3715,
|
||||
$E82985C0,$23755665,$A5E124CB,$6EBDF76E,$73B8C7D6,$B8E41473,$3E7066DD,$F52CB578,
|
||||
$0F580A6C,$C404D9C9,$4290AB67,$89CC78C2,$94C9487A,$5F959BDF,$D901E971,$125D3AD4,
|
||||
$E30B8801,$28575BA4,$AEC3290A,$659FFAAF,$789ACA17,$B3C619B2,$35526B1C,$FE0EB8B9,
|
||||
$0C8E08F7,$C7D2DB52,$4146A9FC,$8A1A7A59,$971F4AE1,$5C439944,$DAD7EBEA,$118B384F,
|
||||
$E0DD8A9A,$2B81593F,$AD152B91,$6649F834,$7B4CC88C,$B0101B29,$36846987,$FDD8BA22,
|
||||
$08F40F5A,$C3A8DCFF,$453CAE51,$8E607DF4,$93654D4C,$58399EE9,$DEADEC47,$15F13FE2,
|
||||
$E4A78D37,$2FFB5E92,$A96F2C3C,$6233FF99,$7F36CF21,$B46A1C84,$32FE6E2A,$F9A2BD8F,
|
||||
$0B220DC1,$C07EDE64,$46EAACCA,$8DB67F6F,$90B34FD7,$5BEF9C72,$DD7BEEDC,$16273D79,
|
||||
$E7718FAC,$2C2D5C09,$AAB92EA7,$61E5FD02,$7CE0CDBA,$B7BC1E1F,$31286CB1,$FA74BF14,
|
||||
$1EB014D8,$D5ECC77D,$5378B5D3,$98246676,$852156CE,$4E7D856B,$C8E9F7C5,$03B52460,
|
||||
$F2E396B5,$39BF4510,$BF2B37BE,$7477E41B,$6972D4A3,$A22E0706,$24BA75A8,$EFE6A60D,
|
||||
$1D661643,$D63AC5E6,$50AEB748,$9BF264ED,$86F75455,$4DAB87F0,$CB3FF55E,$006326FB,
|
||||
$F135942E,$3A69478B,$BCFD3525,$77A1E680,$6AA4D638,$A1F8059D,$276C7733,$EC30A496,
|
||||
$191C11EE,$D240C24B,$54D4B0E5,$9F886340,$828D53F8,$49D1805D,$CF45F2F3,$04192156,
|
||||
$F54F9383,$3E134026,$B8873288,$73DBE12D,$6EDED195,$A5820230,$2316709E,$E84AA33B,
|
||||
$1ACA1375,$D196C0D0,$5702B27E,$9C5E61DB,$815B5163,$4A0782C6,$CC93F068,$07CF23CD,
|
||||
$F6999118,$3DC542BD,$BB513013,$700DE3B6,$6D08D30E,$A65400AB,$20C07205,$EB9CA1A0,
|
||||
$11E81EB4,$DAB4CD11,$5C20BFBF,$977C6C1A,$8A795CA2,$41258F07,$C7B1FDA9,$0CED2E0C,
|
||||
$FDBB9CD9,$36E74F7C,$B0733DD2,$7B2FEE77,$662ADECF,$AD760D6A,$2BE27FC4,$E0BEAC61,
|
||||
$123E1C2F,$D962CF8A,$5FF6BD24,$94AA6E81,$89AF5E39,$42F38D9C,$C467FF32,$0F3B2C97,
|
||||
$FE6D9E42,$35314DE7,$B3A53F49,$78F9ECEC,$65FCDC54,$AEA00FF1,$28347D5F,$E368AEFA,
|
||||
$16441B82,$DD18C827,$5B8CBA89,$90D0692C,$8DD55994,$46898A31,$C01DF89F,$0B412B3A,
|
||||
$FA1799EF,$314B4A4A,$B7DF38E4,$7C83EB41,$6186DBF9,$AADA085C,$2C4E7AF2,$E712A957,
|
||||
$15921919,$DECECABC,$585AB812,$93066BB7,$8E035B0F,$455F88AA,$C3CBFA04,$089729A1,
|
||||
$F9C19B74,$329D48D1,$B4093A7F,$7F55E9DA,$6250D962,$A90C0AC7,$2F987869,$E4C4ABCC
|
||||
),
|
||||
(
|
||||
$00000000,$A6770BB4,$979F1129,$31E81A9D,$F44F2413,$52382FA7,$63D0353A,$C5A73E8E,
|
||||
$33EF4E67,$959845D3,$A4705F4E,$020754FA,$C7A06A74,$61D761C0,$503F7B5D,$F64870E9,
|
||||
$67DE9CCE,$C1A9977A,$F0418DE7,$56368653,$9391B8DD,$35E6B369,$040EA9F4,$A279A240,
|
||||
$5431D2A9,$F246D91D,$C3AEC380,$65D9C834,$A07EF6BA,$0609FD0E,$37E1E793,$9196EC27,
|
||||
$CFBD399C,$69CA3228,$582228B5,$FE552301,$3BF21D8F,$9D85163B,$AC6D0CA6,$0A1A0712,
|
||||
$FC5277FB,$5A257C4F,$6BCD66D2,$CDBA6D66,$081D53E8,$AE6A585C,$9F8242C1,$39F54975,
|
||||
$A863A552,$0E14AEE6,$3FFCB47B,$998BBFCF,$5C2C8141,$FA5B8AF5,$CBB39068,$6DC49BDC,
|
||||
$9B8CEB35,$3DFBE081,$0C13FA1C,$AA64F1A8,$6FC3CF26,$C9B4C492,$F85CDE0F,$5E2BD5BB,
|
||||
$440B7579,$E27C7ECD,$D3946450,$75E36FE4,$B044516A,$16335ADE,$27DB4043,$81AC4BF7,
|
||||
$77E43B1E,$D19330AA,$E07B2A37,$460C2183,$83AB1F0D,$25DC14B9,$14340E24,$B2430590,
|
||||
$23D5E9B7,$85A2E203,$B44AF89E,$123DF32A,$D79ACDA4,$71EDC610,$4005DC8D,$E672D739,
|
||||
$103AA7D0,$B64DAC64,$87A5B6F9,$21D2BD4D,$E47583C3,$42028877,$73EA92EA,$D59D995E,
|
||||
$8BB64CE5,$2DC14751,$1C295DCC,$BA5E5678,$7FF968F6,$D98E6342,$E86679DF,$4E11726B,
|
||||
$B8590282,$1E2E0936,$2FC613AB,$89B1181F,$4C162691,$EA612D25,$DB8937B8,$7DFE3C0C,
|
||||
$EC68D02B,$4A1FDB9F,$7BF7C102,$DD80CAB6,$1827F438,$BE50FF8C,$8FB8E511,$29CFEEA5,
|
||||
$DF879E4C,$79F095F8,$48188F65,$EE6F84D1,$2BC8BA5F,$8DBFB1EB,$BC57AB76,$1A20A0C2,
|
||||
$8816EAF2,$2E61E146,$1F89FBDB,$B9FEF06F,$7C59CEE1,$DA2EC555,$EBC6DFC8,$4DB1D47C,
|
||||
$BBF9A495,$1D8EAF21,$2C66B5BC,$8A11BE08,$4FB68086,$E9C18B32,$D82991AF,$7E5E9A1B,
|
||||
$EFC8763C,$49BF7D88,$78576715,$DE206CA1,$1B87522F,$BDF0599B,$8C184306,$2A6F48B2,
|
||||
$DC27385B,$7A5033EF,$4BB82972,$EDCF22C6,$28681C48,$8E1F17FC,$BFF70D61,$198006D5,
|
||||
$47ABD36E,$E1DCD8DA,$D034C247,$7643C9F3,$B3E4F77D,$1593FCC9,$247BE654,$820CEDE0,
|
||||
$74449D09,$D23396BD,$E3DB8C20,$45AC8794,$800BB91A,$267CB2AE,$1794A833,$B1E3A387,
|
||||
$20754FA0,$86024414,$B7EA5E89,$119D553D,$D43A6BB3,$724D6007,$43A57A9A,$E5D2712E,
|
||||
$139A01C7,$B5ED0A73,$840510EE,$22721B5A,$E7D525D4,$41A22E60,$704A34FD,$D63D3F49,
|
||||
$CC1D9F8B,$6A6A943F,$5B828EA2,$FDF58516,$3852BB98,$9E25B02C,$AFCDAAB1,$09BAA105,
|
||||
$FFF2D1EC,$5985DA58,$686DC0C5,$CE1ACB71,$0BBDF5FF,$ADCAFE4B,$9C22E4D6,$3A55EF62,
|
||||
$ABC30345,$0DB408F1,$3C5C126C,$9A2B19D8,$5F8C2756,$F9FB2CE2,$C813367F,$6E643DCB,
|
||||
$982C4D22,$3E5B4696,$0FB35C0B,$A9C457BF,$6C636931,$CA146285,$FBFC7818,$5D8B73AC,
|
||||
$03A0A617,$A5D7ADA3,$943FB73E,$3248BC8A,$F7EF8204,$519889B0,$6070932D,$C6079899,
|
||||
$304FE870,$9638E3C4,$A7D0F959,$01A7F2ED,$C400CC63,$6277C7D7,$539FDD4A,$F5E8D6FE,
|
||||
$647E3AD9,$C209316D,$F3E12BF0,$55962044,$90311ECA,$3646157E,$07AE0FE3,$A1D90457,
|
||||
$579174BE,$F1E67F0A,$C00E6597,$66796E23,$A3DE50AD,$05A95B19,$34414184,$92364A30
|
||||
),
|
||||
(
|
||||
$00000000,$CCAA009E,$4225077D,$8E8F07E3,$844A0EFA,$48E00E64,$C66F0987,$0AC50919,
|
||||
$D3E51BB5,$1F4F1B2B,$91C01CC8,$5D6A1C56,$57AF154F,$9B0515D1,$158A1232,$D92012AC,
|
||||
$7CBB312B,$B01131B5,$3E9E3656,$F23436C8,$F8F13FD1,$345B3F4F,$BAD438AC,$767E3832,
|
||||
$AF5E2A9E,$63F42A00,$ED7B2DE3,$21D12D7D,$2B142464,$E7BE24FA,$69312319,$A59B2387,
|
||||
$F9766256,$35DC62C8,$BB53652B,$77F965B5,$7D3C6CAC,$B1966C32,$3F196BD1,$F3B36B4F,
|
||||
$2A9379E3,$E639797D,$68B67E9E,$A41C7E00,$AED97719,$62737787,$ECFC7064,$205670FA,
|
||||
$85CD537D,$496753E3,$C7E85400,$0B42549E,$01875D87,$CD2D5D19,$43A25AFA,$8F085A64,
|
||||
$562848C8,$9A824856,$140D4FB5,$D8A74F2B,$D2624632,$1EC846AC,$9047414F,$5CED41D1,
|
||||
$299DC2ED,$E537C273,$6BB8C590,$A712C50E,$ADD7CC17,$617DCC89,$EFF2CB6A,$2358CBF4,
|
||||
$FA78D958,$36D2D9C6,$B85DDE25,$74F7DEBB,$7E32D7A2,$B298D73C,$3C17D0DF,$F0BDD041,
|
||||
$5526F3C6,$998CF358,$1703F4BB,$DBA9F425,$D16CFD3C,$1DC6FDA2,$9349FA41,$5FE3FADF,
|
||||
$86C3E873,$4A69E8ED,$C4E6EF0E,$084CEF90,$0289E689,$CE23E617,$40ACE1F4,$8C06E16A,
|
||||
$D0EBA0BB,$1C41A025,$92CEA7C6,$5E64A758,$54A1AE41,$980BAEDF,$1684A93C,$DA2EA9A2,
|
||||
$030EBB0E,$CFA4BB90,$412BBC73,$8D81BCED,$8744B5F4,$4BEEB56A,$C561B289,$09CBB217,
|
||||
$AC509190,$60FA910E,$EE7596ED,$22DF9673,$281A9F6A,$E4B09FF4,$6A3F9817,$A6959889,
|
||||
$7FB58A25,$B31F8ABB,$3D908D58,$F13A8DC6,$FBFF84DF,$37558441,$B9DA83A2,$7570833C,
|
||||
$533B85DA,$9F918544,$111E82A7,$DDB48239,$D7718B20,$1BDB8BBE,$95548C5D,$59FE8CC3,
|
||||
$80DE9E6F,$4C749EF1,$C2FB9912,$0E51998C,$04949095,$C83E900B,$46B197E8,$8A1B9776,
|
||||
$2F80B4F1,$E32AB46F,$6DA5B38C,$A10FB312,$ABCABA0B,$6760BA95,$E9EFBD76,$2545BDE8,
|
||||
$FC65AF44,$30CFAFDA,$BE40A839,$72EAA8A7,$782FA1BE,$B485A120,$3A0AA6C3,$F6A0A65D,
|
||||
$AA4DE78C,$66E7E712,$E868E0F1,$24C2E06F,$2E07E976,$E2ADE9E8,$6C22EE0B,$A088EE95,
|
||||
$79A8FC39,$B502FCA7,$3B8DFB44,$F727FBDA,$FDE2F2C3,$3148F25D,$BFC7F5BE,$736DF520,
|
||||
$D6F6D6A7,$1A5CD639,$94D3D1DA,$5879D144,$52BCD85D,$9E16D8C3,$1099DF20,$DC33DFBE,
|
||||
$0513CD12,$C9B9CD8C,$4736CA6F,$8B9CCAF1,$8159C3E8,$4DF3C376,$C37CC495,$0FD6C40B,
|
||||
$7AA64737,$B60C47A9,$3883404A,$F42940D4,$FEEC49CD,$32464953,$BCC94EB0,$70634E2E,
|
||||
$A9435C82,$65E95C1C,$EB665BFF,$27CC5B61,$2D095278,$E1A352E6,$6F2C5505,$A386559B,
|
||||
$061D761C,$CAB77682,$44387161,$889271FF,$825778E6,$4EFD7878,$C0727F9B,$0CD87F05,
|
||||
$D5F86DA9,$19526D37,$97DD6AD4,$5B776A4A,$51B26353,$9D1863CD,$1397642E,$DF3D64B0,
|
||||
$83D02561,$4F7A25FF,$C1F5221C,$0D5F2282,$079A2B9B,$CB302B05,$45BF2CE6,$89152C78,
|
||||
$50353ED4,$9C9F3E4A,$121039A9,$DEBA3937,$D47F302E,$18D530B0,$965A3753,$5AF037CD,
|
||||
$FF6B144A,$33C114D4,$BD4E1337,$71E413A9,$7B211AB0,$B78B1A2E,$39041DCD,$F5AE1D53,
|
||||
$2C8E0FFF,$E0240F61,$6EAB0882,$A201081C,$A8C40105,$646E019B,$EAE10678,$264B06E6
|
||||
)
|
||||
,(
|
||||
$00000000,$177B1443,$2EF62886,$398D3CC5,$5DEC510C,$4A97454F,$731A798A,$64616DC9,
|
||||
$BBD8A218,$ACA3B65B,$952E8A9E,$82559EDD,$E634F314,$F14FE757,$C8C2DB92,$DFB9CFD1,
|
||||
$ACC04271,$BBBB5632,$82366AF7,$954D7EB4,$F12C137D,$E657073E,$DFDA3BFB,$C8A12FB8,
|
||||
$1718E069,$0063F42A,$39EEC8EF,$2E95DCAC,$4AF4B165,$5D8FA526,$640299E3,$73798DA0,
|
||||
$82F182A3,$958A96E0,$AC07AA25,$BB7CBE66,$DF1DD3AF,$C866C7EC,$F1EBFB29,$E690EF6A,
|
||||
$392920BB,$2E5234F8,$17DF083D,$00A41C7E,$64C571B7,$73BE65F4,$4A335931,$5D484D72,
|
||||
$2E31C0D2,$394AD491,$00C7E854,$17BCFC17,$73DD91DE,$64A6859D,$5D2BB958,$4A50AD1B,
|
||||
$95E962CA,$82927689,$BB1F4A4C,$AC645E0F,$C80533C6,$DF7E2785,$E6F31B40,$F1880F03,
|
||||
$DE920307,$C9E91744,$F0642B81,$E71F3FC2,$837E520B,$94054648,$AD887A8D,$BAF36ECE,
|
||||
$654AA11F,$7231B55C,$4BBC8999,$5CC79DDA,$38A6F013,$2FDDE450,$1650D895,$012BCCD6,
|
||||
$72524176,$65295535,$5CA469F0,$4BDF7DB3,$2FBE107A,$38C50439,$014838FC,$16332CBF,
|
||||
$C98AE36E,$DEF1F72D,$E77CCBE8,$F007DFAB,$9466B262,$831DA621,$BA909AE4,$ADEB8EA7,
|
||||
$5C6381A4,$4B1895E7,$7295A922,$65EEBD61,$018FD0A8,$16F4C4EB,$2F79F82E,$3802EC6D,
|
||||
$E7BB23BC,$F0C037FF,$C94D0B3A,$DE361F79,$BA5772B0,$AD2C66F3,$94A15A36,$83DA4E75,
|
||||
$F0A3C3D5,$E7D8D796,$DE55EB53,$C92EFF10,$AD4F92D9,$BA34869A,$83B9BA5F,$94C2AE1C,
|
||||
$4B7B61CD,$5C00758E,$658D494B,$72F65D08,$169730C1,$01EC2482,$38611847,$2F1A0C04,
|
||||
$6655004F,$712E140C,$48A328C9,$5FD83C8A,$3BB95143,$2CC24500,$154F79C5,$02346D86,
|
||||
$DD8DA257,$CAF6B614,$F37B8AD1,$E4009E92,$8061F35B,$971AE718,$AE97DBDD,$B9ECCF9E,
|
||||
$CA95423E,$DDEE567D,$E4636AB8,$F3187EFB,$97791332,$80020771,$B98F3BB4,$AEF42FF7,
|
||||
$714DE026,$6636F465,$5FBBC8A0,$48C0DCE3,$2CA1B12A,$3BDAA569,$025799AC,$152C8DEF,
|
||||
$E4A482EC,$F3DF96AF,$CA52AA6A,$DD29BE29,$B948D3E0,$AE33C7A3,$97BEFB66,$80C5EF25,
|
||||
$5F7C20F4,$480734B7,$718A0872,$66F11C31,$029071F8,$15EB65BB,$2C66597E,$3B1D4D3D,
|
||||
$4864C09D,$5F1FD4DE,$6692E81B,$71E9FC58,$15889191,$02F385D2,$3B7EB917,$2C05AD54,
|
||||
$F3BC6285,$E4C776C6,$DD4A4A03,$CA315E40,$AE503389,$B92B27CA,$80A61B0F,$97DD0F4C,
|
||||
$B8C70348,$AFBC170B,$96312BCE,$814A3F8D,$E52B5244,$F2504607,$CBDD7AC2,$DCA66E81,
|
||||
$031FA150,$1464B513,$2DE989D6,$3A929D95,$5EF3F05C,$4988E41F,$7005D8DA,$677ECC99,
|
||||
$14074139,$037C557A,$3AF169BF,$2D8A7DFC,$49EB1035,$5E900476,$671D38B3,$70662CF0,
|
||||
$AFDFE321,$B8A4F762,$8129CBA7,$9652DFE4,$F233B22D,$E548A66E,$DCC59AAB,$CBBE8EE8,
|
||||
$3A3681EB,$2D4D95A8,$14C0A96D,$03BBBD2E,$67DAD0E7,$70A1C4A4,$492CF861,$5E57EC22,
|
||||
$81EE23F3,$969537B0,$AF180B75,$B8631F36,$DC0272FF,$CB7966BC,$F2F45A79,$E58F4E3A,
|
||||
$96F6C39A,$818DD7D9,$B800EB1C,$AF7BFF5F,$CB1A9296,$DC6186D5,$E5ECBA10,$F297AE53,
|
||||
$2D2E6182,$3A5575C1,$03D84904,$14A35D47,$70C2308E,$67B924CD,$5E341808,$494F0C4B
|
||||
),
|
||||
(
|
||||
$00000000,$EFC26B3E,$04F5D03D,$EB37BB03,$09EBA07A,$E629CB44,$0D1E7047,$E2DC1B79,
|
||||
$13D740F4,$FC152BCA,$172290C9,$F8E0FBF7,$1A3CE08E,$F5FE8BB0,$1EC930B3,$F10B5B8D,
|
||||
$27AE81E8,$C86CEAD6,$235B51D5,$CC993AEB,$2E452192,$C1874AAC,$2AB0F1AF,$C5729A91,
|
||||
$3479C11C,$DBBBAA22,$308C1121,$DF4E7A1F,$3D926166,$D2500A58,$3967B15B,$D6A5DA65,
|
||||
$4F5D03D0,$A09F68EE,$4BA8D3ED,$A46AB8D3,$46B6A3AA,$A974C894,$42437397,$AD8118A9,
|
||||
$5C8A4324,$B348281A,$587F9319,$B7BDF827,$5561E35E,$BAA38860,$51943363,$BE56585D,
|
||||
$68F38238,$8731E906,$6C065205,$83C4393B,$61182242,$8EDA497C,$65EDF27F,$8A2F9941,
|
||||
$7B24C2CC,$94E6A9F2,$7FD112F1,$901379CF,$72CF62B6,$9D0D0988,$763AB28B,$99F8D9B5,
|
||||
$9EBA07A0,$71786C9E,$9A4FD79D,$758DBCA3,$9751A7DA,$7893CCE4,$93A477E7,$7C661CD9,
|
||||
$8D6D4754,$62AF2C6A,$89989769,$665AFC57,$8486E72E,$6B448C10,$80733713,$6FB15C2D,
|
||||
$B9148648,$56D6ED76,$BDE15675,$52233D4B,$B0FF2632,$5F3D4D0C,$B40AF60F,$5BC89D31,
|
||||
$AAC3C6BC,$4501AD82,$AE361681,$41F47DBF,$A32866C6,$4CEA0DF8,$A7DDB6FB,$481FDDC5,
|
||||
$D1E70470,$3E256F4E,$D512D44D,$3AD0BF73,$D80CA40A,$37CECF34,$DCF97437,$333B1F09,
|
||||
$C2304484,$2DF22FBA,$C6C594B9,$2907FF87,$CBDBE4FE,$24198FC0,$CF2E34C3,$20EC5FFD,
|
||||
$F6498598,$198BEEA6,$F2BC55A5,$1D7E3E9B,$FFA225E2,$10604EDC,$FB57F5DF,$14959EE1,
|
||||
$E59EC56C,$0A5CAE52,$E16B1551,$0EA97E6F,$EC756516,$03B70E28,$E880B52B,$0742DE15,
|
||||
$E6050901,$09C7623F,$E2F0D93C,$0D32B202,$EFEEA97B,$002CC245,$EB1B7946,$04D91278,
|
||||
$F5D249F5,$1A1022CB,$F12799C8,$1EE5F2F6,$FC39E98F,$13FB82B1,$F8CC39B2,$170E528C,
|
||||
$C1AB88E9,$2E69E3D7,$C55E58D4,$2A9C33EA,$C8402893,$278243AD,$CCB5F8AE,$23779390,
|
||||
$D27CC81D,$3DBEA323,$D6891820,$394B731E,$DB976867,$34550359,$DF62B85A,$30A0D364,
|
||||
$A9580AD1,$469A61EF,$ADADDAEC,$426FB1D2,$A0B3AAAB,$4F71C195,$A4467A96,$4B8411A8,
|
||||
$BA8F4A25,$554D211B,$BE7A9A18,$51B8F126,$B364EA5F,$5CA68161,$B7913A62,$5853515C,
|
||||
$8EF68B39,$6134E007,$8A035B04,$65C1303A,$871D2B43,$68DF407D,$83E8FB7E,$6C2A9040,
|
||||
$9D21CBCD,$72E3A0F3,$99D41BF0,$761670CE,$94CA6BB7,$7B080089,$903FBB8A,$7FFDD0B4,
|
||||
$78BF0EA1,$977D659F,$7C4ADE9C,$9388B5A2,$7154AEDB,$9E96C5E5,$75A17EE6,$9A6315D8,
|
||||
$6B684E55,$84AA256B,$6F9D9E68,$805FF556,$6283EE2F,$8D418511,$66763E12,$89B4552C,
|
||||
$5F118F49,$B0D3E477,$5BE45F74,$B426344A,$56FA2F33,$B938440D,$520FFF0E,$BDCD9430,
|
||||
$4CC6CFBD,$A304A483,$48331F80,$A7F174BE,$452D6FC7,$AAEF04F9,$41D8BFFA,$AE1AD4C4,
|
||||
$37E20D71,$D820664F,$3317DD4C,$DCD5B672,$3E09AD0B,$D1CBC635,$3AFC7D36,$D53E1608,
|
||||
$24354D85,$CBF726BB,$20C09DB8,$CF02F686,$2DDEEDFF,$C21C86C1,$292B3DC2,$C6E956FC,
|
||||
$104C8C99,$FF8EE7A7,$14B95CA4,$FB7B379A,$19A72CE3,$F66547DD,$1D52FCDE,$F29097E0,
|
||||
$039BCC6D,$EC59A753,$076E1C50,$E8AC776E,$0A706C17,$E5B20729,$0E85BC2A,$E147D714
|
||||
),
|
||||
(
|
||||
$00000000,$C18EDFC0,$586CB9C1,$99E26601,$B0D97382,$7157AC42,$E8B5CA43,$293B1583,
|
||||
$BAC3E145,$7B4D3E85,$E2AF5884,$23218744,$0A1A92C7,$CB944D07,$52762B06,$93F8F4C6,
|
||||
$AEF6C4CB,$6F781B0B,$F69A7D0A,$3714A2CA,$1E2FB749,$DFA16889,$46430E88,$87CDD148,
|
||||
$1435258E,$D5BBFA4E,$4C599C4F,$8DD7438F,$A4EC560C,$656289CC,$FC80EFCD,$3D0E300D,
|
||||
$869C8FD7,$47125017,$DEF03616,$1F7EE9D6,$3645FC55,$F7CB2395,$6E294594,$AFA79A54,
|
||||
$3C5F6E92,$FDD1B152,$6433D753,$A5BD0893,$8C861D10,$4D08C2D0,$D4EAA4D1,$15647B11,
|
||||
$286A4B1C,$E9E494DC,$7006F2DD,$B1882D1D,$98B3389E,$593DE75E,$C0DF815F,$01515E9F,
|
||||
$92A9AA59,$53277599,$CAC51398,$0B4BCC58,$2270D9DB,$E3FE061B,$7A1C601A,$BB92BFDA,
|
||||
$D64819EF,$17C6C62F,$8E24A02E,$4FAA7FEE,$66916A6D,$A71FB5AD,$3EFDD3AC,$FF730C6C,
|
||||
$6C8BF8AA,$AD05276A,$34E7416B,$F5699EAB,$DC528B28,$1DDC54E8,$843E32E9,$45B0ED29,
|
||||
$78BEDD24,$B93002E4,$20D264E5,$E15CBB25,$C867AEA6,$09E97166,$900B1767,$5185C8A7,
|
||||
$C27D3C61,$03F3E3A1,$9A1185A0,$5B9F5A60,$72A44FE3,$B32A9023,$2AC8F622,$EB4629E2,
|
||||
$50D49638,$915A49F8,$08B82FF9,$C936F039,$E00DE5BA,$21833A7A,$B8615C7B,$79EF83BB,
|
||||
$EA17777D,$2B99A8BD,$B27BCEBC,$73F5117C,$5ACE04FF,$9B40DB3F,$02A2BD3E,$C32C62FE,
|
||||
$FE2252F3,$3FAC8D33,$A64EEB32,$67C034F2,$4EFB2171,$8F75FEB1,$169798B0,$D7194770,
|
||||
$44E1B3B6,$856F6C76,$1C8D0A77,$DD03D5B7,$F438C034,$35B61FF4,$AC5479F5,$6DDAA635,
|
||||
$77E1359F,$B66FEA5F,$2F8D8C5E,$EE03539E,$C738461D,$06B699DD,$9F54FFDC,$5EDA201C,
|
||||
$CD22D4DA,$0CAC0B1A,$954E6D1B,$54C0B2DB,$7DFBA758,$BC757898,$25971E99,$E419C159,
|
||||
$D917F154,$18992E94,$817B4895,$40F59755,$69CE82D6,$A8405D16,$31A23B17,$F02CE4D7,
|
||||
$63D41011,$A25ACFD1,$3BB8A9D0,$FA367610,$D30D6393,$1283BC53,$8B61DA52,$4AEF0592,
|
||||
$F17DBA48,$30F36588,$A9110389,$689FDC49,$41A4C9CA,$802A160A,$19C8700B,$D846AFCB,
|
||||
$4BBE5B0D,$8A3084CD,$13D2E2CC,$D25C3D0C,$FB67288F,$3AE9F74F,$A30B914E,$62854E8E,
|
||||
$5F8B7E83,$9E05A143,$07E7C742,$C6691882,$EF520D01,$2EDCD2C1,$B73EB4C0,$76B06B00,
|
||||
$E5489FC6,$24C64006,$BD242607,$7CAAF9C7,$5591EC44,$941F3384,$0DFD5585,$CC738A45,
|
||||
$A1A92C70,$6027F3B0,$F9C595B1,$384B4A71,$11705FF2,$D0FE8032,$491CE633,$889239F3,
|
||||
$1B6ACD35,$DAE412F5,$430674F4,$8288AB34,$ABB3BEB7,$6A3D6177,$F3DF0776,$3251D8B6,
|
||||
$0F5FE8BB,$CED1377B,$5733517A,$96BD8EBA,$BF869B39,$7E0844F9,$E7EA22F8,$2664FD38,
|
||||
$B59C09FE,$7412D63E,$EDF0B03F,$2C7E6FFF,$05457A7C,$C4CBA5BC,$5D29C3BD,$9CA71C7D,
|
||||
$2735A3A7,$E6BB7C67,$7F591A66,$BED7C5A6,$97ECD025,$56620FE5,$CF8069E4,$0E0EB624,
|
||||
$9DF642E2,$5C789D22,$C59AFB23,$041424E3,$2D2F3160,$ECA1EEA0,$754388A1,$B4CD5761,
|
||||
$89C3676C,$484DB8AC,$D1AFDEAD,$1021016D,$391A14EE,$F894CB2E,$6176AD2F,$A0F872EF,
|
||||
$33008629,$F28E59E9,$6B6C3FE8,$AAE2E028,$83D9F5AB,$42572A6B,$DBB54C6A,$1A3B93AA
|
||||
),
|
||||
(
|
||||
$00000000,$9BA54C6F,$EC3B9E9F,$779ED2F0,$03063B7F,$98A37710,$EF3DA5E0,$7498E98F,
|
||||
$060C76FE,$9DA93A91,$EA37E861,$7192A40E,$050A4D81,$9EAF01EE,$E931D31E,$72949F71,
|
||||
$0C18EDFC,$97BDA193,$E0237363,$7B863F0C,$0F1ED683,$94BB9AEC,$E325481C,$78800473,
|
||||
$0A149B02,$91B1D76D,$E62F059D,$7D8A49F2,$0912A07D,$92B7EC12,$E5293EE2,$7E8C728D,
|
||||
$1831DBF8,$83949797,$F40A4567,$6FAF0908,$1B37E087,$8092ACE8,$F70C7E18,$6CA93277,
|
||||
$1E3DAD06,$8598E169,$F2063399,$69A37FF6,$1D3B9679,$869EDA16,$F10008E6,$6AA54489,
|
||||
$14293604,$8F8C7A6B,$F812A89B,$63B7E4F4,$172F0D7B,$8C8A4114,$FB1493E4,$60B1DF8B,
|
||||
$122540FA,$89800C95,$FE1EDE65,$65BB920A,$11237B85,$8A8637EA,$FD18E51A,$66BDA975,
|
||||
$3063B7F0,$ABC6FB9F,$DC58296F,$47FD6500,$33658C8F,$A8C0C0E0,$DF5E1210,$44FB5E7F,
|
||||
$366FC10E,$ADCA8D61,$DA545F91,$41F113FE,$3569FA71,$AECCB61E,$D95264EE,$42F72881,
|
||||
$3C7B5A0C,$A7DE1663,$D040C493,$4BE588FC,$3F7D6173,$A4D82D1C,$D346FFEC,$48E3B383,
|
||||
$3A772CF2,$A1D2609D,$D64CB26D,$4DE9FE02,$3971178D,$A2D45BE2,$D54A8912,$4EEFC57D,
|
||||
$28526C08,$B3F72067,$C469F297,$5FCCBEF8,$2B545777,$B0F11B18,$C76FC9E8,$5CCA8587,
|
||||
$2E5E1AF6,$B5FB5699,$C2658469,$59C0C806,$2D582189,$B6FD6DE6,$C163BF16,$5AC6F379,
|
||||
$244A81F4,$BFEFCD9B,$C8711F6B,$53D45304,$274CBA8B,$BCE9F6E4,$CB772414,$50D2687B,
|
||||
$2246F70A,$B9E3BB65,$CE7D6995,$55D825FA,$2140CC75,$BAE5801A,$CD7B52EA,$56DE1E85,
|
||||
$60C76FE0,$FB62238F,$8CFCF17F,$1759BD10,$63C1549F,$F86418F0,$8FFACA00,$145F866F,
|
||||
$66CB191E,$FD6E5571,$8AF08781,$1155CBEE,$65CD2261,$FE686E0E,$89F6BCFE,$1253F091,
|
||||
$6CDF821C,$F77ACE73,$80E41C83,$1B4150EC,$6FD9B963,$F47CF50C,$83E227FC,$18476B93,
|
||||
$6AD3F4E2,$F176B88D,$86E86A7D,$1D4D2612,$69D5CF9D,$F27083F2,$85EE5102,$1E4B1D6D,
|
||||
$78F6B418,$E353F877,$94CD2A87,$0F6866E8,$7BF08F67,$E055C308,$97CB11F8,$0C6E5D97,
|
||||
$7EFAC2E6,$E55F8E89,$92C15C79,$09641016,$7DFCF999,$E659B5F6,$91C76706,$0A622B69,
|
||||
$74EE59E4,$EF4B158B,$98D5C77B,$03708B14,$77E8629B,$EC4D2EF4,$9BD3FC04,$0076B06B,
|
||||
$72E22F1A,$E9476375,$9ED9B185,$057CFDEA,$71E41465,$EA41580A,$9DDF8AFA,$067AC695,
|
||||
$50A4D810,$CB01947F,$BC9F468F,$273A0AE0,$53A2E36F,$C807AF00,$BF997DF0,$243C319F,
|
||||
$56A8AEEE,$CD0DE281,$BA933071,$21367C1E,$55AE9591,$CE0BD9FE,$B9950B0E,$22304761,
|
||||
$5CBC35EC,$C7197983,$B087AB73,$2B22E71C,$5FBA0E93,$C41F42FC,$B381900C,$2824DC63,
|
||||
$5AB04312,$C1150F7D,$B68BDD8D,$2D2E91E2,$59B6786D,$C2133402,$B58DE6F2,$2E28AA9D,
|
||||
$489503E8,$D3304F87,$A4AE9D77,$3F0BD118,$4B933897,$D03674F8,$A7A8A608,$3C0DEA67,
|
||||
$4E997516,$D53C3979,$A2A2EB89,$3907A7E6,$4D9F4E69,$D63A0206,$A1A4D0F6,$3A019C99,
|
||||
$448DEE14,$DF28A27B,$A8B6708B,$33133CE4,$478BD56B,$DC2E9904,$ABB04BF4,$3015079B,
|
||||
$428198EA,$D924D485,$AEBA0675,$351F4A1A,$4187A395,$DA22EFFA,$ADBC3D0A,$36197165
|
||||
),
|
||||
(
|
||||
$00000000,$DD96D985,$605CB54B,$BDCA6CCE,$C0B96A96,$1D2FB313,$A0E5DFDD,$7D730658,
|
||||
$5A03D36D,$87950AE8,$3A5F6626,$E7C9BFA3,$9ABAB9FB,$472C607E,$FAE60CB0,$2770D535,
|
||||
$B407A6DA,$69917F5F,$D45B1391,$09CDCA14,$74BECC4C,$A92815C9,$14E27907,$C974A082,
|
||||
$EE0475B7,$3392AC32,$8E58C0FC,$53CE1979,$2EBD1F21,$F32BC6A4,$4EE1AA6A,$937773EF,
|
||||
$B37E4BF5,$6EE89270,$D322FEBE,$0EB4273B,$73C72163,$AE51F8E6,$139B9428,$CE0D4DAD,
|
||||
$E97D9898,$34EB411D,$89212DD3,$54B7F456,$29C4F20E,$F4522B8B,$49984745,$940E9EC0,
|
||||
$0779ED2F,$DAEF34AA,$67255864,$BAB381E1,$C7C087B9,$1A565E3C,$A79C32F2,$7A0AEB77,
|
||||
$5D7A3E42,$80ECE7C7,$3D268B09,$E0B0528C,$9DC354D4,$40558D51,$FD9FE19F,$2009381A,
|
||||
$BD8D91AB,$601B482E,$DDD124E0,$0047FD65,$7D34FB3D,$A0A222B8,$1D684E76,$C0FE97F3,
|
||||
$E78E42C6,$3A189B43,$87D2F78D,$5A442E08,$27372850,$FAA1F1D5,$476B9D1B,$9AFD449E,
|
||||
$098A3771,$D41CEEF4,$69D6823A,$B4405BBF,$C9335DE7,$14A58462,$A96FE8AC,$74F93129,
|
||||
$5389E41C,$8E1F3D99,$33D55157,$EE4388D2,$93308E8A,$4EA6570F,$F36C3BC1,$2EFAE244,
|
||||
$0EF3DA5E,$D36503DB,$6EAF6F15,$B339B690,$CE4AB0C8,$13DC694D,$AE160583,$7380DC06,
|
||||
$54F00933,$8966D0B6,$34ACBC78,$E93A65FD,$944963A5,$49DFBA20,$F415D6EE,$29830F6B,
|
||||
$BAF47C84,$6762A501,$DAA8C9CF,$073E104A,$7A4D1612,$A7DBCF97,$1A11A359,$C7877ADC,
|
||||
$E0F7AFE9,$3D61766C,$80AB1AA2,$5D3DC327,$204EC57F,$FDD81CFA,$40127034,$9D84A9B1,
|
||||
$A06A2517,$7DFCFC92,$C036905C,$1DA049D9,$60D34F81,$BD459604,$008FFACA,$DD19234F,
|
||||
$FA69F67A,$27FF2FFF,$9A354331,$47A39AB4,$3AD09CEC,$E7464569,$5A8C29A7,$871AF022,
|
||||
$146D83CD,$C9FB5A48,$74313686,$A9A7EF03,$D4D4E95B,$094230DE,$B4885C10,$691E8595,
|
||||
$4E6E50A0,$93F88925,$2E32E5EB,$F3A43C6E,$8ED73A36,$5341E3B3,$EE8B8F7D,$331D56F8,
|
||||
$13146EE2,$CE82B767,$7348DBA9,$AEDE022C,$D3AD0474,$0E3BDDF1,$B3F1B13F,$6E6768BA,
|
||||
$4917BD8F,$9481640A,$294B08C4,$F4DDD141,$89AED719,$54380E9C,$E9F26252,$3464BBD7,
|
||||
$A713C838,$7A8511BD,$C74F7D73,$1AD9A4F6,$67AAA2AE,$BA3C7B2B,$07F617E5,$DA60CE60,
|
||||
$FD101B55,$2086C2D0,$9D4CAE1E,$40DA779B,$3DA971C3,$E03FA846,$5DF5C488,$80631D0D,
|
||||
$1DE7B4BC,$C0716D39,$7DBB01F7,$A02DD872,$DD5EDE2A,$00C807AF,$BD026B61,$6094B2E4,
|
||||
$47E467D1,$9A72BE54,$27B8D29A,$FA2E0B1F,$875D0D47,$5ACBD4C2,$E701B80C,$3A976189,
|
||||
$A9E01266,$7476CBE3,$C9BCA72D,$142A7EA8,$695978F0,$B4CFA175,$0905CDBB,$D493143E,
|
||||
$F3E3C10B,$2E75188E,$93BF7440,$4E29ADC5,$335AAB9D,$EECC7218,$53061ED6,$8E90C753,
|
||||
$AE99FF49,$730F26CC,$CEC54A02,$13539387,$6E2095DF,$B3B64C5A,$0E7C2094,$D3EAF911,
|
||||
$F49A2C24,$290CF5A1,$94C6996F,$495040EA,$342346B2,$E9B59F37,$547FF3F9,$89E92A7C,
|
||||
$1A9E5993,$C7088016,$7AC2ECD8,$A754355D,$DA273305,$07B1EA80,$BA7B864E,$67ED5FCB,
|
||||
$409D8AFE,$9D0B537B,$20C13FB5,$FD57E630,$8024E068,$5DB239ED,$E0785523,$3DEE8CA6
|
||||
),
|
||||
(
|
||||
$00000000,$9D0FE176,$E16EC4AD,$7C6125DB,$19AC8F1B,$84A36E6D,$F8C24BB6,$65CDAAC0,
|
||||
$33591E36,$AE56FF40,$D237DA9B,$4F383BED,$2AF5912D,$B7FA705B,$CB9B5580,$5694B4F6,
|
||||
$66B23C6C,$FBBDDD1A,$87DCF8C1,$1AD319B7,$7F1EB377,$E2115201,$9E7077DA,$037F96AC,
|
||||
$55EB225A,$C8E4C32C,$B485E6F7,$298A0781,$4C47AD41,$D1484C37,$AD2969EC,$3026889A,
|
||||
$CD6478D8,$506B99AE,$2C0ABC75,$B1055D03,$D4C8F7C3,$49C716B5,$35A6336E,$A8A9D218,
|
||||
$FE3D66EE,$63328798,$1F53A243,$825C4335,$E791E9F5,$7A9E0883,$06FF2D58,$9BF0CC2E,
|
||||
$ABD644B4,$36D9A5C2,$4AB88019,$D7B7616F,$B27ACBAF,$2F752AD9,$53140F02,$CE1BEE74,
|
||||
$988F5A82,$0580BBF4,$79E19E2F,$E4EE7F59,$8123D599,$1C2C34EF,$604D1134,$FD42F042,
|
||||
$41B9F7F1,$DCB61687,$A0D7335C,$3DD8D22A,$581578EA,$C51A999C,$B97BBC47,$24745D31,
|
||||
$72E0E9C7,$EFEF08B1,$938E2D6A,$0E81CC1C,$6B4C66DC,$F64387AA,$8A22A271,$172D4307,
|
||||
$270BCB9D,$BA042AEB,$C6650F30,$5B6AEE46,$3EA74486,$A3A8A5F0,$DFC9802B,$42C6615D,
|
||||
$1452D5AB,$895D34DD,$F53C1106,$6833F070,$0DFE5AB0,$90F1BBC6,$EC909E1D,$719F7F6B,
|
||||
$8CDD8F29,$11D26E5F,$6DB34B84,$F0BCAAF2,$95710032,$087EE144,$741FC49F,$E91025E9,
|
||||
$BF84911F,$228B7069,$5EEA55B2,$C3E5B4C4,$A6281E04,$3B27FF72,$4746DAA9,$DA493BDF,
|
||||
$EA6FB345,$77605233,$0B0177E8,$960E969E,$F3C33C5E,$6ECCDD28,$12ADF8F3,$8FA21985,
|
||||
$D936AD73,$44394C05,$385869DE,$A55788A8,$C09A2268,$5D95C31E,$21F4E6C5,$BCFB07B3,
|
||||
$8373EFE2,$1E7C0E94,$621D2B4F,$FF12CA39,$9ADF60F9,$07D0818F,$7BB1A454,$E6BE4522,
|
||||
$B02AF1D4,$2D2510A2,$51443579,$CC4BD40F,$A9867ECF,$34899FB9,$48E8BA62,$D5E75B14,
|
||||
$E5C1D38E,$78CE32F8,$04AF1723,$99A0F655,$FC6D5C95,$6162BDE3,$1D039838,$800C794E,
|
||||
$D698CDB8,$4B972CCE,$37F60915,$AAF9E863,$CF3442A3,$523BA3D5,$2E5A860E,$B3556778,
|
||||
$4E17973A,$D318764C,$AF795397,$3276B2E1,$57BB1821,$CAB4F957,$B6D5DC8C,$2BDA3DFA,
|
||||
$7D4E890C,$E041687A,$9C204DA1,$012FACD7,$64E20617,$F9EDE761,$858CC2BA,$188323CC,
|
||||
$28A5AB56,$B5AA4A20,$C9CB6FFB,$54C48E8D,$3109244D,$AC06C53B,$D067E0E0,$4D680196,
|
||||
$1BFCB560,$86F35416,$FA9271CD,$679D90BB,$02503A7B,$9F5FDB0D,$E33EFED6,$7E311FA0,
|
||||
$C2CA1813,$5FC5F965,$23A4DCBE,$BEAB3DC8,$DB669708,$4669767E,$3A0853A5,$A707B2D3,
|
||||
$F1930625,$6C9CE753,$10FDC288,$8DF223FE,$E83F893E,$75306848,$09514D93,$945EACE5,
|
||||
$A478247F,$3977C509,$4516E0D2,$D81901A4,$BDD4AB64,$20DB4A12,$5CBA6FC9,$C1B58EBF,
|
||||
$97213A49,$0A2EDB3F,$764FFEE4,$EB401F92,$8E8DB552,$13825424,$6FE371FF,$F2EC9089,
|
||||
$0FAE60CB,$92A181BD,$EEC0A466,$73CF4510,$1602EFD0,$8B0D0EA6,$F76C2B7D,$6A63CA0B,
|
||||
$3CF77EFD,$A1F89F8B,$DD99BA50,$40965B26,$255BF1E6,$B8541090,$C435354B,$593AD43D,
|
||||
$691C5CA7,$F413BDD1,$8872980A,$157D797C,$70B0D3BC,$EDBF32CA,$91DE1711,$0CD1F667,
|
||||
$5A454291,$C74AA3E7,$BB2B863C,$2624674A,$43E9CD8A,$DEE62CFC,$A2870927,$3F88E851
|
||||
),
|
||||
(
|
||||
$00000000,$B9FBDBE8,$A886B191,$117D6A79,$8A7C6563,$3387BE8B,$22FAD4F2,$9B010F1A,
|
||||
$CF89CC87,$7672176F,$670F7D16,$DEF4A6FE,$45F5A9E4,$FC0E720C,$ED731875,$5488C39D,
|
||||
$44629F4F,$FD9944A7,$ECE42EDE,$551FF536,$CE1EFA2C,$77E521C4,$66984BBD,$DF639055,
|
||||
$8BEB53C8,$32108820,$236DE259,$9A9639B1,$019736AB,$B86CED43,$A911873A,$10EA5CD2,
|
||||
$88C53E9E,$313EE576,$20438F0F,$99B854E7,$02B95BFD,$BB428015,$AA3FEA6C,$13C43184,
|
||||
$474CF219,$FEB729F1,$EFCA4388,$56319860,$CD30977A,$74CB4C92,$65B626EB,$DC4DFD03,
|
||||
$CCA7A1D1,$755C7A39,$64211040,$DDDACBA8,$46DBC4B2,$FF201F5A,$EE5D7523,$57A6AECB,
|
||||
$032E6D56,$BAD5B6BE,$ABA8DCC7,$1253072F,$89520835,$30A9D3DD,$21D4B9A4,$982F624C,
|
||||
$CAFB7B7D,$7300A095,$627DCAEC,$DB861104,$40871E1E,$F97CC5F6,$E801AF8F,$51FA7467,
|
||||
$0572B7FA,$BC896C12,$ADF4066B,$140FDD83,$8F0ED299,$36F50971,$27886308,$9E73B8E0,
|
||||
$8E99E432,$37623FDA,$261F55A3,$9FE48E4B,$04E58151,$BD1E5AB9,$AC6330C0,$1598EB28,
|
||||
$411028B5,$F8EBF35D,$E9969924,$506D42CC,$CB6C4DD6,$7297963E,$63EAFC47,$DA1127AF,
|
||||
$423E45E3,$FBC59E0B,$EAB8F472,$53432F9A,$C8422080,$71B9FB68,$60C49111,$D93F4AF9,
|
||||
$8DB78964,$344C528C,$253138F5,$9CCAE31D,$07CBEC07,$BE3037EF,$AF4D5D96,$16B6867E,
|
||||
$065CDAAC,$BFA70144,$AEDA6B3D,$1721B0D5,$8C20BFCF,$35DB6427,$24A60E5E,$9D5DD5B6,
|
||||
$C9D5162B,$702ECDC3,$6153A7BA,$D8A87C52,$43A97348,$FA52A8A0,$EB2FC2D9,$52D41931,
|
||||
$4E87F0BB,$F77C2B53,$E601412A,$5FFA9AC2,$C4FB95D8,$7D004E30,$6C7D2449,$D586FFA1,
|
||||
$810E3C3C,$38F5E7D4,$29888DAD,$90735645,$0B72595F,$B28982B7,$A3F4E8CE,$1A0F3326,
|
||||
$0AE56FF4,$B31EB41C,$A263DE65,$1B98058D,$80990A97,$3962D17F,$281FBB06,$91E460EE,
|
||||
$C56CA373,$7C97789B,$6DEA12E2,$D411C90A,$4F10C610,$F6EB1DF8,$E7967781,$5E6DAC69,
|
||||
$C642CE25,$7FB915CD,$6EC47FB4,$D73FA45C,$4C3EAB46,$F5C570AE,$E4B81AD7,$5D43C13F,
|
||||
$09CB02A2,$B030D94A,$A14DB333,$18B668DB,$83B767C1,$3A4CBC29,$2B31D650,$92CA0DB8,
|
||||
$8220516A,$3BDB8A82,$2AA6E0FB,$935D3B13,$085C3409,$B1A7EFE1,$A0DA8598,$19215E70,
|
||||
$4DA99DED,$F4524605,$E52F2C7C,$5CD4F794,$C7D5F88E,$7E2E2366,$6F53491F,$D6A892F7,
|
||||
$847C8BC6,$3D87502E,$2CFA3A57,$9501E1BF,$0E00EEA5,$B7FB354D,$A6865F34,$1F7D84DC,
|
||||
$4BF54741,$F20E9CA9,$E373F6D0,$5A882D38,$C1892222,$7872F9CA,$690F93B3,$D0F4485B,
|
||||
$C01E1489,$79E5CF61,$6898A518,$D1637EF0,$4A6271EA,$F399AA02,$E2E4C07B,$5B1F1B93,
|
||||
$0F97D80E,$B66C03E6,$A711699F,$1EEAB277,$85EBBD6D,$3C106685,$2D6D0CFC,$9496D714,
|
||||
$0CB9B558,$B5426EB0,$A43F04C9,$1DC4DF21,$86C5D03B,$3F3E0BD3,$2E4361AA,$97B8BA42,
|
||||
$C33079DF,$7ACBA237,$6BB6C84E,$D24D13A6,$494C1CBC,$F0B7C754,$E1CAAD2D,$583176C5,
|
||||
$48DB2A17,$F120F1FF,$E05D9B86,$59A6406E,$C2A74F74,$7B5C949C,$6A21FEE5,$D3DA250D,
|
||||
$8752E690,$3EA93D78,$2FD45701,$962F8CE9,$0D2E83F3,$B4D5581B,$A5A83262,$1C53E98A
|
||||
),
|
||||
(
|
||||
$00000000,$AE689191,$87A02563,$29C8B4F2,$D4314C87,$7A59DD16,$539169E4,$FDF9F875,
|
||||
$73139F4F,$DD7B0EDE,$F4B3BA2C,$5ADB2BBD,$A722D3C8,$094A4259,$2082F6AB,$8EEA673A,
|
||||
$E6273E9E,$484FAF0F,$61871BFD,$CFEF8A6C,$32167219,$9C7EE388,$B5B6577A,$1BDEC6EB,
|
||||
$9534A1D1,$3B5C3040,$129484B2,$BCFC1523,$4105ED56,$EF6D7CC7,$C6A5C835,$68CD59A4,
|
||||
$173F7B7D,$B957EAEC,$909F5E1E,$3EF7CF8F,$C30E37FA,$6D66A66B,$44AE1299,$EAC68308,
|
||||
$642CE432,$CA4475A3,$E38CC151,$4DE450C0,$B01DA8B5,$1E753924,$37BD8DD6,$99D51C47,
|
||||
$F11845E3,$5F70D472,$76B86080,$D8D0F111,$25290964,$8B4198F5,$A2892C07,$0CE1BD96,
|
||||
$820BDAAC,$2C634B3D,$05ABFFCF,$ABC36E5E,$563A962B,$F85207BA,$D19AB348,$7FF222D9,
|
||||
$2E7EF6FA,$8016676B,$A9DED399,$07B64208,$FA4FBA7D,$54272BEC,$7DEF9F1E,$D3870E8F,
|
||||
$5D6D69B5,$F305F824,$DACD4CD6,$74A5DD47,$895C2532,$2734B4A3,$0EFC0051,$A09491C0,
|
||||
$C859C864,$663159F5,$4FF9ED07,$E1917C96,$1C6884E3,$B2001572,$9BC8A180,$35A03011,
|
||||
$BB4A572B,$1522C6BA,$3CEA7248,$9282E3D9,$6F7B1BAC,$C1138A3D,$E8DB3ECF,$46B3AF5E,
|
||||
$39418D87,$97291C16,$BEE1A8E4,$10893975,$ED70C100,$43185091,$6AD0E463,$C4B875F2,
|
||||
$4A5212C8,$E43A8359,$CDF237AB,$639AA63A,$9E635E4F,$300BCFDE,$19C37B2C,$B7ABEABD,
|
||||
$DF66B319,$710E2288,$58C6967A,$F6AE07EB,$0B57FF9E,$A53F6E0F,$8CF7DAFD,$229F4B6C,
|
||||
$AC752C56,$021DBDC7,$2BD50935,$85BD98A4,$784460D1,$D62CF140,$FFE445B2,$518CD423,
|
||||
$5CFDEDF4,$F2957C65,$DB5DC897,$75355906,$88CCA173,$26A430E2,$0F6C8410,$A1041581,
|
||||
$2FEE72BB,$8186E32A,$A84E57D8,$0626C649,$FBDF3E3C,$55B7AFAD,$7C7F1B5F,$D2178ACE,
|
||||
$BADAD36A,$14B242FB,$3D7AF609,$93126798,$6EEB9FED,$C0830E7C,$E94BBA8E,$47232B1F,
|
||||
$C9C94C25,$67A1DDB4,$4E696946,$E001F8D7,$1DF800A2,$B3909133,$9A5825C1,$3430B450,
|
||||
$4BC29689,$E5AA0718,$CC62B3EA,$620A227B,$9FF3DA0E,$319B4B9F,$1853FF6D,$B63B6EFC,
|
||||
$38D109C6,$96B99857,$BF712CA5,$1119BD34,$ECE04541,$4288D4D0,$6B406022,$C528F1B3,
|
||||
$ADE5A817,$038D3986,$2A458D74,$842D1CE5,$79D4E490,$D7BC7501,$FE74C1F3,$501C5062,
|
||||
$DEF63758,$709EA6C9,$5956123B,$F73E83AA,$0AC77BDF,$A4AFEA4E,$8D675EBC,$230FCF2D,
|
||||
$72831B0E,$DCEB8A9F,$F5233E6D,$5B4BAFFC,$A6B25789,$08DAC618,$211272EA,$8F7AE37B,
|
||||
$01908441,$AFF815D0,$8630A122,$285830B3,$D5A1C8C6,$7BC95957,$5201EDA5,$FC697C34,
|
||||
$94A42590,$3ACCB401,$130400F3,$BD6C9162,$40956917,$EEFDF886,$C7354C74,$695DDDE5,
|
||||
$E7B7BADF,$49DF2B4E,$60179FBC,$CE7F0E2D,$3386F658,$9DEE67C9,$B426D33B,$1A4E42AA,
|
||||
$65BC6073,$CBD4F1E2,$E21C4510,$4C74D481,$B18D2CF4,$1FE5BD65,$362D0997,$98459806,
|
||||
$16AFFF3C,$B8C76EAD,$910FDA5F,$3F674BCE,$C29EB3BB,$6CF6222A,$453E96D8,$EB560749,
|
||||
$839B5EED,$2DF3CF7C,$043B7B8E,$AA53EA1F,$57AA126A,$F9C283FB,$D00A3709,$7E62A698,
|
||||
$F088C1A2,$5EE05033,$7728E4C1,$D9407550,$24B98D25,$8AD11CB4,$A319A846,$0D7139D7
|
||||
)
|
||||
);
|
||||
|
||||
/// compute CRC32 (Slicing-by-16 algorithm)
|
||||
function crc32_16bytes(const data: PByte; length: Integer; previousCrc32: Cardinal = 0): Cardinal;
|
||||
|
|
|
|||
|
|
@ -99,7 +99,6 @@ end;
|
|||
procedure TDCP_crc32.Init;
|
||||
begin
|
||||
Burn;
|
||||
crc32_init;
|
||||
CurrentHash:= 0;
|
||||
fInitialized:= true;
|
||||
end;
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ implementation
|
|||
|
||||
uses
|
||||
{$IF DEFINED(UNIX)}
|
||||
iconvenc_dyn
|
||||
iconvenc_dyn, LazUTF8
|
||||
{$IF DEFINED(DARWIN)}
|
||||
, MacOSAll, CocoaAll
|
||||
{$ELSE}
|
||||
|
|
@ -165,9 +165,11 @@ begin
|
|||
L:= Length(Source);
|
||||
if L = 0 then Exit('');
|
||||
SetLength(Result, L + 1);
|
||||
L:= Utf8ToUnicode(PUnicodeChar(Result), L + 1, PAnsiChar(Source), L);
|
||||
if L > 0 then
|
||||
SetLength(Result, L - 1)
|
||||
if (ConvertUTF8ToUTF16(PUnicodeChar(Result), L + 1, PAnsiChar(Source), L,
|
||||
[toInvalidCharToSymbol], L) = trNoError) then
|
||||
begin
|
||||
SetLength(Result, L - 1);
|
||||
end
|
||||
else begin
|
||||
SetLength(Result, 0);
|
||||
end;
|
||||
|
|
@ -194,9 +196,11 @@ begin
|
|||
L:= Length(Source);
|
||||
if (L = 0) then Exit('');
|
||||
SetLength(Result, L * 3);
|
||||
L:= UnicodeToUtf8(PAnsiChar(Result), Length(Result) + 1, PUnicodeChar(Source), L);
|
||||
if L > 0 then
|
||||
SetLength(Result, L - 1)
|
||||
if (ConvertUTF16ToUTF8(PAnsiChar(Result), Length(Result) + 1, PUnicodeChar(Source), L,
|
||||
[toInvalidCharToSymbol], L) = trNoError) then
|
||||
begin
|
||||
SetLength(Result, L - 1);
|
||||
end
|
||||
else begin
|
||||
SetLength(Result, 0);
|
||||
end;
|
||||
|
|
@ -282,7 +286,7 @@ var
|
|||
UnicodeResult: UnicodeString;
|
||||
begin
|
||||
if CeTryDecode(Source, CP_OEMCP, UnicodeResult) then
|
||||
Result:= UTF8Encode(UnicodeResult)
|
||||
Result:= CeUtf16ToUtf8(UnicodeResult)
|
||||
else
|
||||
Result:= Source;
|
||||
end;
|
||||
|
|
@ -291,7 +295,7 @@ function Utf82Oem(const Source: String): RawByteString;
|
|||
var
|
||||
AnsiResult: AnsiString;
|
||||
begin
|
||||
if CeTryEncode(UTF8Decode(Source), CP_OEMCP, False, AnsiResult) then
|
||||
if CeTryEncode(CeUtf8ToUtf16(Source), CP_OEMCP, False, AnsiResult) then
|
||||
Result:= AnsiResult
|
||||
else
|
||||
Result:= Source;
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
Date and time functions.
|
||||
|
||||
Copyright (C) 2009-2012 Przemysław Nagay (cobines@gmail.com)
|
||||
Copyright (C) 2017-2018 Alexander Koblov (alexx2000@mail.ru)
|
||||
Copyright (C) 2017-2022 Alexander Koblov (alexx2000@mail.ru)
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -31,7 +31,7 @@ uses
|
|||
{$IF DEFINED(MSWINDOWS)}
|
||||
, Windows
|
||||
{$ELSEIF DEFINED(UNIX)}
|
||||
, UnixUtil, DCUnix
|
||||
, Unix, UnixUtil, DCUnix
|
||||
{$ENDIF}
|
||||
;
|
||||
|
||||
|
|
@ -464,6 +464,7 @@ end;
|
|||
function DateTimeToUnixFileTime(DateTime : TDateTime): TUnixFileTime;
|
||||
{$IF DEFINED(UNIX)}
|
||||
var
|
||||
AUnixTime: TTime;
|
||||
ATime: TTimeStruct;
|
||||
Year, Month, Day: Word;
|
||||
Hour, Minute, Second, MilliSecond: Word;
|
||||
|
|
@ -484,10 +485,13 @@ begin
|
|||
ATime.tm_min:= Minute;
|
||||
ATime.tm_sec:= Second;
|
||||
|
||||
Result:= fpMkTime(@ATime);
|
||||
AUnixTime:= fpMkTime(@ATime);
|
||||
|
||||
if Result = DCBasicTypes.TFileTime(-1) then
|
||||
raise EDateOutOfRange.Create(DateTime)
|
||||
if (AUnixTime < 0) then
|
||||
Result:= 0
|
||||
else begin
|
||||
Result:= TUnixFileTime(AUnixTime);
|
||||
end;
|
||||
end;
|
||||
{$ELSE}
|
||||
var
|
||||
|
|
|
|||
|
|
@ -89,5 +89,6 @@ const
|
|||
BALLOON_KVM_MAGIC = $13661366;
|
||||
ZSMALLOC_MAGIC = $58295829;
|
||||
{ manually added }
|
||||
SMB2_MAGIC_NUMBER = $fe534d42;
|
||||
CIFS_MAGIC_NUMBER = $ff534d42;
|
||||
|
||||
|
|
|
|||
|
|
@ -237,6 +237,7 @@ function mbGetEnvironmentString(Index : Integer) : String;
|
|||
function mbExpandEnvironmentStrings(const FileName: String): String;
|
||||
function mbGetEnvironmentVariable(const sName: String): String;
|
||||
function mbSetEnvironmentVariable(const sName, sValue: String): Boolean;
|
||||
function mbUnsetEnvironmentVariable(const sName: String): Boolean;
|
||||
function mbSysErrorMessage: String; overload; inline;
|
||||
function mbSysErrorMessage(ErrorCode: Integer): String; overload;
|
||||
{en
|
||||
|
|
@ -617,10 +618,16 @@ function GetTempName(PathPrefix: String): String;
|
|||
const
|
||||
MaxTries = 100;
|
||||
var
|
||||
FileName: String;
|
||||
TryNumber: Integer = 0;
|
||||
begin
|
||||
if PathPrefix = '' then
|
||||
PathPrefix := GetTempDir;
|
||||
PathPrefix := GetTempDir
|
||||
else begin
|
||||
FileName:= ExtractFileName(PathPrefix);
|
||||
// Generated file name should be less the maximum file name length
|
||||
PathPrefix:= ExtractFilePath(PathPrefix) + UTF8Copy(FileName, 1, 48);
|
||||
end;
|
||||
repeat
|
||||
Result := PathPrefix + IntToStr(System.Random(MaxInt)); // or use CreateGUID()
|
||||
Inc(TryNumber);
|
||||
|
|
@ -1120,11 +1127,27 @@ end;
|
|||
function mbRenameFile(const OldName: String; NewName: String): Boolean;
|
||||
{$IFDEF MSWINDOWS}
|
||||
var
|
||||
wOldName,
|
||||
wNewName: UnicodeString;
|
||||
wTmpName,
|
||||
wOldName, wNewName: UnicodeString;
|
||||
begin
|
||||
wNewName:= UTF16LongName(NewName);
|
||||
wOldName:= UTF16LongName(OldName);
|
||||
// Workaround: Windows >= 10 can't change only filename case on the FAT
|
||||
if (Win32MajorVersion >= 10) and UnicodeSameText(wOldName, wNewName) then
|
||||
begin
|
||||
wTmpName:= GetFileSystemType(OldName);
|
||||
if UnicodeSameText('FAT32', wTmpName) or UnicodeSameText('exFAT', wTmpName) then
|
||||
begin
|
||||
wTmpName:= UTF16LongName(GetTempName(OldName));
|
||||
Result:= MoveFileExW(PWChar(wOldName), PWChar(wTmpName), 0);
|
||||
if Result then
|
||||
begin
|
||||
Result:= MoveFileExW(PWChar(wTmpName), PWChar(wNewName), 0);
|
||||
if not Result then MoveFileExW(PWChar(wTmpName), PWChar(wOldName), 0);
|
||||
end;
|
||||
Exit;
|
||||
end;
|
||||
end;
|
||||
Result:= MoveFileExW(PWChar(wOldName), PWChar(wNewName), MOVEFILE_REPLACE_EXISTING);
|
||||
end;
|
||||
{$ELSE}
|
||||
|
|
@ -1411,11 +1434,11 @@ end;
|
|||
function mbCompareFileNames(const FileName1, FileName2: String): Boolean; inline;
|
||||
{$IF DEFINED(WINDOWS) OR DEFINED(DARWIN)}
|
||||
begin
|
||||
Result:= (WideCompareText(UTF8Decode(FileName1), UTF8Decode(FileName2)) = 0);
|
||||
Result:= (WideCompareText(CeUtf8ToUtf16(FileName1), CeUtf8ToUtf16(FileName2)) = 0);
|
||||
end;
|
||||
{$ELSE}
|
||||
begin
|
||||
Result:= (WideCompareStr(UTF8Decode(FileName1), UTF8Decode(FileName2)) = 0);
|
||||
Result:= (WideCompareStr(CeUtf8ToUtf16(FileName1), CeUtf8ToUtf16(FileName2)) = 0);
|
||||
end;
|
||||
{$ENDIF}
|
||||
|
||||
|
|
@ -1531,7 +1554,7 @@ var
|
|||
wsResult: UnicodeString;
|
||||
begin
|
||||
SetLength(wsResult, MaxSmallInt + 1);
|
||||
dwSize:= ExpandEnvironmentStringsW(PWideChar(UTF8Decode(FileName)), PWideChar(wsResult), MaxSmallInt);
|
||||
dwSize:= ExpandEnvironmentStringsW(PWideChar(CeUtf8ToUtf16(FileName)), PWideChar(wsResult), MaxSmallInt);
|
||||
if (dwSize = 0) or (dwSize > MaxSmallInt) then
|
||||
Result:= FileName
|
||||
else begin
|
||||
|
|
@ -1569,7 +1592,7 @@ var
|
|||
dwResult: DWORD;
|
||||
begin
|
||||
Result := EmptyStr;
|
||||
wsName := UTF8Decode(sName);
|
||||
wsName := CeUtf8ToUtf16(sName);
|
||||
dwResult := GetEnvironmentVariableW(PWideChar(wsName), @smallBuf[0], Length(smallBuf));
|
||||
if dwResult > Length(smallBuf) then
|
||||
begin
|
||||
|
|
@ -1599,8 +1622,8 @@ var
|
|||
wsName,
|
||||
wsValue: UnicodeString;
|
||||
begin
|
||||
wsName:= UTF8Decode(sName);
|
||||
wsValue:= UTF8Decode(sValue);
|
||||
wsName:= CeUtf8ToUtf16(sName);
|
||||
wsValue:= CeUtf8ToUtf16(sValue);
|
||||
Result:= SetEnvironmentVariableW(PWideChar(wsName), PWideChar(wsValue));
|
||||
end;
|
||||
{$ELSE}
|
||||
|
|
@ -1609,6 +1632,20 @@ begin
|
|||
end;
|
||||
{$ENDIF}
|
||||
|
||||
function mbUnsetEnvironmentVariable(const sName: String): Boolean;
|
||||
{$IFDEF MSWINDOWS}
|
||||
var
|
||||
wsName: UnicodeString;
|
||||
begin
|
||||
wsName:= CeUtf8ToUtf16(sName);
|
||||
Result:= SetEnvironmentVariableW(PWideChar(wsName), NIL);
|
||||
end;
|
||||
{$ELSE}
|
||||
begin
|
||||
Result:= (unsetenv(PAnsiChar(CeUtf8ToSys(sName))) = 0);
|
||||
end;
|
||||
{$ENDIF}
|
||||
|
||||
function mbSysErrorMessage: String;
|
||||
begin
|
||||
Result := mbSysErrorMessage(GetLastOSError);
|
||||
|
|
@ -1664,7 +1701,7 @@ begin
|
|||
//Also, TC switch "CurrentDir" to their directory when loading them. So let's do the same.
|
||||
sRememberPath:=GetCurrentDir;
|
||||
SetCurrentDir(ExcludeTrailingPathDelimiter(ExtractFilePath(Name)));
|
||||
Result:= LoadLibraryW(PWideChar(UTF8Decode(Name)));
|
||||
Result:= LoadLibraryW(PWideChar(CeUtf8ToUtf16(Name)));
|
||||
finally
|
||||
SetCurrentDir(sRememberPath);
|
||||
end;
|
||||
|
|
@ -1787,7 +1824,7 @@ function CreateSymLink(const Path, LinkName: string) : Boolean;
|
|||
var
|
||||
wsPath, wsLinkName: UnicodeString;
|
||||
begin
|
||||
wsPath:= UTF8Decode(Path);
|
||||
wsPath:= CeUtf8ToUtf16(Path);
|
||||
wsLinkName:= UTF16LongName(LinkName);
|
||||
Result:= DCNtfsLinks.CreateSymlink(wsPath, wsLinkName);
|
||||
end;
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ interface
|
|||
uses
|
||||
Classes, SysUtils
|
||||
{$IF DEFINED(MSWINDOWS)}
|
||||
, Process, Windows, Pipes
|
||||
, Process, Windows, Pipes, DCConvertEncoding
|
||||
{$ELSEIF DEFINED(UNIX)}
|
||||
, BaseUnix, Process, UTF8Process, DCUnix
|
||||
{$ENDIF}
|
||||
|
|
@ -174,7 +174,7 @@ var
|
|||
begin
|
||||
EnvBlock := '';
|
||||
for I := 0 to List.Count - 1 do
|
||||
EnvBlock := EnvBlock + UTF8Decode(List[I]) + #0;
|
||||
EnvBlock := EnvBlock + CeUtf8ToUtf16(List[I]) + #0;
|
||||
EnvBlock := EnvBlock + #0;
|
||||
GetMem(Result, Length(EnvBlock) * SizeOf(Widechar));
|
||||
CopyMemory(Result, @EnvBlock[1], Length(EnvBlock) * SizeOf(Widechar));
|
||||
|
|
@ -304,20 +304,20 @@ begin
|
|||
raise EProcess.Create(SNoCommandline);
|
||||
if (ApplicationName <> '') then
|
||||
begin
|
||||
PName := PWideChar(UTF8Decode(ApplicationName));
|
||||
PCommandLine := PWideChar(UTF8Decode(CommandLine));
|
||||
PName := PWideChar(CeUtf8ToUtf16(ApplicationName));
|
||||
PCommandLine := PWideChar(CeUtf8ToUtf16(CommandLine));
|
||||
end
|
||||
else if (CommandLine <> '') then
|
||||
PCommandLine := PWideChar(UTF8Decode(CommandLine))
|
||||
PCommandLine := PWideChar(CeUtf8ToUtf16(CommandLine))
|
||||
else if (Executable <> '') then
|
||||
begin
|
||||
Cmd := MaybeQuoteIfNotQuoted(Executable);
|
||||
for I := 0 to Parameters.Count - 1 do
|
||||
Cmd := Cmd + ' ' + MaybeQuoteIfNotQuoted(Parameters[I]);
|
||||
PCommandLine := PWideChar(UTF8Decode(Cmd));
|
||||
PCommandLine := PWideChar(CeUtf8ToUtf16(Cmd));
|
||||
end;
|
||||
if CurrentDirectory <> '' then
|
||||
PDir := PWideChar(UTF8Decode(CurrentDirectory));
|
||||
PDir := PWideChar(CeUtf8ToUtf16(CurrentDirectory));
|
||||
if Environment.Count <> 0 then
|
||||
FEnv := StringsToPWideChars(Environment)
|
||||
else
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ unit DCStrUtils;
|
|||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, DCBasicTypes,LazUtf8;
|
||||
Classes, SysUtils, DCBasicTypes, LazUtf8;
|
||||
|
||||
const
|
||||
NoQuotesSpecialChars = [' ', '"', '''', '(', ')', ':', '&', '!', '$', '*', '?', '=', '`', '\', '|', ';', #10];
|
||||
|
|
@ -356,7 +356,7 @@ function EscapeNoQuotes(const Str: String): String;
|
|||
implementation
|
||||
|
||||
uses
|
||||
DCOSUtils, StrUtils;
|
||||
DCOSUtils, DCConvertEncoding, StrUtils;
|
||||
|
||||
function NormalizePathDelimiters(const Path: String): String;
|
||||
{$IFDEF UNIX}
|
||||
|
|
@ -766,7 +766,7 @@ var
|
|||
L: Integer;
|
||||
begin
|
||||
L:= Length(Path);
|
||||
if (L > 1) and (Path[L] in AllowDirectorySeparators) then
|
||||
if (L > 1) and (Path[L] in AllowDirectorySeparators) and (Path[L - 1] <> DriveSeparator) then
|
||||
Result:= Copy(Path, 1, L - 1)
|
||||
else
|
||||
Result:= Path;
|
||||
|
|
@ -835,20 +835,24 @@ end;
|
|||
|
||||
function ApplyRenameMask(aFileName: String; NameMask: String; ExtMask: String): String;
|
||||
|
||||
function ApplyMask(const TargetString: String; Mask: String): String;
|
||||
function ApplyMask(const TargetString, Mask: String): String;
|
||||
var
|
||||
i:Integer;
|
||||
I: Integer;
|
||||
begin
|
||||
Result:='';
|
||||
for i:=1 to Length(Mask) do
|
||||
Result:= EmptyStr;
|
||||
for I:= 1 to Length(Mask) do
|
||||
begin
|
||||
if Mask[i]= '?' then
|
||||
Result:=Result + TargetString[i]
|
||||
if Mask[I] = '?' then
|
||||
begin
|
||||
if I <= Length(TargetString) then
|
||||
Result:= Result + TargetString[I]
|
||||
else
|
||||
Exit(TargetString);
|
||||
end
|
||||
else if Mask[I] = '*' then
|
||||
Result:= Result + Copy(TargetString, I, Length(TargetString) - I + 1)
|
||||
else
|
||||
if Mask[i]= '*' then
|
||||
Result:=Result + Copy(TargetString, i, Length(TargetString) - i + 1)
|
||||
else
|
||||
Result:=Result + Mask[i];
|
||||
Result:= Result + Mask[I];
|
||||
end;
|
||||
end;
|
||||
|
||||
|
|
@ -965,7 +969,7 @@ function mbCompareText(const s1, s2: String): PtrInt; inline;
|
|||
begin
|
||||
// From 0.9.31 LazUtils can be used but this package does not exist in 0.9.30.
|
||||
// Result := LazUTF8.UTF8CompareText(s1, s2);
|
||||
Result := WideCompareText(UTF8Decode(s1), UTF8Decode(s2));
|
||||
Result := WideCompareText(CeUtf8ToUtf16(s1), CeUtf8ToUtf16(s2));
|
||||
end;
|
||||
|
||||
function StrNewW(const mbString: String): PWideChar;
|
||||
|
|
@ -974,7 +978,7 @@ var
|
|||
iLength: PtrInt;
|
||||
begin
|
||||
Result:= nil;
|
||||
wsString:= UTF8Decode(mbString);
|
||||
wsString:= CeUtf8ToUtf16(mbString);
|
||||
iLength:= (Length(wsString) * SizeOf(WideChar)) + 1;
|
||||
Result:= GetMem(iLength);
|
||||
if Result <> nil then
|
||||
|
|
@ -1041,13 +1045,15 @@ end;
|
|||
|
||||
function StrBegins(const StringToCheck, StringToMatch: String): Boolean;
|
||||
begin
|
||||
Result := (Length(StringToCheck) >= Length(StringToMatch)) and
|
||||
Result := (Length(StringToMatch) > 0) and
|
||||
(Length(StringToCheck) >= Length(StringToMatch)) and
|
||||
(CompareChar(StringToCheck[1], StringToMatch[1], Length(StringToMatch)) = 0);
|
||||
end;
|
||||
|
||||
function StrEnds(const StringToCheck, StringToMatch: String): Boolean;
|
||||
begin
|
||||
Result := (Length(StringToCheck) >= Length(StringToMatch)) and
|
||||
Result := (Length(StringToMatch) > 0) and
|
||||
(Length(StringToCheck) >= Length(StringToMatch)) and
|
||||
(CompareChar(StringToCheck[1 + Length(StringToCheck) - Length(StringToMatch)],
|
||||
StringToMatch[1], Length(StringToMatch)) = 0);
|
||||
end;
|
||||
|
|
|
|||
|
|
@ -48,8 +48,16 @@ const
|
|||
|
||||
type
|
||||
{$IF DEFINED(LINUX)}
|
||||
TUnixTime = {$IFDEF CPUAARCH64}Int64{$ELSE}UIntPtr{$ENDIF};
|
||||
TUnixMode = Cardinal;
|
||||
TUnixTime =
|
||||
{$IF DEFINED(CPUAARCH64)}
|
||||
Int64
|
||||
{$ELSEIF DEFINED(CPUMIPS)}
|
||||
LongInt
|
||||
{$ELSE}UIntPtr{$ENDIF};
|
||||
TUnixMode =
|
||||
{$IF DEFINED(CPUPOWERPC)}
|
||||
LongInt
|
||||
{$ELSE}Cardinal{$ENDIF};
|
||||
{$ELSE}
|
||||
TUnixTime = TTime;
|
||||
TUnixMode = TMode;
|
||||
|
|
@ -106,6 +114,12 @@ function getenv(name: PAnsiChar): PAnsiChar; cdecl; external clib;
|
|||
insufficient space in the environment)
|
||||
}
|
||||
function setenv(const name, value: PAnsiChar; overwrite: cint): cint; cdecl; external clib;
|
||||
{en
|
||||
Remove an environment variable
|
||||
@param(name Environment variable name)
|
||||
@returns(The function returns zero on success, or -1 on error)
|
||||
}
|
||||
function unsetenv(const name: PAnsiChar): cint; cdecl; external clib;
|
||||
|
||||
function FileLock(Handle: System.THandle; Mode: cInt): System.THandle;
|
||||
|
||||
|
|
@ -213,7 +227,11 @@ begin
|
|||
{$IFDEF LINUX}
|
||||
if (fpFStatFS(Handle, @Sbfs) = 0) then
|
||||
begin
|
||||
if (Sbfs.fstype = CIFS_MAGIC_NUMBER) then Exit;
|
||||
case UInt32(Sbfs.fstype) of
|
||||
SMB_SUPER_MAGIC,
|
||||
SMB2_MAGIC_NUMBER,
|
||||
CIFS_MAGIC_NUMBER: Exit;
|
||||
end;
|
||||
end;
|
||||
{$ENDIF}
|
||||
repeat
|
||||
|
|
|
|||
|
|
@ -56,12 +56,16 @@ function mbFileCopyXattr(const Source, Target: String): Boolean;
|
|||
Retrieves the final path for the specified file
|
||||
}
|
||||
function GetFinalPathNameByHandle(hFile: THandle): UnicodeString;
|
||||
{en
|
||||
Retrieves the file system type name
|
||||
}
|
||||
function GetFileSystemType(const Path: String): UnicodeString;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
SysUtils, JwaAclApi, JwaWinNT, JwaAccCtrl, JwaWinBase, JwaWinType, JwaNative,
|
||||
JwaNtStatus;
|
||||
JwaNtStatus, DCConvertEncoding;
|
||||
|
||||
var
|
||||
GetFinalPathNameByHandleW: function(hFile: HANDLE; lpszFilePath: LPWSTR; cchFilePath: DWORD; dwFlags: DWORD): DWORD; stdcall;
|
||||
|
|
@ -72,9 +76,9 @@ var
|
|||
Temp: PWideChar;
|
||||
begin
|
||||
if Pos('\\', FileName) = 0 then
|
||||
Result := '\\?\' + UTF8Decode(FileName)
|
||||
Result := '\\?\' + CeUtf8ToUtf16(FileName)
|
||||
else begin
|
||||
Result := '\\?\UNC\' + UTF8Decode(Copy(FileName, 3, MaxInt));
|
||||
Result := '\\?\UNC\' + CeUtf8ToUtf16(Copy(FileName, 3, MaxInt));
|
||||
end;
|
||||
Temp := Pointer(Result) + 4;
|
||||
while Temp^ <> #0 do
|
||||
|
|
@ -131,7 +135,7 @@ begin
|
|||
CloseHandle(ProcessToken);
|
||||
end;
|
||||
end;
|
||||
Result:= GetNamedSecurityInfoW(PWideChar(UTF8Decode(Source)), SE_FILE_OBJECT, SecurityInfo,
|
||||
Result:= GetNamedSecurityInfoW(PWideChar(CeUtf8ToUtf16(Source)), SE_FILE_OBJECT, SecurityInfo,
|
||||
@SidOwner, @SidGroup, @Dacl, @Sacl, SecDescPtr) = ERROR_SUCCESS;
|
||||
if Result then
|
||||
begin
|
||||
|
|
@ -149,7 +153,7 @@ begin
|
|||
else begin
|
||||
SecurityInfo:= SecurityInfo or UNPROTECTED_SACL_SECURITY_INFORMATION;
|
||||
end;
|
||||
Result:= SetNamedSecurityInfoW(PWideChar(UTF8Decode(Target)), SE_FILE_OBJECT,
|
||||
Result:= SetNamedSecurityInfoW(PWideChar(CeUtf8ToUtf16(Target)), SE_FILE_OBJECT,
|
||||
SecurityInfo, SidOwner, SidGroup, Dacl, Sacl) = ERROR_SUCCESS;
|
||||
end;
|
||||
{$PUSH}{$HINTS OFF}{$WARNINGS OFF}
|
||||
|
|
@ -230,6 +234,20 @@ begin
|
|||
end;
|
||||
end;
|
||||
|
||||
function GetFileSystemType(const Path: String): UnicodeString;
|
||||
var
|
||||
lpFileSystemFlags: DWORD = 0;
|
||||
lpMaximumComponentLength: DWORD = 0;
|
||||
lpFileSystemNameBuffer: array [Byte] of WideChar;
|
||||
begin
|
||||
if GetVolumeInformationW(PWideChar(CeUtf8ToUtf16(ExtractFileDrive(Path)) + PathDelim),
|
||||
nil, 0, nil, lpMaximumComponentLength, lpFileSystemFlags,
|
||||
lpFileSystemNameBuffer, SizeOf(lpFileSystemNameBuffer)) then
|
||||
Result:= lpFileSystemNameBuffer
|
||||
else
|
||||
Result:= EmptyWideStr;
|
||||
end;
|
||||
|
||||
procedure Initialize;
|
||||
begin
|
||||
if Win32MajorVersion < 6 then
|
||||
|
|
|
|||
|
|
@ -525,7 +525,7 @@ begin
|
|||
try
|
||||
if FileStream.Size = 0 then
|
||||
raise EXmlConfigEmpty.Create('');
|
||||
ReadXMLFile(TmpDoc, FileStream, FilenameToURI(AFilename));
|
||||
ReadXMLFile(TmpDoc, FileStream, FilenameToURI(AFilename), []);
|
||||
if TmpDoc.DocumentElement.NodeName <> ApplicationName then
|
||||
raise EXMLReadError.Create('Root element is not <' + ApplicationName + '>.');
|
||||
FDoc.Free;
|
||||
|
|
@ -541,7 +541,7 @@ var
|
|||
begin
|
||||
if AStream.Size = 0 then
|
||||
raise EXmlConfigEmpty.Create('');
|
||||
ReadXMLFile(TmpDoc, AStream);
|
||||
ReadXMLFile(TmpDoc, AStream, []);
|
||||
FDoc.Free;
|
||||
FDoc := TmpDoc;
|
||||
end;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
{
|
||||
Copyright (C) 2009 Laurent Jacques
|
||||
Copyright (C) 2012-2022 Alexander Koblov
|
||||
|
||||
This source is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free
|
||||
|
|
@ -15,9 +16,8 @@
|
|||
at <http://www.gnu.org/copyleft/gpl.html>. You can also obtain it by writing
|
||||
to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
|
||||
MA 02111-1307, USA.
|
||||
|
||||
Version 1.4
|
||||
}
|
||||
|
||||
unit GifAnim;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
|
@ -153,6 +153,7 @@ type
|
|||
public
|
||||
constructor Create(const FileName: string);
|
||||
destructor Destroy; override;
|
||||
function LoadFromStream(GifStream: TStream; var AGifList: TGifList): boolean;
|
||||
function LoadAllBitmap(var AGifList: TGifList): boolean;
|
||||
function LoadFromLazarusResource(const ResName: String; var AGifList: TGifList): boolean;
|
||||
function LoadFirstBitmap(var ABitmap: TBitmap): boolean;
|
||||
|
|
@ -565,22 +566,17 @@ begin
|
|||
FPalette.Free;
|
||||
end;
|
||||
|
||||
function TGifLoader.LoadAllBitmap(var AGifList: TGifList): boolean;
|
||||
function TGifLoader.LoadFromStream(GifStream: TStream; var AGifList: TGifList): boolean;
|
||||
var
|
||||
GifStream: TMemoryStream;
|
||||
Introducer: byte;
|
||||
FPImage: TLazIntfImage;
|
||||
ImgFormatDescription: TRawImageDescription;
|
||||
GifBitmap: TGifImage;
|
||||
begin
|
||||
Result := False;
|
||||
if not FileExists(FFileName) then
|
||||
exit;
|
||||
if not assigned(AGifList) then
|
||||
if not Assigned(AGifList) then
|
||||
AGifList := TGifList.Create(True);
|
||||
|
||||
GifStream := TMemoryStream.Create;
|
||||
GifStream.LoadFromFile(FFileName);
|
||||
GifStream.Position := 0;
|
||||
|
||||
ReadHeader(GifStream);
|
||||
|
|
@ -590,7 +586,7 @@ begin
|
|||
// skip first block extention if exist
|
||||
repeat
|
||||
Introducer := SkipBlock(GifStream);
|
||||
until (Introducer = ID_IMAGE_DESCRIPTOR) or (Introducer = ID_TRAILER);
|
||||
until (Introducer = ID_IMAGE_DESCRIPTOR) or (Introducer = ID_TRAILER) or (GifStream.Position = GifStream.Size);
|
||||
|
||||
repeat
|
||||
ReadGifBitmap(GifStream);
|
||||
|
|
@ -620,70 +616,40 @@ begin
|
|||
|
||||
repeat
|
||||
Introducer := SkipBlock(GifStream);
|
||||
until (Introducer = ID_IMAGE_DESCRIPTOR) or (Introducer = ID_TRAILER);
|
||||
until (Introducer = ID_IMAGE_DESCRIPTOR) or (Introducer = ID_TRAILER) or (GifStream.Position = GifStream.Size);
|
||||
|
||||
until (Introducer = ID_TRAILER);
|
||||
GifStream.Free;
|
||||
until (Introducer = ID_TRAILER) or (GifStream.Position = GifStream.Size);
|
||||
Result := True;
|
||||
end;
|
||||
|
||||
function TGifLoader.LoadAllBitmap(var AGifList: TGifList): boolean;
|
||||
var
|
||||
GifStream: TMemoryStream;
|
||||
begin
|
||||
Result := False;
|
||||
if not FileExists(FFileName) then
|
||||
Exit;
|
||||
|
||||
GifStream := TMemoryStream.Create;
|
||||
try
|
||||
GifStream.LoadFromFile(FFileName);
|
||||
Result := LoadFromStream(GifStream, AGifList);
|
||||
finally
|
||||
GifStream.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TGifLoader.LoadFromLazarusResource(const ResName: String; var AGifList: TGifList): boolean;
|
||||
var
|
||||
GifStream: TLazarusResourceStream;
|
||||
Introducer: byte;
|
||||
FPImage: TLazIntfImage;
|
||||
ImgFormatDescription: TRawImageDescription;
|
||||
GifBitmap: TGifImage;
|
||||
begin
|
||||
Result := False;
|
||||
if not assigned(AGifList) then
|
||||
AGifList := TGifList.Create(True);
|
||||
|
||||
GifStream := TLazarusResourceStream.Create(ResName, nil);
|
||||
GifStream.Position := 0;
|
||||
|
||||
ReadHeader(GifStream);
|
||||
if (FGifHeader.Version <> '89a') then
|
||||
Exit;
|
||||
|
||||
// skip first block extention if exist
|
||||
repeat
|
||||
Introducer := SkipBlock(GifStream);
|
||||
until (Introducer = ID_IMAGE_DESCRIPTOR) or (Introducer = ID_TRAILER);
|
||||
|
||||
repeat
|
||||
ReadGifBitmap(GifStream);
|
||||
// decode Gif bitmap in Scanline buffer
|
||||
ReadScanLine(GifStream);
|
||||
// Create temp Fp Image for put scanline pixel
|
||||
FPImage := TLazIntfImage.Create(FLocalWidth, FLocalHeight);
|
||||
ImgFormatDescription.Init_BPP32_B8G8R8A8_BIO_TTB(FLocalWidth,
|
||||
FLocalHeight);
|
||||
FPImage.DataDescription := ImgFormatDescription;
|
||||
|
||||
WriteScanLine(FPImage);
|
||||
|
||||
GifBitmap := TGifImage.Create;
|
||||
GifBitmap.FBitmap.LoadFromIntfImage(FPImage);
|
||||
GifBitmap.FPosX := FGifDescriptor.Left;
|
||||
GifBitmap.FPosY := FGifDescriptor.Top;
|
||||
GifBitmap.FMethod := FDisposalMethod;
|
||||
GifBitmap.FDelay := FGifGraphicsCtrlExt.DelayTime;
|
||||
|
||||
AGifList.Add(GifBitmap);
|
||||
|
||||
FPImage.Free;
|
||||
FreeMem(FScanLine, FLineSize);
|
||||
// reset FGifUseGraphCtrlExt flag
|
||||
FGifUseGraphCtrlExt := False;
|
||||
|
||||
repeat
|
||||
Introducer := SkipBlock(GifStream);
|
||||
until (Introducer = ID_IMAGE_DESCRIPTOR) or (Introducer = ID_TRAILER);
|
||||
|
||||
until (Introducer = ID_TRAILER);
|
||||
GifStream.Free;
|
||||
Result := True;
|
||||
try
|
||||
Result := LoadFromStream(GifStream, AGifList);
|
||||
finally
|
||||
GifStream.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TGifLoader.LoadFirstBitmap(var ABitmap: TBitmap): boolean;
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
"/>
|
||||
<License Value="GPL
|
||||
"/>
|
||||
<Version Major="1" Minor="4"/>
|
||||
<Version Major="1" Minor="5"/>
|
||||
<Files Count="2">
|
||||
<Item1>
|
||||
<Filename Value="gifanim.pas"/>
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@
|
|||
|
||||
contributors:
|
||||
|
||||
Copyright (C) 2006-2019 Alexander Koblov (alexx2000@mail.ru)
|
||||
Copyright (C) 2006-2023 Alexander Koblov (alexx2000@mail.ru)
|
||||
|
||||
|
||||
TODO:
|
||||
|
|
@ -152,7 +152,9 @@ type
|
|||
veCp950,
|
||||
veIso88591,
|
||||
veIso88592,
|
||||
veKoi8,
|
||||
veKoi8r,
|
||||
veKoi8u,
|
||||
veKoi8ru,
|
||||
veUcs2le,
|
||||
veUcs2be,
|
||||
veUtf16le,
|
||||
|
|
@ -189,7 +191,9 @@ const
|
|||
'CP950',
|
||||
'ISO-8859-1',
|
||||
'ISO-8859-2',
|
||||
'KOI-8',
|
||||
'KOI8-R',
|
||||
'KOI8-U',
|
||||
'KOI8-RU',
|
||||
'UCS-2LE',
|
||||
'UCS-2BE',
|
||||
'UTF-16LE',
|
||||
|
|
@ -233,7 +237,7 @@ type
|
|||
FMouseBlockBeg: PtrInt;
|
||||
FMouseBlockSide: TCharSide;
|
||||
FSelecting: Boolean;
|
||||
FTextWidth: Integer; // max char count or width in window
|
||||
FTextWidth: Integer; // max char count or width in window
|
||||
FTextHeight: Integer; // measured values of font, rec calc at font changed
|
||||
FScrollBarVert: TScrollBar;
|
||||
FScrollBarHorz: TScrollBar;
|
||||
|
|
@ -244,6 +248,8 @@ type
|
|||
FColCount: Integer;
|
||||
FTabSpaces: Integer; // tab width in spaces
|
||||
FMaxTextWidth: Integer; // maximum of chars on one line unwrapped text (max 16384)
|
||||
FExtraLineSpacing: Integer;
|
||||
FLeftMargin: Integer;
|
||||
FOnGuessEncoding: TGuessEncodingEvent;
|
||||
FOnFileOpen: TFileOpenEvent;
|
||||
FCaretVisible: Boolean;
|
||||
|
|
@ -275,7 +281,7 @@ type
|
|||
{en
|
||||
Returns how many lines (given current FTextHeight) will fit into the window.
|
||||
}
|
||||
function GetClientHeightInLines: Integer; inline;
|
||||
function GetClientHeightInLines(Whole: Boolean = True): Integer; inline;
|
||||
|
||||
{en
|
||||
Calculates how many lines can be displayed from given position.
|
||||
|
|
@ -508,6 +514,8 @@ type
|
|||
property ColCount: Integer Read FColCount Write SetColCount;
|
||||
property MaxTextWidth: Integer read FMaxTextWidth write SetMaxTextWidth;
|
||||
property TabSpaces: Integer read FTabSpaces write SetTabSpaces;
|
||||
property LeftMargin: Integer read FLeftMargin write FLeftMargin;
|
||||
property ExtraLineSpacing: Integer read FExtraLineSpacing write FExtraLineSpacing;
|
||||
property OnGuessEncoding: TGuessEncodingEvent Read FOnGuessEncoding Write FOnGuessEncoding;
|
||||
property OnFileOpen: TFileOpenEvent read FOnFileOpen write FOnFileOpen;
|
||||
|
||||
|
|
@ -539,7 +547,7 @@ procedure Register;
|
|||
implementation
|
||||
|
||||
uses
|
||||
LCLType, Graphics, Forms, LCLProc, Clipbrd, LConvEncoding,
|
||||
Math, LCLType, Graphics, Forms, LCLProc, Clipbrd, LConvEncoding,
|
||||
DCUnicodeUtils, LCLIntf, LazUTF8, DCOSUtils , DCConvertEncoding
|
||||
{$IF DEFINED(UNIX)}
|
||||
, BaseUnix, Unix, DCUnix
|
||||
|
|
@ -549,7 +557,6 @@ uses
|
|||
|
||||
|
||||
const
|
||||
//cTextWidth = 80; // wrap on 80 chars
|
||||
cBinWidth = 80;
|
||||
|
||||
// These strings must be Ascii only.
|
||||
|
|
@ -609,6 +616,7 @@ begin
|
|||
FTextHeight:= 14; // dummy value
|
||||
FColCount := 1;
|
||||
FTabSpaces := 8;
|
||||
FLeftMargin := 4;
|
||||
FMaxTextWidth := 1024;
|
||||
|
||||
FLineList := TPtrIntList.Create;
|
||||
|
|
@ -693,7 +701,7 @@ begin
|
|||
Canvas.FillRect(ClientRect);
|
||||
{$ENDIF}
|
||||
Canvas.Brush.Style := bsClear;
|
||||
FTextHeight := Canvas.TextHeight('Wg') + 2;
|
||||
FTextHeight := Canvas.TextHeight('Wg') + FExtraLineSpacing;
|
||||
|
||||
if FViewerControlMode = vcmBook then
|
||||
FTextWidth := ((ClientWidth - (Canvas.TextWidth('W') * FColCount)) div FColCount)
|
||||
|
|
@ -863,9 +871,11 @@ procedure TViewerControl.FontChanged(Sender: TObject);
|
|||
begin
|
||||
inherited FontChanged(Sender);
|
||||
|
||||
Canvas.Font := Self.Font;
|
||||
FTextHeight := Canvas.TextHeight('Wg') + 2;
|
||||
if FShowCaret then LCLIntf.CreateCaret(Handle, 0, 2, FTextHeight);
|
||||
if HandleAllocated then
|
||||
begin
|
||||
FTextHeight := Canvas.TextHeight('Wg') + FExtraLineSpacing;
|
||||
if FShowCaret then LCLIntf.CreateCaret(Handle, 0, 2, FTextHeight);
|
||||
end;
|
||||
end;
|
||||
|
||||
function TViewerControl.CalcTextLineLength(var iStartPos: PtrInt; const aLimit: Int64; out DataLength: PtrInt): Integer;
|
||||
|
|
@ -1666,8 +1676,9 @@ end;
|
|||
|
||||
procedure TViewerControl.WriteText;
|
||||
var
|
||||
yIndex, xIndex, w, scrollTab, i: Integer;
|
||||
yIndex, xIndex, w, i: Integer;
|
||||
LineStart, iPos: PtrInt;
|
||||
CharLenInBytes: Integer;
|
||||
DataLength: PtrInt;
|
||||
sText: String;
|
||||
begin
|
||||
|
|
@ -1680,7 +1691,7 @@ begin
|
|||
|
||||
for xIndex := 0 to FColCount-1 do
|
||||
begin
|
||||
for yIndex := 0 to GetClientHeightInLines - 1 do
|
||||
for yIndex := 0 to GetClientHeightInLines(False) - 1 do
|
||||
begin
|
||||
if iPos >= FHighLimit then
|
||||
Break;
|
||||
|
|
@ -1694,15 +1705,19 @@ begin
|
|||
|
||||
if DataLength > 0 then
|
||||
begin
|
||||
if (Mode = vcmText) and (FHPosition > 0) then
|
||||
begin
|
||||
for i:= 1 to FHPosition do
|
||||
begin
|
||||
GetNextCharAsAscii(LineStart, CharLenInBytes);
|
||||
DataLength -= CharLenInBytes;
|
||||
LineStart += CharLenInBytes;
|
||||
end;
|
||||
if (DataLength <= 0) then Continue;
|
||||
end;
|
||||
sText := GetText(LineStart, DataLength, 0);
|
||||
|
||||
if (Mode = vcmText) and (FHPosition > 0) then
|
||||
scrollTab := -Canvas.TextWidth(UTF8Copy(sText, 1, FHPosition))
|
||||
else begin
|
||||
scrollTab := 0;
|
||||
end;
|
||||
|
||||
OutText(scrollTab + xIndex * w, yIndex * FTextHeight, sText, LineStart, DataLength);
|
||||
OutText(FLeftMargin + xIndex * w, yIndex * FTextHeight, sText, LineStart, DataLength);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
|
@ -1716,7 +1731,7 @@ var
|
|||
s: string;
|
||||
begin
|
||||
iPos := FPosition;
|
||||
for yIndex := 0 to GetClientHeightInLines - 1 do
|
||||
for yIndex := 0 to GetClientHeightInLines(False) - 1 do
|
||||
begin
|
||||
if iPos >= FHighLimit then
|
||||
Break;
|
||||
|
|
@ -1725,7 +1740,7 @@ begin
|
|||
s := TransformCustom(iPos, FHighLimit); // get line text for render
|
||||
|
||||
if s <> '' then
|
||||
OutCustom(0, yIndex * FTextHeight, s, LineStart, iPos - LineStart); // render line to canvas
|
||||
OutCustom(FLeftMargin, yIndex * FTextHeight, s, LineStart, iPos - LineStart); // render line to canvas
|
||||
end;
|
||||
end;
|
||||
|
||||
|
|
@ -1736,7 +1751,7 @@ var
|
|||
s: string;
|
||||
begin
|
||||
iPos := FPosition;
|
||||
for yIndex := 0 to GetClientHeightInLines - 1 do
|
||||
for yIndex := 0 to GetClientHeightInLines(False) - 1 do
|
||||
begin
|
||||
if iPos >= FHighLimit then
|
||||
Break;
|
||||
|
|
@ -1744,7 +1759,7 @@ begin
|
|||
AddLineOffset(iPos);
|
||||
s := TransformBin(iPos, FHighLimit);
|
||||
if s <> '' then
|
||||
OutBin(0, yIndex * FTextHeight, s, LineStart, iPos - LineStart);
|
||||
OutBin(FLeftMargin, yIndex * FTextHeight, s, LineStart, iPos - LineStart);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
|
@ -1807,6 +1822,12 @@ begin
|
|||
if not IsFileOpen then
|
||||
Exit;
|
||||
|
||||
// Double byte text can have only even position
|
||||
if (Encoding in ViewerEncodingDoubleByte) and Odd(Value) then
|
||||
begin
|
||||
Value := Value - 1;
|
||||
end;
|
||||
|
||||
// Speedup if total nr of lines is less then nr of lines that can be displayed.
|
||||
if (FPosition = FLowLimit) and // only if already at the top
|
||||
(FLineList.Count > 0) and (FLineList.Count < GetClientHeightInLines)
|
||||
|
|
@ -1886,10 +1907,15 @@ begin
|
|||
end;
|
||||
end;
|
||||
|
||||
function TViewerControl.GetClientHeightInLines: Integer;
|
||||
function TViewerControl.GetClientHeightInLines(Whole: Boolean): Integer;
|
||||
begin
|
||||
if FTextHeight > 0 then
|
||||
Result := GetViewerRect.Height div FTextHeight
|
||||
begin
|
||||
if Whole then
|
||||
Result := GetViewerRect.Height div FTextHeight
|
||||
else
|
||||
Result := Ceil(GetViewerRect.Height / FTextHeight);
|
||||
end
|
||||
else
|
||||
Result := 0;
|
||||
end;
|
||||
|
|
@ -2592,6 +2618,7 @@ var
|
|||
tmpPosition: PtrInt;
|
||||
s, ss, sText: String;
|
||||
begin
|
||||
ss := EmptyStr;
|
||||
tmpPosition := StartLine;
|
||||
sText := TransformBin(tmpPosition, EndLine);
|
||||
for I := 1 to Length(sText) do
|
||||
|
|
@ -2744,12 +2771,17 @@ var
|
|||
Inc(len); // Assume there is one character after conversion
|
||||
// (otherwise use Inc(len, UTF8Length(s))).
|
||||
|
||||
if len <= FHPosition then
|
||||
if len <= FHPosition then
|
||||
begin
|
||||
i := i + CharLenInBytes;
|
||||
Continue;
|
||||
end;
|
||||
|
||||
if (CharLenInBytes = 1) and (s[1] < ' ') then
|
||||
begin
|
||||
s := ' ';
|
||||
end;
|
||||
|
||||
ss := ss + s;
|
||||
textWidth := Canvas.TextWidth(ss);
|
||||
if textWidth > x then
|
||||
|
|
@ -2775,6 +2807,12 @@ begin
|
|||
if FLineList.Count = 0 then
|
||||
Exit(-1);
|
||||
|
||||
if (x < FLeftMargin) then
|
||||
x := 0
|
||||
else begin
|
||||
x := x - FLeftMargin;
|
||||
end;
|
||||
|
||||
yIndex := y div FTextHeight;
|
||||
if yIndex >= FLineList.Count then
|
||||
yIndex := FLineList.Count - 1;
|
||||
|
|
@ -2786,7 +2824,7 @@ begin
|
|||
// Get position of last character of the line.
|
||||
EndLine := GetEndOfLine(StartLine);
|
||||
|
||||
if x = 0 then
|
||||
if (x = 0) and ((Mode <> vcmText) or (FHPosition = 0)) then
|
||||
begin
|
||||
CharSide := csBefore;
|
||||
Exit(StartLine);
|
||||
|
|
@ -2925,7 +2963,9 @@ begin
|
|||
veCp1250..veCp950,
|
||||
veIso88591,
|
||||
veIso88592,
|
||||
veKoi8:
|
||||
veKoi8r,
|
||||
veKoi8u,
|
||||
veKoi8ru:
|
||||
if iPosition < FHighLimit then
|
||||
begin
|
||||
Result := PByte(GetDataAdr)[iPosition];
|
||||
|
|
@ -3047,7 +3087,9 @@ begin
|
|||
veCp1250..veCp950,
|
||||
veIso88591,
|
||||
veIso88592,
|
||||
veKoi8:
|
||||
veKoi8r,
|
||||
veKoi8u,
|
||||
veKoi8ru:
|
||||
if iPosition > FLowLimit then
|
||||
begin
|
||||
Result := PByte(GetDataAdr + iPosition)[-1];
|
||||
|
|
@ -3155,7 +3197,9 @@ begin
|
|||
veCp1250..veCp950,
|
||||
veIso88591,
|
||||
veIso88592,
|
||||
veKoi8:
|
||||
veKoi8r,
|
||||
veKoi8u,
|
||||
veKoi8ru:
|
||||
CharLenInBytes := 1;
|
||||
veUcs2be, veUcs2le:
|
||||
CharLenInBytes := 2;
|
||||
|
|
@ -3561,7 +3605,9 @@ procedure TViewerControl.UpdateSelection;
|
|||
veCp1250..veCp950,
|
||||
veIso88591,
|
||||
veIso88592,
|
||||
veKoi8:
|
||||
veKoi8r,
|
||||
veKoi8u,
|
||||
veKoi8ru:
|
||||
; // any position allowed
|
||||
|
||||
veUcs2be, veUcs2le:
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ Compiling Double Commander
|
|||
1) What you need?
|
||||
|
||||
Double Commander is developed with Free Pascal and Lazarus.
|
||||
Current version requires at least FPC 3.0.4 and Lazarus 1.8.2.
|
||||
Current version requires at least FPC 3.2.0 and Lazarus 2.0.12.
|
||||
|
||||
2) Using the IDE to develop and build DC.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,12 +1,12 @@
|
|||
|
||||
rem Set Double Commander version
|
||||
set DC_VER=1.0.0
|
||||
set DC_VER=1.0.11
|
||||
|
||||
rem Path to subversion
|
||||
set GIT_EXE="C:\Program Files\Git\bin\git.exe"
|
||||
rem Path to Git
|
||||
set GIT_EXE="%ProgramFiles%\Git\bin\git.exe"
|
||||
|
||||
rem Path to Inno Setup compiler
|
||||
set ISCC_EXE="c:\Program Files\Inno Setup 5\ISCC.exe"
|
||||
set ISCC_EXE="%ProgramFiles(x86)%\Inno Setup 5\ISCC.exe"
|
||||
|
||||
rem The new package will be created from here
|
||||
set BUILD_PACK_DIR=%TEMP%\doublecmd-%DATE: =%
|
||||
|
|
@ -57,7 +57,7 @@ call %BUILD_DC_TMP_DIR%\install\windows\install.bat
|
|||
|
||||
cd /D %BUILD_PACK_DIR%
|
||||
rem Create *.exe package
|
||||
%ISCC_EXE% /F"doublecmd-%DC_VER%.%CPU_TARGET%-%OS_TARGET%" doublecmd.iss
|
||||
%ISCC_EXE% /F"doublecmd-%DC_VER%.%CPU_TARGET%-%OS_TARGET%" /DDisplayVersion=%DC_VER% doublecmd.iss
|
||||
|
||||
rem Move created package
|
||||
move release\*.exe %PACK_DIR%
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
#!/bin/sh
|
||||
|
||||
# Set Double Commander version
|
||||
DC_VER=1.0.0
|
||||
DC_VER=1.0.11
|
||||
|
||||
# The new package will be saved here
|
||||
PACK_DIR=$(pwd)/darwin/release
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
#!/bin/sh
|
||||
|
||||
# Set Double Commander version
|
||||
DC_VER=1.0.0
|
||||
DC_VER=1.0.11
|
||||
|
||||
# The new package will be saved here
|
||||
PACK_DIR=$(pwd)/linux/release
|
||||
|
|
@ -22,7 +22,6 @@ help()
|
|||
echo '-R: RPM package'
|
||||
echo '-S: Slackware package'
|
||||
echo '-P: Portable package'
|
||||
echo '-H: Help package'
|
||||
echo '--cpu=<cpu>: Target CPU'
|
||||
echo '--ws=<widgetset>: Target widgetset'
|
||||
echo
|
||||
|
|
@ -36,23 +35,21 @@ eval set -- $args
|
|||
while [ "$1" != "--" ]; do
|
||||
case "$1" in
|
||||
-h|--help) help;;
|
||||
-A) shift;CK_DEBIAN=1;CK_REDHAT=1;CK_SLACKWARE=1;CK_PORTABLE=1;CK_HELP=1;;
|
||||
-A) shift;CK_DEBIAN=1;CK_REDHAT=1;CK_SLACKWARE=1;CK_PORTABLE=1;;
|
||||
-D) shift;CK_DEBIAN=1;;
|
||||
-R) shift;CK_REDHAT=1;;
|
||||
-S) shift;CK_SLACKWARE=1;;
|
||||
-P) shift;CK_PORTABLE=1;;
|
||||
-H) shift;CK_HELP=1;;
|
||||
--cpu) shift;export CPU_TARGET=$(eval echo $1);shift;;
|
||||
--ws) shift;export lcl=$(eval echo $1);shift;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ -z "$CK_DEBIAN" ] && [ -z "$CK_REDHAT" ] && [ -z "$CK_SLACKWARE" ] && [ -z "$CK_PORTABLE" ] && [ -z "$CK_HELP" ]; then
|
||||
if [ -z "$CK_DEBIAN" ] && [ -z "$CK_REDHAT" ] && [ -z "$CK_SLACKWARE" ] && [ -z "$CK_PORTABLE" ]; then
|
||||
CK_DEBIAN=1
|
||||
CK_REDHAT=1
|
||||
CK_SLACKWARE=1
|
||||
CK_PORTABLE=1
|
||||
CK_HELP=1
|
||||
fi
|
||||
|
||||
# Export from Git
|
||||
|
|
@ -112,28 +109,13 @@ if [ "$CK_SLACKWARE" ]; then
|
|||
fi
|
||||
|
||||
if [ "$CK_PORTABLE" ]; then
|
||||
# Create *.tar.bz2 package
|
||||
# Create *.tar.xz package
|
||||
mkdir -p $BUILD_PACK_DIR
|
||||
install/linux/install.sh --portable-prefix=$BUILD_PACK_DIR
|
||||
cp -r doc/en $BUILD_PACK_DIR/doublecmd/doc
|
||||
cd $BUILD_PACK_DIR
|
||||
tar -cJvf $PACK_DIR/doublecmd-$DC_VER.$lcl.$CPU_TARGET.tar.xz doublecmd
|
||||
fi
|
||||
|
||||
if [ "$CK_HELP" ]; then
|
||||
# Create help packages
|
||||
cd $BUILD_DC_TMP_DIR
|
||||
# Copy help files
|
||||
install/linux/install-help.sh --portable-prefix=$BUILD_PACK_DIR
|
||||
# Create help package for each language
|
||||
cd $BUILD_PACK_DIR/doublecmd/doc
|
||||
for HELP_LANG in `ls`
|
||||
do
|
||||
cd $BUILD_PACK_DIR/doublecmd
|
||||
tar -cJvf $PACK_DIR/doublecmd-help-$HELP_LANG-$DC_VER.noarch.tar.xz doc/$HELP_LANG
|
||||
done
|
||||
fi
|
||||
|
||||
# Clean DC build dir
|
||||
rm -rf $BUILD_DC_TMP_DIR
|
||||
rm -rf $BUILD_PACK_DIR
|
||||
|
|
|
|||
|
|
@ -34,7 +34,6 @@ cp -r doublecmd.app/* $DC_APP_DIR/
|
|||
cp -a doublecmd $DC_INSTALL_DIR/
|
||||
cp -a doublecmd.help $DC_INSTALL_DIR/
|
||||
cp -a doublecmd.zdli $DC_INSTALL_DIR/
|
||||
cp -a doublecmd.ext.example $DC_INSTALL_DIR/
|
||||
cp -a pixmaps.txt $DC_INSTALL_DIR/
|
||||
cp -a multiarc.ini $DC_INSTALL_DIR/
|
||||
cp -a pinyin.tbl $DC_INSTALL_DIR/
|
||||
|
|
|
|||
|
|
@ -1,21 +0,0 @@
|
|||
Description: Do not display build info in window title
|
||||
Author: Graham Inggs <graham@nerve.org.za>
|
||||
Forwarded: not-needed
|
||||
Last-Update: 2015-02-15
|
||||
--- a/src/fmain.pas
|
||||
+++ b/src/fmain.pas
|
||||
@@ -964,13 +964,7 @@
|
||||
if Length(UniqueInstance.ServernameByUser) > 0 then
|
||||
ServernameString := ' [' + UniqueInstance.ServernameByUser + ']';
|
||||
|
||||
- Result := Format('%s%s %s build %s; %s',
|
||||
- ['Double Commander',
|
||||
- ServernameString,
|
||||
- dcVersion,
|
||||
- dcRevision,
|
||||
- dcBuildDate]
|
||||
- );
|
||||
+ Result := 'Double Commander';
|
||||
end;
|
||||
|
||||
var
|
||||
|
|
@ -1 +0,0 @@
|
|||
x-terminal-emulator.patch
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
Description: Change default terminal command to 'x-terminal-emulator'
|
||||
Author: Graham Inggs <ginggs@debian.org>
|
||||
Forwarded: not-needed
|
||||
Last-Update: 2016-03-14
|
||||
--- a/src/platform/uOSUtils.pas
|
||||
+++ b/src/platform/uOSUtils.pas
|
||||
@@ -65,11 +65,11 @@
|
||||
RunInTermCloseParams = '';
|
||||
MonoSpaceFont = 'Monaco';
|
||||
{$ELSE}
|
||||
- RunTermCmd = 'xterm'; // default terminal
|
||||
+ RunTermCmd = 'x-terminal-emulator'; // default terminal
|
||||
RunTermParams = '';
|
||||
- RunInTermStayOpenCmd = 'xterm'; // default run in terminal command AND Stay open after command
|
||||
+ RunInTermStayOpenCmd = 'x-terminal-emulator'; // default run in terminal command AND Stay open after command
|
||||
RunInTermStayOpenParams = '-e sh -c ''{command}; echo -n Press ENTER to exit... ; read a''';
|
||||
- RunInTermCloseCmd = 'xterm'; // default run in terminal command AND Close after command
|
||||
+ RunInTermCloseCmd = 'x-terminal-emulator'; // default run in terminal command AND Close after command
|
||||
RunInTermCloseParams = '-e sh -c {command}';
|
||||
MonoSpaceFont = 'Monospace';
|
||||
{$ENDIF}
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
[Desktop Entry]
|
||||
Name=Double Commander
|
||||
GenericName=File Manager
|
||||
Comment=Double Commander is a cross platform open source file manager with two panels side by side.
|
||||
Terminal=false
|
||||
Icon=doublecmd
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ if [ -z $CPU_TARGET ]; then
|
|||
fi
|
||||
|
||||
# Determine library directory
|
||||
if [ "$CPU_TARGET" = "x86_64" ] && [ ! -f "/etc/debian_version" ]
|
||||
if [[ "$CPU_TARGET" == *"64" ]] && [ ! -f "/etc/debian_version" ]
|
||||
then
|
||||
LIB_SUFFIX=64
|
||||
else
|
||||
|
|
@ -72,7 +72,6 @@ mkdir -p $DC_INSTALL_DIR/plugins/dsx/dsxlocate
|
|||
cp -a doublecmd $DC_INSTALL_DIR/
|
||||
cp -a doublecmd.help $DC_INSTALL_DIR/
|
||||
cp -a doublecmd.zdli $DC_INSTALL_DIR/
|
||||
cp -a doublecmd.ext.example $DC_INSTALL_DIR/
|
||||
cp -a pixmaps.txt $DC_INSTALL_DIR/
|
||||
cp -a multiarc.ini $DC_INSTALL_DIR/
|
||||
cp -a pinyin.tbl $DC_INSTALL_DIR/
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
Name: doublecmd-gtk
|
||||
Summary: Twin-panel (commander-style) file manager (GTK2)
|
||||
Version: 1.0.0
|
||||
Version: 1.0.11
|
||||
Release: 1
|
||||
URL: http://doublecmd.sourceforge.net
|
||||
Source0: doublecmd_%{version}.orig.tar.gz
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
Name: doublecmd-help-en
|
||||
Summary: Documentation for the Double Commander (English)
|
||||
Version: 1.0.0
|
||||
Version: 1.0.11
|
||||
Release: 1
|
||||
Url: http://doublecmd.sourceforge.net/
|
||||
License: GPL-2+
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
Name: doublecmd-qt
|
||||
Summary: Twin-panel (commander-style) file manager (Qt4)
|
||||
Version: 1.0.0
|
||||
Version: 1.0.11
|
||||
Release: 1
|
||||
URL: http://doublecmd.sourceforge.net
|
||||
Source0: doublecmd_%{version}.orig.tar.gz
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
Name: doublecmd-qt5
|
||||
Summary: Twin-panel (commander-style) file manager (Qt5)
|
||||
Version: 1.0.0
|
||||
Version: 1.0.11
|
||||
Release: 1
|
||||
URL: http://doublecmd.sourceforge.net
|
||||
Source0: %{doublecmd}-%{version}.tar.gz
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
# This script updates Double Commander Open Build Service (OBS) repository
|
||||
|
||||
# Set Double Commander version
|
||||
DC_VER=1.0.0
|
||||
DC_VER=1.0.11
|
||||
|
||||
# Temp directory
|
||||
DC_TEMP_DIR=/var/tmp/doublecmd-$(date +%y.%m.%d)
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
# This script updates Double Commander Personal Package Archive (PPA) repository
|
||||
|
||||
# Set Double Commander version
|
||||
DC_VER=1.0.0
|
||||
DC_VER=1.0.11
|
||||
# Set Ubuntu series
|
||||
DISTRO=( xenial zesty artful )
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
export REVISION_INC=$2/units/dcrevision.inc
|
||||
|
||||
# DC revision number
|
||||
export REVISION=$(git -C $1 rev-list --count HEAD)
|
||||
export REVISION=$(git -C $1 rev-list --count master..HEAD)
|
||||
export COMMIT=$(git -C $1 rev-parse --short HEAD)
|
||||
|
||||
# Update dcrevision.inc
|
||||
|
|
|
|||
|
|
@ -3,7 +3,9 @@
|
|||
|
||||
[Setup]
|
||||
AppName=Double Commander
|
||||
AppVerName=Double Commander 1.0.0 beta
|
||||
AppVersion={#DisplayVersion}
|
||||
AppVerName=Double Commander {#DisplayVersion} beta
|
||||
AppPublisher=Alexander Koblov
|
||||
AppPublisherURL=http://doublecmd.sourceforge.net
|
||||
AppSupportURL=http://doublecmd.sourceforge.net
|
||||
AppUpdatesURL=http://doublecmd.sourceforge.net
|
||||
|
|
@ -52,8 +54,10 @@ Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{
|
|||
Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
|
||||
|
||||
[Files]
|
||||
Source: "doublecmd\doublecmd.help"; DestDir: "{app}"
|
||||
Source: "doublecmd\doublecmd.exe"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "doublecmd\doublecmd.zdli"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "doublecmd\pinyin.tbl"; DestDir: "{app}"; Flags: onlyifdoesntexist
|
||||
Source: "doublecmd\pixmaps.txt"; DestDir: "{app}"; Flags: onlyifdoesntexist
|
||||
Source: "doublecmd\multiarc.ini"; DestDir: "{app}"; Flags: onlyifdoesntexist
|
||||
Source: "doublecmd\doc\*"; DestDir: "{app}\doc"; Flags: ignoreversion recursesubdirs createallsubdirs
|
||||
|
|
@ -66,7 +70,7 @@ Source: "doublecmd\*.dll"; DestDir: "{app}"; Flags: skipifsourcedoesntexist
|
|||
|
||||
[Icons]
|
||||
Name: "{group}\Double Commander"; Filename: "{app}\doublecmd.exe"
|
||||
Name: "{group}\{cm:ProgramOnTheWeb,Double Commander}"; Filename: "http://doublecmd.sourceforge.net"
|
||||
Name: "{group}\{cm:ProgramOnTheWeb,Double Commander}"; Filename: "https://doublecmd.sourceforge.io"
|
||||
Name: "{group}\{cm:UninstallProgram,Double Commander}"; Filename: "{uninstallexe}"
|
||||
Name: "{commondesktop}\Double Commander"; Filename: "{app}\doublecmd.exe"; Tasks: desktopicon
|
||||
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\Double Commander"; Filename: "{app}\doublecmd.exe"; Tasks: quicklaunchicon
|
||||
|
|
|
|||
|
|
@ -37,7 +37,6 @@ copy doc\*.txt %DC_INSTALL_DIR%\doc\
|
|||
copy doublecmd.exe %DC_INSTALL_DIR%\
|
||||
copy doublecmd.help %DC_INSTALL_DIR%\
|
||||
copy doublecmd.zdli %DC_INSTALL_DIR%\
|
||||
copy doublecmd.ext.example %DC_INSTALL_DIR%\
|
||||
copy pixmaps.txt %DC_INSTALL_DIR%\
|
||||
copy multiarc.ini %DC_INSTALL_DIR%\
|
||||
copy pinyin.tbl %DC_INSTALL_DIR%\
|
||||
|
|
|
|||
|
|
@ -9959,7 +9959,7 @@ msgid "A&uto-rename source files"
|
|||
msgstr "&Аўтаматычная змена назвы зыходных файлаў"
|
||||
|
||||
#: ulng.rsdlgbuttonautorenametarget
|
||||
msgid "A&uto-rename target files"
|
||||
msgid "Auto-rename tar&get files"
|
||||
msgstr "&Аўтаматычная змена назвы мэтавых файлаў"
|
||||
|
||||
#: ulng.rsdlgbuttoncancel
|
||||
|
|
|
|||
|
|
@ -10436,7 +10436,7 @@ msgid "A&uto-rename source files"
|
|||
msgstr "Само&преименуване на целевите файлове"
|
||||
|
||||
#: ulng.rsdlgbuttonautorenametarget
|
||||
msgid "A&uto-rename target files"
|
||||
msgid "Auto-rename tar&get files"
|
||||
msgstr ""
|
||||
|
||||
#: ulng.rsdlgbuttoncancel
|
||||
|
|
|
|||
|
|
@ -10952,7 +10952,7 @@ msgid "A&uto-rename source files"
|
|||
msgstr ""
|
||||
|
||||
#: ulng.rsdlgbuttonautorenametarget
|
||||
msgid "A&uto-rename target files"
|
||||
msgid "Auto-rename tar&get files"
|
||||
msgstr ""
|
||||
|
||||
#: ulng.rsdlgbuttoncancel
|
||||
|
|
|
|||
|
|
@ -9971,7 +9971,7 @@ msgid "A&uto-rename source files"
|
|||
msgstr "A&utomatické přejmenování zdrojových souborů"
|
||||
|
||||
#: ulng.rsdlgbuttonautorenametarget
|
||||
msgid "A&uto-rename target files"
|
||||
msgid "Auto-rename tar&get files"
|
||||
msgstr "Automaticky přejmenovat cílové soubory"
|
||||
|
||||
#: ulng.rsdlgbuttoncancel
|
||||
|
|
|
|||
|
|
@ -11005,7 +11005,7 @@ msgid "A&uto-rename source files"
|
|||
msgstr "A&uto-omdøb kildefiler"
|
||||
|
||||
#: ulng.rsdlgbuttonautorenametarget
|
||||
msgid "A&uto-rename target files"
|
||||
msgid "Auto-rename tar&get files"
|
||||
msgstr ""
|
||||
|
||||
#: ulng.rsdlgbuttoncancel
|
||||
|
|
|
|||
|
|
@ -10153,7 +10153,7 @@ msgid "A&uto-rename source files"
|
|||
msgstr "Quelldateien a&utomatisch umbenennen"
|
||||
|
||||
#: ulng.rsdlgbuttonautorenametarget
|
||||
msgid "A&uto-rename target files"
|
||||
msgid "Auto-rename tar&get files"
|
||||
msgstr "Zieldateien automatisch umbenennen"
|
||||
|
||||
#: ulng.rsdlgbuttoncancel
|
||||
|
|
|
|||
|
|
@ -3,16 +3,16 @@ msgstr ""
|
|||
"Project-Id-Version: Double Commander 1.0.0 alpha\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2008-01-17 23:08+0300\n"
|
||||
"PO-Revision-Date: 2021-03-02 12:30+0200\n"
|
||||
"Last-Translator: Anastasios Kazakis <orca.srfshark@gmail.com>\n"
|
||||
"Language-Team: Anastasios Kazakis <orca.surfshark@gmail.com>\n"
|
||||
"PO-Revision-Date: 2022-11-20 21:59+0200\n"
|
||||
"Last-Translator: Anastasios Kazakis <orca.surfshark@gmail.com>\n"
|
||||
"Language-Team: Anastasios Kazakis <anastasios.kazakis@tutanota.com>\n"
|
||||
"Language: el_GR\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Native-Language: ελληνικά\n"
|
||||
"X-Generator: Poedit 2.3\n"
|
||||
"Language: el\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Native-Language: ελληνικά\n"
|
||||
"X-Generator: Poedit 3.0.1\n"
|
||||
"X-Language: el_GR\n"
|
||||
"X-Source-Language: el\n"
|
||||
"X-Poedit-SourceCharset: ISO-8859-7\n"
|
||||
|
|
@ -32,8 +32,8 @@ msgid "Right: Delete %d file(s)"
|
|||
msgstr "Δεξιά: Διαγραφή %d αρχείο(α)"
|
||||
|
||||
#: fsyncdirsdlg.rsfilesfound
|
||||
msgid "Files found: %d (Identical: %d, Different: %d, Unique left: %d, Unique right: %d)"
|
||||
msgstr "Ευρεθέντα αρχεία: %d (Όμοια: %d, Διαφορετικά: %d, Μοναδικά αριστερά: %d, Μοναδικά δεξιά: %d)"
|
||||
msgid "Files found: %d (Identical: %d, Different: %d, Unique left: %d, Unique right: %d)"
|
||||
msgstr "Ευρεθέντα αρχεία: %d (Όμοια: %d, Διαφορετικά: %d, Μοναδικά αριστερά: %d, Μοναδικά δεξιά: %d)"
|
||||
|
||||
#: fsyncdirsdlg.rslefttorightcopy
|
||||
msgid "Left to Right: Copy %d files, total size: %s (%s)"
|
||||
|
|
@ -92,7 +92,7 @@ msgstr "Κράτηση Χώρου"
|
|||
|
||||
#: tfilesystemcopymoveoperationoptionsui.chkcopyonwrite.caption
|
||||
msgid "Copy on write"
|
||||
msgstr ""
|
||||
msgstr "Αντιγραφή κατά την εγγραφή"
|
||||
|
||||
#: tfilesystemcopymoveoperationoptionsui.chkverify.caption
|
||||
msgid "&Verify"
|
||||
|
|
@ -146,7 +146,7 @@ msgstr "Εσωτερική έκδοση"
|
|||
#: tfrmabout.lblcommit.caption
|
||||
msgctxt "tfrmabout.lblcommit.caption"
|
||||
msgid "Commit"
|
||||
msgstr ""
|
||||
msgstr "Δέσμευση"
|
||||
|
||||
#: tfrmabout.lblfreepascalver.caption
|
||||
msgctxt "tfrmabout.lblfreepascalver.caption"
|
||||
|
|
@ -1107,7 +1107,7 @@ msgstr "Κατεύθυνση"
|
|||
|
||||
#: tfrmelevation.chkelevateall.caption
|
||||
msgid "Do this for &all current objects"
|
||||
msgstr ""
|
||||
msgstr "Εφαρμογή αυτού για όλα τα τρέχοντα αντικείμενα"
|
||||
|
||||
#: tfrmextractdlg.caption
|
||||
msgctxt "TFRMEXTRACTDLG.CAPTION"
|
||||
|
|
@ -1596,7 +1596,7 @@ msgstr "Όχι παλαιότερο από:"
|
|||
|
||||
#: tfrmfinddlg.cbofficexml.caption
|
||||
msgid "Offi&ce XML"
|
||||
msgstr ""
|
||||
msgstr "Office XML"
|
||||
|
||||
#: tfrmfinddlg.cbopenedtabs.caption
|
||||
msgid "Opened tabs"
|
||||
|
|
@ -1828,7 +1828,6 @@ msgid "C&ase sensitive"
|
|||
msgstr "Με Διάκριση Πεζών-Κεφαλαίων"
|
||||
|
||||
#: tfrmfindview.cbregexp.caption
|
||||
#, fuzzy
|
||||
msgctxt "tfrmfindview.cbregexp.caption"
|
||||
msgid "&Regular expressions"
|
||||
msgstr "Συνήθεις Φράσεις"
|
||||
|
|
@ -2224,7 +2223,7 @@ msgstr "Καταλογος &Hotlist"
|
|||
|
||||
#: tfrmmain.actdoanycmcommand.caption
|
||||
msgid "Execute &internal command..."
|
||||
msgstr ""
|
||||
msgstr "Εκτέλεση εσωτερικής εντολής..."
|
||||
|
||||
#: tfrmmain.actdoanycmcommand.hint
|
||||
msgid "Select any command and execute it"
|
||||
|
|
@ -2763,11 +2762,11 @@ msgstr "Δημιουργία Συμβολοδεσμού..."
|
|||
|
||||
#: tfrmmain.actsyncchangedir.caption
|
||||
msgid "Synchronous navigation"
|
||||
msgstr ""
|
||||
msgstr "Σύγχρονη πλοήγηση"
|
||||
|
||||
#: tfrmmain.actsyncchangedir.hint
|
||||
msgid "Synchronous directory changing in both panels"
|
||||
msgstr ""
|
||||
msgstr "Σύγχρονη αλλαγή καταλόγου και στα δύο πάνελ"
|
||||
|
||||
#: tfrmmain.actsyncdirs.caption
|
||||
msgid "Syn&chronize dirs..."
|
||||
|
|
@ -5789,7 +5788,7 @@ msgstr "Εφαρμογή τρεχουσών ρυθμίσεων σε όλα τα
|
|||
#: tfrmoptionsfileassocextra.cbexecuteviashell.caption
|
||||
msgctxt "TFRMOPTIONSFILEASSOCEXTRA.CBEXECUTEVIASHELL.CAPTION"
|
||||
msgid "Execute via shell"
|
||||
msgstr "Εκτέλεση μέσω κελύφους"
|
||||
msgstr "Εκτέλεση μέσω κελύφους"
|
||||
|
||||
#: tfrmoptionsfileassocextra.cbextendedcontextmenu.caption
|
||||
msgid "Extended context menu"
|
||||
|
|
@ -5905,7 +5904,7 @@ msgstr "Παράβλεψη των λαθών εργασιών αρχείων κ
|
|||
|
||||
#: tfrmoptionsfileoperations.cbtestarchiveconfirmation.caption
|
||||
msgid "Test archive operation"
|
||||
msgstr ""
|
||||
msgstr "Λειτουργία ελέγχου αρχείου"
|
||||
|
||||
#: tfrmoptionsfileoperations.cbverifychecksumconfirmation.caption
|
||||
msgid "Verify checksum operation"
|
||||
|
|
@ -6161,7 +6160,7 @@ msgstr "Μορφή μεγέθους Αρχείου:"
|
|||
|
||||
#: tfrmoptionsfilesviews.lblfootersizeformat.caption
|
||||
msgid "&Footer format:"
|
||||
msgstr ""
|
||||
msgstr "Σε μορφή Υποσέλιδου:"
|
||||
|
||||
#: tfrmoptionsfilesviews.lblgigabyte.caption
|
||||
msgid "&Gigabyte:"
|
||||
|
|
@ -6169,7 +6168,7 @@ msgstr "Gigabyte:"
|
|||
|
||||
#: tfrmoptionsfilesviews.lblheadersizeformat.caption
|
||||
msgid "&Header format:"
|
||||
msgstr ""
|
||||
msgstr "Σε μορφή Επικεφαλίδας:"
|
||||
|
||||
#: tfrmoptionsfilesviews.lblkilobyte.caption
|
||||
msgid "&Kilobyte:"
|
||||
|
|
@ -6640,7 +6639,7 @@ msgstr "Εμφάνιση κουμπιού λίστας οδηγών"
|
|||
#: tfrmoptionslayout.cbshowkeyspanel.caption
|
||||
msgctxt "TFRMOPTIONSLAYOUT.CBSHOWKEYSPANEL.CAPTION"
|
||||
msgid "Show function &key buttons"
|
||||
msgstr "Εμφάνιση κουμπιών πλήκτρων λειτουργίας"
|
||||
msgstr "Εμφάνιση κουμπιών πλήκτρων λειτουργίας"
|
||||
|
||||
#: tfrmoptionslayout.cbshowmainmenu.caption
|
||||
msgctxt "TFRMOPTIONSLAYOUT.CBSHOWMAINMENU.CAPTION"
|
||||
|
|
@ -6664,7 +6663,7 @@ msgstr "Εμφάνιση μπάρας κατάστασης"
|
|||
#: tfrmoptionslayout.cbshowtabheader.caption
|
||||
msgctxt "TFRMOPTIONSLAYOUT.CBSHOWTABHEADER.CAPTION"
|
||||
msgid "S&how tabstop header"
|
||||
msgstr "Εμφάνιση επικεφαλίδας του tabstop"
|
||||
msgstr "Εμφάνιση επικεφαλίδας του tabstop"
|
||||
|
||||
#: tfrmoptionslayout.cbshowtabs.caption
|
||||
msgctxt "TFRMOPTIONSLAYOUT.CBSHOWTABS.CAPTION"
|
||||
|
|
@ -6814,7 +6813,7 @@ msgstr "Πάντα μετάβαση στη ρίζα ενός οδηγού ότα
|
|||
|
||||
#: tfrmoptionsmisc.chkshowcurdirtitlebar.caption
|
||||
msgid "Show ¤t directory in the main window title bar"
|
||||
msgstr ""
|
||||
msgstr "Εμφάνιση τρέχοντος καταλόγου στην γραμμή τίτλου του κύριου παραθύρου"
|
||||
|
||||
#: tfrmoptionsmisc.chkshowwarningmessages.caption
|
||||
msgctxt "TFRMOPTIONSMISC.CHKSHOWWARNINGMESSAGES.CAPTION"
|
||||
|
|
@ -6954,7 +6953,7 @@ msgstr "Αντικατάσταση λανθασμένου ονόματος αρ
|
|||
|
||||
#: tfrmoptionsmultirename.rbrenaminglogappendsamefile.caption
|
||||
msgid "Append in the same rename log file"
|
||||
msgstr "Συμπλήρωση στο ίδιο μετονομασμένο αρχείο καταγραφών"
|
||||
msgstr "Συμπλήρωση στο ίδιο μετονομασμένο αρχείο καταγραφών"
|
||||
|
||||
#: tfrmoptionsmultirename.rbrenaminglogperpreset.caption
|
||||
msgid "Per preset"
|
||||
|
|
@ -8476,31 +8475,26 @@ msgid "&OR (any match)"
|
|||
msgstr "Ή (όποιο ταιριάζει)"
|
||||
|
||||
#: tfrmselectduplicates.btnapply.caption
|
||||
#, fuzzy
|
||||
msgctxt "tfrmselectduplicates.btnapply.caption"
|
||||
msgid "&Apply"
|
||||
msgstr "Εφαρμογή"
|
||||
|
||||
#: tfrmselectduplicates.btncancel.caption
|
||||
#, fuzzy
|
||||
msgctxt "tfrmselectduplicates.btncancel.caption"
|
||||
msgid "&Cancel"
|
||||
msgstr "Ακύρωση"
|
||||
|
||||
#: tfrmselectduplicates.btnexcludemask.hint
|
||||
#, fuzzy
|
||||
msgctxt "tfrmselectduplicates.btnexcludemask.hint"
|
||||
msgid "Template..."
|
||||
msgstr "Πρότυπο..."
|
||||
|
||||
#: tfrmselectduplicates.btnincludemask.hint
|
||||
#, fuzzy
|
||||
msgctxt "tfrmselectduplicates.btnincludemask.hint"
|
||||
msgid "Template..."
|
||||
msgstr "Πρότυπο..."
|
||||
|
||||
#: tfrmselectduplicates.btnok.caption
|
||||
#, fuzzy
|
||||
msgctxt "tfrmselectduplicates.btnok.caption"
|
||||
msgid "&OK"
|
||||
msgstr "OK"
|
||||
|
|
@ -8514,7 +8508,6 @@ msgid "&Leave at least one file in each group unselected:"
|
|||
msgstr "Αφήστε τουλάχιστον ένα αρχείο σε κάθε γκρουπ μη επιλεγμένο:"
|
||||
|
||||
#: tfrmselectduplicates.cmbincludemask.text
|
||||
#, fuzzy
|
||||
msgctxt "tfrmselectduplicates.cmbincludemask.text"
|
||||
msgid "*"
|
||||
msgstr "*"
|
||||
|
|
@ -8869,7 +8862,7 @@ msgstr "Εσωτερική Έκδοση"
|
|||
#: tfrmstartingsplash.lblcommit.caption
|
||||
msgctxt "tfrmstartingsplash.lblcommit.caption"
|
||||
msgid "Commit"
|
||||
msgstr ""
|
||||
msgstr "Δέσμευση"
|
||||
|
||||
#: tfrmstartingsplash.lblfreepascalver.caption
|
||||
msgctxt "TFRMSTARTINGSPLASH.LBLFREEPASCALVER.CAPTION"
|
||||
|
|
@ -9114,7 +9107,7 @@ msgstr "μονά"
|
|||
|
||||
#: tfrmsyncdirsdlg.statusbar1.panels[0].text
|
||||
msgid "Please press \"Compare\" to start"
|
||||
msgstr "Παρακαλώ πιέστε \"Σύγκριση\" για εκκίνηση"
|
||||
msgstr "Παρακαλώ πιέστε \"Σύγκριση\" για εκκίνηση"
|
||||
|
||||
#: tfrmsyncdirsperformdlg.caption
|
||||
msgctxt "TFRMSYNCDIRSPERFORMDLG.CAPTION"
|
||||
|
|
@ -9565,7 +9558,6 @@ msgid "Zoom In"
|
|||
msgstr "Μεγέθυνση"
|
||||
|
||||
#: tfrmviewer.actzoomin.hint
|
||||
#, fuzzy
|
||||
msgctxt "tfrmviewer.actzoomin.hint"
|
||||
msgid "Zoom In"
|
||||
msgstr "Μεγέθυνση"
|
||||
|
|
@ -9576,10 +9568,9 @@ msgid "Zoom Out"
|
|||
msgstr "Μίκρυνση"
|
||||
|
||||
#: tfrmviewer.actzoomout.hint
|
||||
#, fuzzy
|
||||
msgctxt "tfrmviewer.actzoomout.hint"
|
||||
msgid "Zoom Out"
|
||||
msgstr "Μίκρυνση"
|
||||
msgstr "Σμίκρυνση"
|
||||
|
||||
#: tfrmviewer.btncuttuimage.hint
|
||||
msgctxt "TFRMVIEWER.BTNCUTTUIMAGE.HINT"
|
||||
|
|
@ -9610,7 +9601,6 @@ msgid "Paint"
|
|||
msgstr "Ζωγραφική"
|
||||
|
||||
#: tfrmviewer.btnpenwidth.caption
|
||||
#, fuzzy
|
||||
msgctxt "tfrmviewer.btnpenwidth.caption"
|
||||
msgid "1"
|
||||
msgstr "1"
|
||||
|
|
@ -9629,7 +9619,6 @@ msgid "Resize"
|
|||
msgstr "Αλλαγή Μεγέθους"
|
||||
|
||||
#: tfrmviewer.btnslideshow.caption
|
||||
#, fuzzy
|
||||
msgctxt "tfrmviewer.btnslideshow.caption"
|
||||
msgid "Slide Show"
|
||||
msgstr "Slide Show"
|
||||
|
|
@ -9673,7 +9662,6 @@ msgid "&Image"
|
|||
msgstr "Εικόνα"
|
||||
|
||||
#: tfrmviewer.mipen.caption
|
||||
#, fuzzy
|
||||
msgctxt "tfrmviewer.mipen.caption"
|
||||
msgid "Pen"
|
||||
msgstr "Στυλό"
|
||||
|
|
@ -9871,7 +9859,7 @@ msgstr "Απαιτείται χορήγηση άδειας διαχειριστ
|
|||
|
||||
#: uadministrator.rselevationrequiredcopy
|
||||
msgid "to copy this object:"
|
||||
msgstr ""
|
||||
msgstr "αντιγραφή αυτού του αντικειμένου:"
|
||||
|
||||
#: uadministrator.rselevationrequiredcreate
|
||||
msgid "to create this object:"
|
||||
|
|
@ -10142,7 +10130,7 @@ msgstr " Προσθέτει: "
|
|||
|
||||
#: ulng.rsdiffcomparing
|
||||
msgid "Comparing..."
|
||||
msgstr ""
|
||||
msgstr "Σύγκριση..."
|
||||
|
||||
#: ulng.rsdiffdeletes
|
||||
msgid " Deletes: "
|
||||
|
|
@ -10161,24 +10149,25 @@ msgid " Modifies: "
|
|||
msgstr " Μεταβολές: "
|
||||
|
||||
#: ulng.rsdifftextdifferenceencoding
|
||||
#, fuzzy
|
||||
msgctxt "ulng.rsdifftextdifferenceencoding"
|
||||
msgid "Encoding"
|
||||
msgstr "Κωδικοποίηση"
|
||||
|
||||
#: ulng.rsdifftextdifferencelineending
|
||||
msgid "Line-endings"
|
||||
msgstr ""
|
||||
msgstr "Τέλη γραμμών"
|
||||
|
||||
#: ulng.rsdifftextidentical
|
||||
msgid "The text is identical, but the following options are used:"
|
||||
msgstr ""
|
||||
msgstr "Το κείμενο είναι ταυτόσημο αλλά οι ακόλουθες ιδιότητες έχουν χρησιμοποιηθεί:"
|
||||
|
||||
#: ulng.rsdifftextidenticalnotmatch
|
||||
msgid ""
|
||||
"The text is identical, but the files do not match!\n"
|
||||
"The following differences were found:\n"
|
||||
msgstr ""
|
||||
"Το κείμενο είναι ταυτόσημο αλλά τα αρχεία δεν ταιριάζουν!\n"
|
||||
"Έχουν βρεθεί οι ακόλουθες διαφορές:\n"
|
||||
|
||||
#: ulng.rsdlgbuttonabort
|
||||
msgid "Ab&ort"
|
||||
|
|
@ -10198,7 +10187,7 @@ msgid "A&uto-rename source files"
|
|||
msgstr "Αυτόματη ονομασία πηγαίων αρχείων"
|
||||
|
||||
#: ulng.rsdlgbuttonautorenametarget
|
||||
msgid "A&uto-rename target files"
|
||||
msgid "Auto-rename tar&get files"
|
||||
msgstr "Αυτόματη μετονομασία στοχευμένων αρχείων"
|
||||
|
||||
#: ulng.rsdlgbuttoncancel
|
||||
|
|
@ -10402,7 +10391,7 @@ msgstr "με εσωτερικό επεξεργαστή"
|
|||
#: ulng.rsexecuteviashell
|
||||
msgctxt "ulng.rsexecuteviashell"
|
||||
msgid "Execute via shell"
|
||||
msgstr "Εκτέλεση μέσω κελύφους"
|
||||
msgstr "Εκτέλεση μέσω κελύφους"
|
||||
|
||||
#: ulng.rsexecuteviaterminalclose
|
||||
msgctxt "ulng.rsexecuteviaterminalclose"
|
||||
|
|
@ -10489,7 +10478,7 @@ msgstr "Αρχεία προσθέτων"
|
|||
|
||||
#: ulng.rsfilterprogramslibraries
|
||||
msgid "Programs and Libraries"
|
||||
msgstr ""
|
||||
msgstr "Προγράμματα και Βιβλιοθήκες"
|
||||
|
||||
#: ulng.rsfilterstatus
|
||||
msgid "FILTER"
|
||||
|
|
@ -10900,7 +10889,7 @@ msgstr "Νέο"
|
|||
|
||||
#: ulng.rsmnunomedia
|
||||
msgid "No media available"
|
||||
msgstr "Δεν υπάρχει διαθέσιμο Μέσο"
|
||||
msgstr "Δεν υπάρχει διαθέσιμο Μέσο"
|
||||
|
||||
#: ulng.rsmnuopen
|
||||
msgctxt "ulng.rsmnuopen"
|
||||
|
|
@ -11092,7 +11081,7 @@ msgstr "Αδυναμία αντιγραφής αρχείου %s στο %s"
|
|||
|
||||
#: ulng.rsmsgerrcannotmovedirectory
|
||||
msgid "Cannot move directory %s"
|
||||
msgstr ""
|
||||
msgstr "Αδυναμία μετακίνησης καταλόγου %s"
|
||||
|
||||
#: ulng.rsmsgerrcannotmovefile
|
||||
msgid "Cannot move file %s"
|
||||
|
|
@ -11536,7 +11525,7 @@ msgstr "Εισαγωγή τοποθεσίας και ονόματος αρχεί
|
|||
|
||||
#: ulng.rsmsgincorrectfilelength
|
||||
msgid "Incorrect resulting filelength for file : \"%s\""
|
||||
msgstr "Μη Έγκυρο τελικό μήκος αρχείου για το αρχείο : \"%s\""
|
||||
msgstr "Μη Έγκυρο τελικό μήκος αρχείου για το αρχείο : \"%s\""
|
||||
|
||||
#: ulng.rsmsginsertnextdisk
|
||||
msgid ""
|
||||
|
|
@ -11668,7 +11657,7 @@ msgstr "Έγινε: "
|
|||
|
||||
#: ulng.rsmsglogsymlink
|
||||
msgid "Create symlink %s"
|
||||
msgstr "Δημιουργία συμβολοδεσμού %s"
|
||||
msgstr "Δημιουργία συμβολοδεσμού %s"
|
||||
|
||||
#: ulng.rsmsglogtest
|
||||
msgid "Test file integrity %s"
|
||||
|
|
@ -11970,7 +11959,7 @@ msgstr "ΠΡΟΕΙΔΟΠΟΙΗΣΗ:Τερματισμός μιας διαδικ
|
|||
|
||||
#: ulng.rsmsgtestarchive
|
||||
msgid "Do you want to test selected archives?"
|
||||
msgstr ""
|
||||
msgstr "Επιθυμείτε να δοκιμάσετε τα επιλεγμένα αρχεία;"
|
||||
|
||||
#: ulng.rsmsgthisisnowinclipboard
|
||||
msgid "\"%s\" is now in the clipboard"
|
||||
|
|
@ -13144,7 +13133,7 @@ msgstr "Έχει καταχωρηθεί σε"
|
|||
|
||||
#: ulng.rsoptpluginsselectlualibrary
|
||||
msgid "Select Lua library file"
|
||||
msgstr ""
|
||||
msgstr "Επιλογή αρχείου βιβλιοθήκης Lua"
|
||||
|
||||
#: ulng.rsoptrenamingtooltipfiletype
|
||||
msgid "Renaming tooltip file type"
|
||||
|
|
@ -13581,7 +13570,7 @@ msgstr "Επιλογή Ενέργειας από τη γραμμή Βασικώ
|
|||
|
||||
#: ulng.rsstrtvmchoosehotdirectory
|
||||
msgid "Choose your directory from Hot Directory:"
|
||||
msgstr "Επιλογή καταλόγου από το Hot Directory:"
|
||||
msgstr "Επιλογή καταλόγου από το Hot Directory:"
|
||||
|
||||
#: ulng.rsstrtvmchooseviewhistory
|
||||
msgid "Choose your directory from File View History"
|
||||
|
|
@ -13865,7 +13854,7 @@ msgstr "Δίκτυο"
|
|||
|
||||
#: ulng.rsvfsrecyclebin
|
||||
msgid "Recycle Bin"
|
||||
msgstr ""
|
||||
msgstr "Κάδος Ανακύκλωσης"
|
||||
|
||||
#: ulng.rsviewabouttext
|
||||
msgid "Internal Viewer of Double Commander."
|
||||
|
|
@ -13915,5 +13904,4 @@ msgstr "Δεν πραγματοποιήθηκε καμία αντικατάστ
|
|||
|
||||
#: umaincommands.rsfavoritetabs_setupnotexist
|
||||
msgid "No setup named \"%s\""
|
||||
msgstr ""
|
||||
|
||||
msgstr "Δεν υπάρχει διαμόρφωση με το όνομα \"%s\""
|
||||
|
|
|
|||
|
|
@ -10066,7 +10066,7 @@ msgid "A&uto-rename source files"
|
|||
msgstr "A&utorrenombrar archivos origen"
|
||||
|
||||
#: ulng.rsdlgbuttonautorenametarget
|
||||
msgid "A&uto-rename target files"
|
||||
msgid "Auto-rename tar&get files"
|
||||
msgstr ""
|
||||
|
||||
#: ulng.rsdlgbuttoncancel
|
||||
|
|
|
|||
|
|
@ -10239,7 +10239,7 @@ msgid "A&uto-rename source files"
|
|||
msgstr "Renomme automatiquement le fichier"
|
||||
|
||||
#: ulng.rsdlgbuttonautorenametarget
|
||||
msgid "A&uto-rename target files"
|
||||
msgid "Auto-rename tar&get files"
|
||||
msgstr "Renommer automatiquement les fichiers cibles"
|
||||
|
||||
#: ulng.rsdlgbuttoncancel
|
||||
|
|
|
|||
|
|
@ -10648,7 +10648,7 @@ msgid "A&uto-rename source files"
|
|||
msgstr "&Samostalno preimenuj izvorne datoteke"
|
||||
|
||||
#: ulng.rsdlgbuttonautorenametarget
|
||||
msgid "A&uto-rename target files"
|
||||
msgid "Auto-rename tar&get files"
|
||||
msgstr ""
|
||||
|
||||
#: ulng.rsdlgbuttoncancel
|
||||
|
|
|
|||
|
|
@ -10235,8 +10235,8 @@ msgid "A&uto-rename source files"
|
|||
msgstr "Forrásfájlok a&utomatikus átnevezése"
|
||||
|
||||
#: ulng.rsdlgbuttonautorenametarget
|
||||
msgid "A&uto-rename target files"
|
||||
msgstr "Célfájlok a&utomatikus átnevezése"
|
||||
msgid "Auto-rename tar&get files"
|
||||
msgstr "&Célfájlok automatikus átnevezése"
|
||||
|
||||
#: ulng.rsdlgbuttoncancel
|
||||
msgctxt "ulng.rsdlgbuttoncancel"
|
||||
|
|
|
|||
|
|
@ -10421,7 +10421,7 @@ msgid "A&uto-rename source files"
|
|||
msgstr ""
|
||||
|
||||
#: ulng.rsdlgbuttonautorenametarget
|
||||
msgid "A&uto-rename target files"
|
||||
msgid "Auto-rename tar&get files"
|
||||
msgstr ""
|
||||
|
||||
#: ulng.rsdlgbuttoncancel
|
||||
|
|
|
|||
|
|
@ -10188,7 +10188,7 @@ msgid "A&uto-rename source files"
|
|||
msgstr "ソースファイルの名前を自動修正(&u)"
|
||||
|
||||
#: ulng.rsdlgbuttonautorenametarget
|
||||
msgid "A&uto-rename target files"
|
||||
msgid "Auto-rename tar&get files"
|
||||
msgstr "ターゲットファイルの自動リネーム(&u)"
|
||||
|
||||
#: ulng.rsdlgbuttoncancel
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -10487,7 +10487,7 @@ msgid "A&uto-rename source files"
|
|||
msgstr "&Auto-omdøp kildefiler"
|
||||
|
||||
#: ulng.rsdlgbuttonautorenametarget
|
||||
msgid "A&uto-rename target files"
|
||||
msgid "Auto-rename tar&get files"
|
||||
msgstr ""
|
||||
|
||||
#: ulng.rsdlgbuttoncancel
|
||||
|
|
|
|||
|
|
@ -9973,7 +9973,7 @@ msgid "A&uto-rename source files"
|
|||
msgstr "Auto-hernoem bronbestanden"
|
||||
|
||||
#: ulng.rsdlgbuttonautorenametarget
|
||||
msgid "A&uto-rename target files"
|
||||
msgid "Auto-rename tar&get files"
|
||||
msgstr "A&utomatisch doelbestanden hernoemen"
|
||||
|
||||
#: ulng.rsdlgbuttoncancel
|
||||
|
|
|
|||
|
|
@ -10487,7 +10487,7 @@ msgid "A&uto-rename source files"
|
|||
msgstr "&Auto-omdøyp kildefiler"
|
||||
|
||||
#: ulng.rsdlgbuttonautorenametarget
|
||||
msgid "A&uto-rename target files"
|
||||
msgid "Auto-rename tar&get files"
|
||||
msgstr ""
|
||||
|
||||
#: ulng.rsdlgbuttoncancel
|
||||
|
|
|
|||
|
|
@ -9924,7 +9924,7 @@ msgid "A&uto-rename source files"
|
|||
msgstr "A&utomatyczna zmiana nazwy plików źródłowych"
|
||||
|
||||
#: ulng.rsdlgbuttonautorenametarget
|
||||
msgid "A&uto-rename target files"
|
||||
msgid "Auto-rename tar&get files"
|
||||
msgstr "A&utomatyczna zmiana nazwy plików docelowych"
|
||||
|
||||
#: ulng.rsdlgbuttoncancel
|
||||
|
|
|
|||
|
|
@ -9951,7 +9951,7 @@ msgid "A&uto-rename source files"
|
|||
msgstr ""
|
||||
|
||||
#: ulng.rsdlgbuttonautorenametarget
|
||||
msgid "A&uto-rename target files"
|
||||
msgid "Auto-rename tar&get files"
|
||||
msgstr ""
|
||||
|
||||
#: ulng.rsdlgbuttoncancel
|
||||
|
|
|
|||
|
|
@ -10279,7 +10279,7 @@ msgid "A&uto-rename source files"
|
|||
msgstr "A&uto-renomear ficheiros fonte"
|
||||
|
||||
#: ulng.rsdlgbuttonautorenametarget
|
||||
msgid "A&uto-rename target files"
|
||||
msgid "Auto-rename tar&get files"
|
||||
msgstr ""
|
||||
|
||||
#: ulng.rsdlgbuttoncancel
|
||||
|
|
|
|||
|
|
@ -10401,7 +10401,7 @@ msgid "A&uto-rename source files"
|
|||
msgstr "Auto renomer arquivos fonte"
|
||||
|
||||
#: ulng.rsdlgbuttonautorenametarget
|
||||
msgid "A&uto-rename target files"
|
||||
msgid "Auto-rename tar&get files"
|
||||
msgstr ""
|
||||
|
||||
#: ulng.rsdlgbuttoncancel
|
||||
|
|
|
|||
|
|
@ -10266,7 +10266,7 @@ msgid "A&uto-rename source files"
|
|||
msgstr "A&uto redenumește fișierele sursă"
|
||||
|
||||
#: ulng.rsdlgbuttonautorenametarget
|
||||
msgid "A&uto-rename target files"
|
||||
msgid "Auto-rename tar&get files"
|
||||
msgstr ""
|
||||
|
||||
#: ulng.rsdlgbuttoncancel
|
||||
|
|
|
|||
|
|
@ -10224,7 +10224,7 @@ msgid "A&uto-rename source files"
|
|||
msgstr "Автоматич&ески переименовывать копируемые файлы"
|
||||
|
||||
#: ulng.rsdlgbuttonautorenametarget
|
||||
msgid "A&uto-rename target files"
|
||||
msgid "Auto-rename tar&get files"
|
||||
msgstr "Автоматически переименовывать имеющиеся фай&лы"
|
||||
|
||||
#: ulng.rsdlgbuttoncancel
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgstr ""
|
|||
"Project-Id-Version: Double Commander 1.0.0 beta\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2008-01-17 23:08+0300\n"
|
||||
"PO-Revision-Date: 2021-05-17 18:34+0200\n"
|
||||
"PO-Revision-Date: 2021-11-21 12:18+0100\n"
|
||||
"Last-Translator: Jozef Gaal <preklady@mayday.sk>\n"
|
||||
"Language-Team: Jozef Gaál <preklady@mayday.sk>\n"
|
||||
"Language: sk\n"
|
||||
|
|
@ -11,7 +11,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Native-Language: Slovenčina\n"
|
||||
"X-Generator: Poedit 2.4.1\n"
|
||||
"X-Generator: Poedit 3.0\n"
|
||||
|
||||
#: fsyncdirsdlg.rscomparingpercent
|
||||
msgid "Comparing... %d%% (ESC to cancel)"
|
||||
|
|
@ -85,7 +85,7 @@ msgstr "Vyh&radený priestor"
|
|||
|
||||
#: tfilesystemcopymoveoperationoptionsui.chkcopyonwrite.caption
|
||||
msgid "Copy on write"
|
||||
msgstr ""
|
||||
msgstr "Kopírovanie pri zápise"
|
||||
|
||||
#: tfilesystemcopymoveoperationoptionsui.chkverify.caption
|
||||
msgid "&Verify"
|
||||
|
|
@ -136,10 +136,9 @@ msgid "Build"
|
|||
msgstr "Build"
|
||||
|
||||
#: tfrmabout.lblcommit.caption
|
||||
#, fuzzy
|
||||
msgctxt "tfrmabout.lblcommit.caption"
|
||||
msgid "Commit"
|
||||
msgstr "Odovzdať"
|
||||
msgstr "Commit"
|
||||
|
||||
#: tfrmabout.lblfreepascalver.caption
|
||||
msgctxt "tfrmabout.lblfreepascalver.caption"
|
||||
|
|
@ -2130,7 +2129,7 @@ msgstr "Kopírovať súbory bez potvrdzovania"
|
|||
|
||||
#: tfrmmain.actcopypathnosepoffilestoclip.caption
|
||||
msgid "Copy Full Path of selected file(s) with no ending dir separator"
|
||||
msgstr ""
|
||||
msgstr "Kopírovať úplnú cestu k vybraným súborom bez koncového oddeľovača priečinkov"
|
||||
|
||||
#: tfrmmain.actcopypathoffilestoclip.caption
|
||||
msgid "Copy Full Path of selected file(s)"
|
||||
|
|
@ -2175,7 +2174,7 @@ msgstr "&Rýchle priečinky"
|
|||
|
||||
#: tfrmmain.actdoanycmcommand.caption
|
||||
msgid "Execute &internal command..."
|
||||
msgstr ""
|
||||
msgstr "Vykonať &interný príkaz..."
|
||||
|
||||
#: tfrmmain.actdoanycmcommand.hint
|
||||
msgid "Select any command and execute it"
|
||||
|
|
@ -4983,7 +4982,7 @@ msgstr ""
|
|||
#: tfrmoptionsdirectoryhotlistextra.lblapplysettingsfor.caption
|
||||
msgctxt "tfrmoptionsdirectoryhotlistextra.lblapplysettingsfor.caption"
|
||||
msgid "Do this for paths of:"
|
||||
msgstr ""
|
||||
msgstr "Urobiť to pre cesty:"
|
||||
|
||||
#: tfrmoptionsdirectoryhotlistextra.lbpathtoberelativeto.caption
|
||||
msgctxt "tfrmoptionsdirectoryhotlistextra.lbpathtoberelativeto.caption"
|
||||
|
|
@ -5441,7 +5440,7 @@ msgstr "...iba jedna skupina položiek"
|
|||
#: tfrmoptionsfavoritetabs.misortsinglegroup2.caption
|
||||
msgctxt "TFRMOPTIONSFAVORITETABS.MISORTSINGLEGROUP2.CAPTION"
|
||||
msgid "Sort single group of item(s) only"
|
||||
msgstr ""
|
||||
msgstr "Triediť len jednu skupinu položiek"
|
||||
|
||||
#: tfrmoptionsfavoritetabs.misortsinglesubmenu.caption
|
||||
msgctxt "TFRMOPTIONSFAVORITETABS.MISORTSINGLESUBMENU.CAPTION"
|
||||
|
|
@ -5688,7 +5687,7 @@ msgstr "Použiť aktuálne nastavenia na všetky aktuálne nakonfigurované náz
|
|||
#: tfrmoptionsfileassocextra.cbexecuteviashell.caption
|
||||
msgctxt "tfrmoptionsfileassocextra.cbexecuteviashell.caption"
|
||||
msgid "Execute via shell"
|
||||
msgstr ""
|
||||
msgstr "Spustiť cez shell"
|
||||
|
||||
#: tfrmoptionsfileassocextra.cbextendedcontextmenu.caption
|
||||
msgid "Extended context menu"
|
||||
|
|
@ -5700,12 +5699,12 @@ msgstr "Konfigurácia priradenia súborov"
|
|||
|
||||
#: tfrmoptionsfileassocextra.cboffertoaddtofileassociations.caption
|
||||
msgid "Offer to add selection to file association when not included already"
|
||||
msgstr ""
|
||||
msgstr "Ponuka na pridanie výberu do asociácie súborov, ak ešte nie je zahrnutá"
|
||||
|
||||
#: tfrmoptionsfileassocextra.cboffertoaddtofileassociations.hint
|
||||
msgctxt "tfrmoptionsfileassocextra.cboffertoaddtofileassociations.hint"
|
||||
msgid "When accessing file association, offer to add current selected file if not already included in a configured file type"
|
||||
msgstr ""
|
||||
msgstr "Pri prístupe k asociácii súborov ponúknuť pridanie aktuálne vybraného súboru, ak ešte nie je zahrnutý v nakonfigurovanom type súboru"
|
||||
|
||||
#: tfrmoptionsfileassocextra.cbopensystemwithterminalclose.caption
|
||||
msgctxt "tfrmoptionsfileassocextra.cbopensystemwithterminalclose.caption"
|
||||
|
|
@ -5730,7 +5729,7 @@ msgstr "Ikony"
|
|||
#: tfrmoptionsfileassocextra.ckbfileassocstartpath.caption
|
||||
msgctxt "tfrmoptionsfileassocextra.ckbfileassocstartpath.caption"
|
||||
msgid "Starting paths"
|
||||
msgstr ""
|
||||
msgstr "Počiatočné cesty"
|
||||
|
||||
#: tfrmoptionsfileassocextra.gbextendedcontextmenuoptions.caption
|
||||
msgid "Extended options items:"
|
||||
|
|
@ -5802,7 +5801,7 @@ msgstr "Preskočiť chyby súborových operácií a ich zapísať do okna zázna
|
|||
|
||||
#: tfrmoptionsfileoperations.cbtestarchiveconfirmation.caption
|
||||
msgid "Test archive operation"
|
||||
msgstr ""
|
||||
msgstr "Operácia testovania archívu"
|
||||
|
||||
#: tfrmoptionsfileoperations.cbverifychecksumconfirmation.caption
|
||||
msgid "Verify checksum operation"
|
||||
|
|
@ -6051,7 +6050,7 @@ msgstr "Formát veľkosti súboru:"
|
|||
|
||||
#: tfrmoptionsfilesviews.lblfootersizeformat.caption
|
||||
msgid "&Footer format:"
|
||||
msgstr ""
|
||||
msgstr "Formát pätičky:"
|
||||
|
||||
#: tfrmoptionsfilesviews.lblgigabyte.caption
|
||||
msgid "&Gigabyte:"
|
||||
|
|
@ -6059,7 +6058,7 @@ msgstr "&Gigabyte:"
|
|||
|
||||
#: tfrmoptionsfilesviews.lblheadersizeformat.caption
|
||||
msgid "&Header format:"
|
||||
msgstr ""
|
||||
msgstr "Formát záhlavia:"
|
||||
|
||||
#: tfrmoptionsfilesviews.lblkilobyte.caption
|
||||
msgid "&Kilobyte:"
|
||||
|
|
@ -6075,7 +6074,7 @@ msgstr "Vlož&iť nové súbory:"
|
|||
|
||||
#: tfrmoptionsfilesviews.lbloperationsizeformat.caption
|
||||
msgid "O&peration size format:"
|
||||
msgstr ""
|
||||
msgstr "Formát veľkosti operácie:"
|
||||
|
||||
#: tfrmoptionsfilesviews.lblsortfoldermode.caption
|
||||
msgid "So&rting directories:"
|
||||
|
|
@ -6182,7 +6181,7 @@ msgstr "Šablóna..."
|
|||
|
||||
#: tfrmoptionsfiletypescolors.gbfiletypescolors.caption
|
||||
msgid "File types colors (sort by drag&&drop)"
|
||||
msgstr "Farby typu súborov (trieď podľa drag&&drop)"
|
||||
msgstr "Farby typu súborov (triediť podľa ťahať&&pustiť)"
|
||||
|
||||
#: tfrmoptionsfiletypescolors.lblcategoryattr.caption
|
||||
msgid "Category a&ttributes:"
|
||||
|
|
@ -6355,7 +6354,7 @@ msgstr "Zobraziť prekryté i&kony, napr. pre odkazy"
|
|||
|
||||
#: tfrmoptionsicons.chkshowhiddendimmed.caption
|
||||
msgid "&Dimmed hidden files (slower)"
|
||||
msgstr ""
|
||||
msgstr "&Stlmené skryté súbory (pomalšie)"
|
||||
|
||||
#: tfrmoptionsicons.gbdisablespecialicons.caption
|
||||
msgid "Disable special icons"
|
||||
|
|
@ -6552,7 +6551,7 @@ msgstr "&Zbaliť/Rozbaliť"
|
|||
|
||||
#: tfrmoptionslog.cblogcommandlineexecution.caption
|
||||
msgid "External command line execution"
|
||||
msgstr ""
|
||||
msgstr "Spustenie externého príkazového riadku"
|
||||
|
||||
#: tfrmoptionslog.cblogcpmvln.caption
|
||||
msgid "Cop&y/Move/Create link/symlink"
|
||||
|
|
@ -6647,7 +6646,7 @@ msgstr "Vždy isť na koreňový priečinok pri zmene diskov"
|
|||
|
||||
#: tfrmoptionsmisc.chkshowcurdirtitlebar.caption
|
||||
msgid "Show ¤t directory in the main window title bar"
|
||||
msgstr ""
|
||||
msgstr "Zobraziť &aktuálny priečinok v hlavnom paneli okna"
|
||||
|
||||
#: tfrmoptionsmisc.chkshowwarningmessages.caption
|
||||
msgid "Show &warning messages (\"OK\" button only)"
|
||||
|
|
@ -6668,7 +6667,7 @@ msgstr "Komentáre súboru (descript.ion)"
|
|||
|
||||
#: tfrmoptionsmisc.gbtcexportimport.caption
|
||||
msgid "Regarding TC export/import:"
|
||||
msgstr ""
|
||||
msgstr "Týkajúce sa TC exportu/importu:"
|
||||
|
||||
#: tfrmoptionsmisc.lbldescrdefaultencoding.caption
|
||||
msgctxt "TFRMOPTIONSMISC.LBLDESCRDEFAULTENCODING.CAPTION"
|
||||
|
|
@ -6681,7 +6680,7 @@ msgstr "Konfiguračný súbor:"
|
|||
|
||||
#: tfrmoptionsmisc.lbltcexecutable.caption
|
||||
msgid "TC executable:"
|
||||
msgstr ""
|
||||
msgstr "Spustiteľný súbor TC:"
|
||||
|
||||
#: tfrmoptionsmisc.lbltcpathfortool.caption
|
||||
msgid "Toolbar output path:"
|
||||
|
|
@ -6769,7 +6768,7 @@ msgstr ""
|
|||
|
||||
#: tfrmoptionsmultirename.ckbfilenamewithfullpathinlog.caption
|
||||
msgid "Log filenames with full path"
|
||||
msgstr ""
|
||||
msgstr "Zaznamenávať názvy súborov s úplnou cestou"
|
||||
|
||||
#: tfrmoptionsmultirename.ckbshowmenubarontop.caption
|
||||
msgid "Show menu bar on top "
|
||||
|
|
@ -6785,19 +6784,19 @@ msgstr "Nahradiť neplatný znak názvu súboru znakom"
|
|||
|
||||
#: tfrmoptionsmultirename.rbrenaminglogappendsamefile.caption
|
||||
msgid "Append in the same rename log file"
|
||||
msgstr ""
|
||||
msgstr "Pripojiť do toho istého súboru záznamu premenovania"
|
||||
|
||||
#: tfrmoptionsmultirename.rbrenaminglogperpreset.caption
|
||||
msgid "Per preset"
|
||||
msgstr ""
|
||||
msgstr "Podľa predvoľby"
|
||||
|
||||
#: tfrmoptionsmultirename.rgexitmodifiedpreset.caption
|
||||
msgid "Exit with modified preset"
|
||||
msgstr ""
|
||||
msgstr "Ukončiť s upravenou predvoľbou"
|
||||
|
||||
#: tfrmoptionsmultirename.rglaunchbehavior.caption
|
||||
msgid "Preset at launch"
|
||||
msgstr ""
|
||||
msgstr "Prevoľba pri spustení"
|
||||
|
||||
#: tfrmoptionspluginsbase.btnaddplugin.caption
|
||||
msgctxt "tfrmoptionspluginsbase.btnaddplugin.caption"
|
||||
|
|
@ -6876,7 +6875,7 @@ msgstr "Názov súboru"
|
|||
|
||||
#: tfrmoptionspluginsgroup.btnpathtoberelativetoall.caption
|
||||
msgid "Apply current settings to all current configured plugins"
|
||||
msgstr ""
|
||||
msgstr "Použiť aktuálne nastavenia na všetky aktuálne nakonfigurované zásuvné moduly"
|
||||
|
||||
#: tfrmoptionspluginsgroup.ckbautotweak.caption
|
||||
msgid "When adding a new plugin, automatically go in tweak window"
|
||||
|
|
@ -7118,23 +7117,23 @@ msgstr "Vpravo"
|
|||
|
||||
#: tfrmoptionstabsextra.cbgotoconfigafterresave.caption
|
||||
msgid "Goto to Favorite Tabs Configuration after resaving"
|
||||
msgstr ""
|
||||
msgstr "Prechod na konfiguráciu obľúbených kariet po opätovnom uložení"
|
||||
|
||||
#: tfrmoptionstabsextra.cbgotoconfigaftersave.caption
|
||||
msgid "Goto to Favorite Tabs Configuration after saving a new one"
|
||||
msgstr ""
|
||||
msgstr "Prechod na konfiguráciu obľúbených kariet po uložení novej"
|
||||
|
||||
#: tfrmoptionstabsextra.cbusefavoritetabsextraoptions.caption
|
||||
msgid "Enable Favorite Tabs extra options (select target side when restore, etc.)"
|
||||
msgstr ""
|
||||
msgstr "Povoliť ďalšie možnosti obľúbených kariet (výber cieľovej strany pri obnovení atď.)"
|
||||
|
||||
#: tfrmoptionstabsextra.gbdefaulttabsavedrestoration.caption
|
||||
msgid "Default extra settings when saving new Favorite Tabs:"
|
||||
msgstr ""
|
||||
msgstr "Predvolené dodatočné nastavenia pri ukladaní nových obľúbených kariet:"
|
||||
|
||||
#: tfrmoptionstabsextra.gbtabs.caption
|
||||
msgid "Folder tabs headers extra"
|
||||
msgstr ""
|
||||
msgstr "Extra nastavenia záhlavia záložiek priečinkov"
|
||||
|
||||
#: tfrmoptionstabsextra.lbldefaultexistingtabstokeep.caption
|
||||
msgid "When restoring tab, existing tabs to keep:"
|
||||
|
|
@ -7155,7 +7154,7 @@ msgstr "Ukladať históriu priečinkov pomocou obľúbených kariet:"
|
|||
|
||||
#: tfrmoptionstabsextra.rgwheretoadd.caption
|
||||
msgid "Default position in menu when saving a new Favorite Tabs:"
|
||||
msgstr ""
|
||||
msgstr "Predvolená pozícia v ponuke pri ukladaní nových obľúbených kariet:"
|
||||
|
||||
#: tfrmoptionsterminal.edrunintermcloseparams.hint
|
||||
msgctxt "TFRMOPTIONSTERMINAL.EDRUNINTERMCLOSEPARAMS.HINT"
|
||||
|
|
@ -7368,7 +7367,7 @@ msgstr "Exportovať..."
|
|||
|
||||
#: tfrmoptionstoolbarbase.miexportcurrent.caption
|
||||
msgid "Current toolbar..."
|
||||
msgstr ""
|
||||
msgstr "Aktuálny panel nástrojov..."
|
||||
|
||||
#: tfrmoptionstoolbarbase.miexportcurrenttodcbar.caption
|
||||
msgctxt "tfrmoptionstoolbarbase.MIEXPORTCURRENTTODCBAR.CAPTION"
|
||||
|
|
@ -7668,7 +7667,7 @@ msgstr "Typ tlačidla"
|
|||
|
||||
#: tfrmoptionstoolbarextra.btnpathtoberelativetoall.caption
|
||||
msgid "Apply current settings to all configured filenames and paths"
|
||||
msgstr ""
|
||||
msgstr "Použiť súčasné nastavenia na všetky nakonfigurované názvy súborov a cesty"
|
||||
|
||||
#: tfrmoptionstoolbarextra.ckbtoolbarcommand.caption
|
||||
msgctxt "tfrmoptionstoolbarextra.ckbtoolbarcommand.caption"
|
||||
|
|
@ -7683,7 +7682,7 @@ msgstr "Ikony"
|
|||
#: tfrmoptionstoolbarextra.ckbtoolbarstartpath.caption
|
||||
msgctxt "tfrmoptionstoolbarextra.ckbtoolbarstartpath.caption"
|
||||
msgid "Starting paths"
|
||||
msgstr ""
|
||||
msgstr "Počiatočné cesty"
|
||||
|
||||
#: tfrmoptionstoolbarextra.gbtoolbaroptionsextra.caption
|
||||
msgctxt "tfrmoptionstoolbarextra.gbtoolbaroptionsextra.caption"
|
||||
|
|
@ -7692,7 +7691,7 @@ msgstr "Cesty"
|
|||
|
||||
#: tfrmoptionstoolbarextra.lblapplysettingsfor.caption
|
||||
msgid "Do this for files and paths for:"
|
||||
msgstr ""
|
||||
msgstr "Urobiť to pre súbory a cesty pre:"
|
||||
|
||||
#: tfrmoptionstoolbarextra.lbpathtoberelativeto.caption
|
||||
msgctxt "tfrmoptionstoolbarextra.lbpathtoberelativeto.caption"
|
||||
|
|
@ -7804,7 +7803,7 @@ msgstr "&Typy súborov:"
|
|||
|
||||
#: tfrmoptionstooltips.mitooltipsfiletypediscardmodification.caption
|
||||
msgid "Discard Modifications"
|
||||
msgstr ""
|
||||
msgstr "Zrušiť úpravy"
|
||||
|
||||
#: tfrmoptionstooltips.mitooltipsfiletypeexport.caption
|
||||
msgctxt "tfrmoptionstooltips.mitooltipsfiletypeexport.caption"
|
||||
|
|
@ -7831,7 +7830,7 @@ msgstr "S ponukou a interný príkazom"
|
|||
|
||||
#: tfrmoptionstreeviewmenu.ckbdoubleclickselect.caption
|
||||
msgid "Double click in tree select and exit"
|
||||
msgstr ""
|
||||
msgstr "Dvojklikom v strome vyberte a ukončite"
|
||||
|
||||
#: tfrmoptionstreeviewmenu.ckbfavoritatabsfrommenucommand.caption
|
||||
msgctxt "TFRMOPTIONSTREEVIEWMENU.CKBFAVORITATABSFROMMENUCOMMAND.CAPTION"
|
||||
|
|
@ -7852,19 +7851,19 @@ msgstr ""
|
|||
|
||||
#: tfrmoptionstreeviewmenu.ckbuseforcommandlinehistory.caption
|
||||
msgid "Use it for Command Line History"
|
||||
msgstr ""
|
||||
msgstr "Použiť toto pre históriu príkazového riadku"
|
||||
|
||||
#: tfrmoptionstreeviewmenu.ckbusefordirhistory.caption
|
||||
msgid "Use it for the Dir History"
|
||||
msgstr ""
|
||||
msgstr "Použiť toto pre históriu priečinkov"
|
||||
|
||||
#: tfrmoptionstreeviewmenu.ckbuseforviewhistory.caption
|
||||
msgid "Use it for the View History (Visited paths for active view)"
|
||||
msgstr ""
|
||||
msgstr "Použiť toto pre históriu zobrazení (navštívené cesty pre aktívne zobrazenie)"
|
||||
|
||||
#: tfrmoptionstreeviewmenu.gbbehavior.caption
|
||||
msgid "Behavior regarding selection:"
|
||||
msgstr ""
|
||||
msgstr "Správanie v súvislosti s výberom:"
|
||||
|
||||
#: tfrmoptionstreeviewmenu.gbtreeviewmenusettings.caption
|
||||
msgid "Tree View Menus related options:"
|
||||
|
|
@ -7880,11 +7879,11 @@ msgstr "*POZNÁMKA: Pokiaľ ide o možnosti, ako je citlivosť na veľké a mal
|
|||
|
||||
#: tfrmoptionstreeviewmenu.lbluseindirectoryhotlist.caption
|
||||
msgid "With Directory Hotlist:"
|
||||
msgstr ""
|
||||
msgstr "S priečinkom Rýchlych priečinkov:"
|
||||
|
||||
#: tfrmoptionstreeviewmenu.lblusewithfavoritetabs.caption
|
||||
msgid "With Favorite Tabs:"
|
||||
msgstr ""
|
||||
msgstr "S obľúbenými kartami:"
|
||||
|
||||
#: tfrmoptionstreeviewmenu.lblusewithhistory.caption
|
||||
msgid "With History:"
|
||||
|
|
@ -7957,7 +7956,7 @@ msgstr ">>"
|
|||
|
||||
#: tfrmoptionstreeviewmenucolor.cbkusagekeyboardshortcut.caption
|
||||
msgid "Use and display keyboard shortcut for choosing items"
|
||||
msgstr ""
|
||||
msgstr "Použiť a zobraziť klávesovú skratku na výber položiek"
|
||||
|
||||
#: tfrmoptionstreeviewmenucolor.gbfont.caption
|
||||
msgid "Font"
|
||||
|
|
@ -8021,7 +8020,7 @@ msgstr "Nevyznačiteľné pod kurzorom:"
|
|||
|
||||
#: tfrmoptionstreeviewmenucolor.treeviewmenusample.hint
|
||||
msgid "Change color on left and you'll see here a preview of what your Tree View Menus will look likes with this sample."
|
||||
msgstr ""
|
||||
msgstr "Zmeňte farbu na ľavej strane a uvidíte tu náhľad toho, ako budú vyzerať vaše ponuky v zobrazení stromu s touto vzorkou."
|
||||
|
||||
#: tfrmoptionsviewer.btnbackviewercolor.caption
|
||||
msgctxt "TFRMOPTIONSVIEWER.BTNBACKVIEWERCOLOR.CAPTION"
|
||||
|
|
@ -8313,7 +8312,7 @@ msgstr "Vybrať duplicitné súbory"
|
|||
|
||||
#: tfrmselectduplicates.chkleaveunselected.caption
|
||||
msgid "&Leave at least one file in each group unselected:"
|
||||
msgstr ""
|
||||
msgstr "&Nechajte aspoň jeden nevybraný súbor v každej skupine:"
|
||||
|
||||
#: tfrmselectduplicates.cmbincludemask.text
|
||||
msgctxt "tfrmselectduplicates.cmbincludemask.text"
|
||||
|
|
@ -8361,7 +8360,7 @@ msgstr "Výsledok:"
|
|||
|
||||
#: tfrmselectpathrange.lblselectdirectories.caption
|
||||
msgid "&Select the directories to insert (you may select more than one)"
|
||||
msgstr ""
|
||||
msgstr "&Vyberte adresáre, ktoré chcete vložiť (môžete vybrať viac ako jeden)"
|
||||
|
||||
#: tfrmselectpathrange.rbfirstfromend.caption
|
||||
msgctxt "tfrmselectpathrange.rbfirstfromend.caption"
|
||||
|
|
@ -9633,7 +9632,7 @@ msgstr "Potrebujete povolenia administrátora"
|
|||
|
||||
#: uadministrator.rselevationrequiredcopy
|
||||
msgid "to copy this object:"
|
||||
msgstr ""
|
||||
msgstr "na skopírovanie tohto objektu:"
|
||||
|
||||
#: uadministrator.rselevationrequiredcreate
|
||||
msgid "to create this object:"
|
||||
|
|
@ -9904,7 +9903,7 @@ msgstr " Pridá: "
|
|||
|
||||
#: ulng.rsdiffcomparing
|
||||
msgid "Comparing..."
|
||||
msgstr ""
|
||||
msgstr "Porovnávam..."
|
||||
|
||||
#: ulng.rsdiffdeletes
|
||||
msgid " Deletes: "
|
||||
|
|
@ -9923,7 +9922,6 @@ msgid " Modifies: "
|
|||
msgstr " Upraví: "
|
||||
|
||||
#: ulng.rsdifftextdifferenceencoding
|
||||
#, fuzzy
|
||||
msgctxt "ulng.rsdifftextdifferenceencoding"
|
||||
msgid "Encoding"
|
||||
msgstr "Kódovanie"
|
||||
|
|
@ -9960,8 +9958,8 @@ msgid "A&uto-rename source files"
|
|||
msgstr "A&utomaticky premenovať zdrojové súbory"
|
||||
|
||||
#: ulng.rsdlgbuttonautorenametarget
|
||||
msgid "A&uto-rename target files"
|
||||
msgstr "A&utomaticky premenovať cieľové súbory"
|
||||
msgid "Auto-rename tar&get files"
|
||||
msgstr "Automaticky premenovať cieľové súbory"
|
||||
|
||||
#: ulng.rsdlgbuttoncancel
|
||||
msgctxt "ulng.rsdlgbuttoncancel"
|
||||
|
|
@ -10161,7 +10159,7 @@ msgstr "s interným editorom"
|
|||
#: ulng.rsexecuteviashell
|
||||
msgctxt "ulng.rsexecuteviashell"
|
||||
msgid "Execute via shell"
|
||||
msgstr ""
|
||||
msgstr "Spustiť cez shell"
|
||||
|
||||
#: ulng.rsexecuteviaterminalclose
|
||||
msgctxt "ulng.rsexecuteviaterminalclose"
|
||||
|
|
@ -10247,7 +10245,7 @@ msgstr "Súbory modulu"
|
|||
|
||||
#: ulng.rsfilterprogramslibraries
|
||||
msgid "Programs and Libraries"
|
||||
msgstr ""
|
||||
msgstr "Programy a knižnice"
|
||||
|
||||
#: ulng.rsfilterstatus
|
||||
msgid "FILTER"
|
||||
|
|
@ -10312,7 +10310,7 @@ msgstr "Hľadať súbory"
|
|||
|
||||
#: ulng.rsfindtimeofscan
|
||||
msgid "Time of scan: "
|
||||
msgstr ""
|
||||
msgstr "Čas skenovania: "
|
||||
|
||||
#: ulng.rsfindwherebeg
|
||||
msgid "Begin at"
|
||||
|
|
@ -10617,7 +10615,7 @@ msgstr "Osmičkové"
|
|||
|
||||
#: ulng.rsmnucopynetnamestoclip
|
||||
msgid "Copy names with UNC path"
|
||||
msgstr ""
|
||||
msgstr "Kopírovať názvy s UNC cestou"
|
||||
|
||||
#: ulng.rsmnucreateshortcut
|
||||
msgid "Create Shortcut..."
|
||||
|
|
@ -10967,7 +10965,7 @@ msgstr "Neznámy formát archívu"
|
|||
|
||||
#: ulng.rsmsgexecutablepath
|
||||
msgid "Executable: %s"
|
||||
msgstr ""
|
||||
msgstr "Spustiteľný súbor: %s"
|
||||
|
||||
#: ulng.rsmsgexitstatuscode
|
||||
msgid "Exit status:"
|
||||
|
|
@ -10983,7 +10981,7 @@ msgstr ""
|
|||
|
||||
#: ulng.rsmsgfavoritetabsentername
|
||||
msgid "Enter a name for this new Favorite Tabs entry:"
|
||||
msgstr ""
|
||||
msgstr "Zadajte názov tejto novej Obľúbenej karty:"
|
||||
|
||||
#: ulng.rsmsgfavoritetabsenternametitle
|
||||
msgid "Saving a new Favorite Tabs entry"
|
||||
|
|
@ -11014,7 +11012,6 @@ msgid "Last Favorite Tabs modification have been saved yet. Do you want to save
|
|||
msgstr ""
|
||||
|
||||
#: ulng.rsmsgfavoritetabssimplemode
|
||||
#, fuzzy
|
||||
msgctxt "ulng.rsmsgfavoritetabssimplemode"
|
||||
msgid "Keep saving dir history with Favorite Tabs:"
|
||||
msgstr "Ukladať históriu priečinkov pomocou obľúbených kariet:"
|
||||
|
|
@ -11137,7 +11134,7 @@ msgstr ""
|
|||
|
||||
#: ulng.rsmsghotdirdemopath
|
||||
msgid "This will change active frame to the following path:"
|
||||
msgstr ""
|
||||
msgstr "Týmto sa aktívny rám zmení na nasledujúcu cestu:"
|
||||
|
||||
#: ulng.rsmsghotdirdemotarget
|
||||
msgid "And inactive frame would change to the following path:"
|
||||
|
|
@ -11157,7 +11154,7 @@ msgstr "Exportovať všetko!"
|
|||
|
||||
#: ulng.rsmsghotdirexporthotlist
|
||||
msgid "Export Directory Hotlist - Select the entries you want to export"
|
||||
msgstr ""
|
||||
msgstr "Exportovať zoznam rýchlych adresárov - Vyberte položky, ktoré chcete exportovať"
|
||||
|
||||
#: ulng.rsmsghotdirexportsel
|
||||
msgid "Export selected"
|
||||
|
|
@ -11170,7 +11167,7 @@ msgstr "Importovať všetko!"
|
|||
|
||||
#: ulng.rsmsghotdirimporthotlist
|
||||
msgid "Import Directory Hotlist - Select the entries you want to import"
|
||||
msgstr ""
|
||||
msgstr "Importovať zoznam rýchlych adresárov - Vyberte položky, ktoré chcete importovať"
|
||||
|
||||
#: ulng.rsmsghotdirimportsel
|
||||
msgctxt "ulng.rsmsghotdirimportsel"
|
||||
|
|
@ -11246,19 +11243,19 @@ msgstr "Názov podponuky"
|
|||
|
||||
#: ulng.rsmsghotdirtarget
|
||||
msgid "Hotdir target"
|
||||
msgstr ""
|
||||
msgstr "Cieľ Rýchleho priečinka"
|
||||
|
||||
#: ulng.rsmsghotdirtiporderpath
|
||||
msgid "Determine if you want the active frame to be sorted in a specified order after changing directory"
|
||||
msgstr ""
|
||||
msgstr "Určite, či sa má aktívny rám po zmene priečinku zoradiť v určenom poradí"
|
||||
|
||||
#: ulng.rsmsghotdirtipordertarget
|
||||
msgid "Determine if you want the not active frame to be sorted in a specified order after changing directory"
|
||||
msgstr ""
|
||||
msgstr "Určite, či chcete, aby sa neaktívny rám po zmene adresára zoradil v určenom poradí"
|
||||
|
||||
#: ulng.rsmsghotdirtipspecialdirbut
|
||||
msgid "Some functions to select appropriate path relative, absolute, windows special folders, etc."
|
||||
msgstr ""
|
||||
msgstr "Niektoré funkcie na výber vhodnej cesty relatívnej, absolútnej, špeciálnych priečinkov okien atď."
|
||||
|
||||
#: ulng.rsmsghotdirtotalbackuped
|
||||
msgid ""
|
||||
|
|
@ -11363,7 +11360,7 @@ msgstr "Chyba: "
|
|||
|
||||
#: ulng.rsmsglogextcmdlaunch
|
||||
msgid "Launch external"
|
||||
msgstr ""
|
||||
msgstr "Spustiť externý"
|
||||
|
||||
#: ulng.rsmsglogextcmdresult
|
||||
msgid "Result external"
|
||||
|
|
@ -11395,11 +11392,11 @@ msgstr "Komprimovať do súboru %s"
|
|||
|
||||
#: ulng.rsmsglogprogramshutdown
|
||||
msgid "Program shutdown"
|
||||
msgstr ""
|
||||
msgstr "Vypnutie programu"
|
||||
|
||||
#: ulng.rsmsglogprogramstart
|
||||
msgid "Program start"
|
||||
msgstr ""
|
||||
msgstr "Štart programu"
|
||||
|
||||
#: ulng.rsmsglogrmdir
|
||||
msgid "Remove directory %s"
|
||||
|
|
@ -11467,11 +11464,11 @@ msgstr "Nie je zavedené."
|
|||
|
||||
#: ulng.rsmsgobjectnotexists
|
||||
msgid "Object does not exist!"
|
||||
msgstr ""
|
||||
msgstr "Objekt neexistuje!"
|
||||
|
||||
#: ulng.rsmsgopeninanotherprogram
|
||||
msgid "The action cannot be completed because the file is open in another program:"
|
||||
msgstr ""
|
||||
msgstr "Akciu nemožno dokončiť, pretože súbor je otvorený v inom programe:"
|
||||
|
||||
#: ulng.rsmsgpanelpreview
|
||||
msgctxt "ulng.rsmsgpanelpreview"
|
||||
|
|
@ -11593,7 +11590,7 @@ msgstr "Pridať cestu z neaktívneho okna"
|
|||
|
||||
#: ulng.rsmsgspecialdirbrowssel
|
||||
msgid "Browse and use selected path"
|
||||
msgstr ""
|
||||
msgstr "Prehľadávať a použiť vybranú cestu"
|
||||
|
||||
#: ulng.rsmsgspecialdirenvvar
|
||||
msgid "Use environment variable..."
|
||||
|
|
@ -11617,11 +11614,11 @@ msgstr "Prejsť na špeciálny priečinok Windowsu (TC)..."
|
|||
|
||||
#: ulng.rsmsgspecialdirmakereltohotdir
|
||||
msgid "Make relative to hotdir path"
|
||||
msgstr ""
|
||||
msgstr "Urobiť relatívnu cestu k rýchlemu priečinku"
|
||||
|
||||
#: ulng.rsmsgspecialdirmkabso
|
||||
msgid "Make path absolute"
|
||||
msgstr ""
|
||||
msgstr "Urobiť cestu absolútnou"
|
||||
|
||||
#: ulng.rsmsgspecialdirmkdcrel
|
||||
msgid "Make relative to Double Commander special path..."
|
||||
|
|
@ -11705,7 +11702,7 @@ msgstr "UPOZORNENIE: Ukončenie procesu môže spôsobiť nežiaduce výsledky v
|
|||
|
||||
#: ulng.rsmsgtestarchive
|
||||
msgid "Do you want to test selected archives?"
|
||||
msgstr ""
|
||||
msgstr "Chcete otestovať vybrané archívy?"
|
||||
|
||||
#: ulng.rsmsgthisisnowinclipboard
|
||||
msgid "\"%s\" is now in the clipboard"
|
||||
|
|
@ -11732,6 +11729,8 @@ msgid ""
|
|||
"Saved!\n"
|
||||
"Toolbar filename: %s\n"
|
||||
msgstr ""
|
||||
"Uložené!\n"
|
||||
"Názov súboru panela nástrojov: %s\n"
|
||||
|
||||
#: ulng.rsmsgtoomanyfilesselected
|
||||
msgid "Too many files selected."
|
||||
|
|
@ -11868,7 +11867,7 @@ msgstr "[Posledné použité]"
|
|||
|
||||
#: ulng.rsmulrenlaunchbehavioroptions
|
||||
msgid "Last masks under [Last One] preset;Last preset;New fresh masks"
|
||||
msgstr ""
|
||||
msgstr "Posledné masky pod predvoľbou [Posledná];Posledná predvoľba;Nové čerstvé masky"
|
||||
|
||||
#: ulng.rsmulrenlogstart
|
||||
msgctxt "ulng.rsmulrenlogstart"
|
||||
|
|
@ -11968,7 +11967,7 @@ msgstr "Meno"
|
|||
|
||||
#: ulng.rsmulrenmaskparent
|
||||
msgid "Parent folder(s)"
|
||||
msgstr ""
|
||||
msgstr "Nadradený adresár(e)"
|
||||
|
||||
#: ulng.rsmulrenmasksec
|
||||
msgid "Second"
|
||||
|
|
@ -12001,7 +12000,7 @@ msgstr "Uložiť predvoľbu ako"
|
|||
|
||||
#: ulng.rsmulrenpromptnewnameexists
|
||||
msgid "Preset name already exists. Overwrite?"
|
||||
msgstr ""
|
||||
msgstr "Názov predvoľby už existuje. Nahradiť?"
|
||||
|
||||
#: ulng.rsmulrenpromptnewpresetname
|
||||
msgid "Enter new preset name"
|
||||
|
|
@ -12046,7 +12045,7 @@ msgstr "Ľutujeme, zatiaľ žiadne okno „Nájsť súbory“..."
|
|||
|
||||
#: ulng.rsnootherfindfileswindowtoclose
|
||||
msgid "Sorry, no other \"Find files\" window to close and free from memory..."
|
||||
msgstr ""
|
||||
msgstr "Je mi ľúto, ale žiadne iné okno \"Nájsť súbory\", ktoré by sa dalo zavrieť a uvoľniť z pamäte..."
|
||||
|
||||
#: ulng.rsopenwithdevelopment
|
||||
msgid "Development"
|
||||
|
|
@ -12459,7 +12458,7 @@ msgstr "Prvý;Posledný;"
|
|||
|
||||
#: ulng.rsoptconfigsortorder
|
||||
msgid "Classic, legacy order;Alphabetic order (but language still first)"
|
||||
msgstr ""
|
||||
msgstr "Klasické, staršie poradie;Abecedné poradie (ale jazyk stále na prvom mieste)"
|
||||
|
||||
#: ulng.rsoptconfigtreestate
|
||||
msgid "Full expand;Full collapse"
|
||||
|
|
@ -12483,7 +12482,7 @@ msgstr "oddelenom okne;minimalizovanom oddelenom okne;panely operácií"
|
|||
|
||||
#: ulng.rsoptfilesizefloat
|
||||
msgid "float"
|
||||
msgstr ""
|
||||
msgstr "pohyblivý"
|
||||
|
||||
#: ulng.rsopthotkeysadddeleteshortcutlong
|
||||
msgid "Shortcut %s for cm_Delete will be registered, so it can be used to reverse this setting."
|
||||
|
|
@ -12742,6 +12741,9 @@ msgid ""
|
|||
"\n"
|
||||
"Do you want to save modifications?\n"
|
||||
msgstr ""
|
||||
"Nastavenia sa zmenili v \"%s\"\n"
|
||||
"\n"
|
||||
"Chcete uložiť zmeny?\n"
|
||||
|
||||
#: ulng.rsoptionseditorplugins
|
||||
msgctxt "ulng.rsoptionseditorplugins"
|
||||
|
|
@ -12800,7 +12802,7 @@ msgstr "na vrch zoznamu súborov;Po priečinkoch (ak sú priečinky zoradené pr
|
|||
|
||||
#: ulng.rsoptpersonalizedfilesizeformat
|
||||
msgid "Personalized float;Personalized byte;Personalized kilobyte;Personalized megabyte;Personalized gigabyte;Personalized terabyte"
|
||||
msgstr ""
|
||||
msgstr "Personalizovaný pohyblivý;Personalizovaný bajt;Personalizovaný kilobaj;Personalizovaný megabajt;Personalizovaný gigabajt;Personalizovaný terabajt"
|
||||
|
||||
#: ulng.rsoptpluginalreadyassigned
|
||||
msgid "Plugin %s is already assigned for the following extensions:"
|
||||
|
|
@ -12963,7 +12965,7 @@ msgstr "nemeniť pozíciu;použiť rovnaké nastavenia ako pre nové súbory;Na
|
|||
|
||||
#: ulng.rspluginfilenamestylelist
|
||||
msgid "With complete absolute path;Path relative to %COMMANDER_PATH%;Relative to the following"
|
||||
msgstr ""
|
||||
msgstr "S úplnou absolútnou cestou;Cesta relatívna k %COMMANDER_PATH%;Relatívna k nasledujúcej"
|
||||
|
||||
#: ulng.rspluginsearchcontainscasesenstive
|
||||
msgid "contains(case)"
|
||||
|
|
@ -13443,7 +13445,7 @@ msgstr "Ľavý panel"
|
|||
|
||||
#: ulng.rsvarlistfilename
|
||||
msgid "Temporary filename of list of filenames"
|
||||
msgstr ""
|
||||
msgstr "Dočasný názov súboru zoznamu názvov súborov"
|
||||
|
||||
#: ulng.rsvarlistfullfilename
|
||||
msgid "Temporary filename of list of complete filenames (path+filename)"
|
||||
|
|
@ -13555,7 +13557,7 @@ msgstr ""
|
|||
|
||||
#: ulng.rsvarwillnotdointerminal
|
||||
msgid "Command will be done in terminal, closed at the end"
|
||||
msgstr ""
|
||||
msgstr "Príkaz sa vykoná v termináli, na konci sa zavrie"
|
||||
|
||||
#: ulng.rsvarwillnothaveendingdelimiter
|
||||
msgid "Paths will not have ending delimiter (default)"
|
||||
|
|
@ -13568,7 +13570,7 @@ msgstr "Sieť"
|
|||
|
||||
#: ulng.rsvfsrecyclebin
|
||||
msgid "Recycle Bin"
|
||||
msgstr ""
|
||||
msgstr "Kôš"
|
||||
|
||||
#: ulng.rsviewabouttext
|
||||
msgid "Internal Viewer of Double Commander."
|
||||
|
|
|
|||
|
|
@ -10064,7 +10064,7 @@ msgid "A&uto-rename source files"
|
|||
msgstr "&Samodejno preimenuj izvorne datoteke"
|
||||
|
||||
#: ulng.rsdlgbuttonautorenametarget
|
||||
msgid "A&uto-rename target files"
|
||||
msgid "Auto-rename tar&get files"
|
||||
msgstr ""
|
||||
|
||||
#: ulng.rsdlgbuttoncancel
|
||||
|
|
|
|||
|
|
@ -10472,7 +10472,7 @@ msgid "A&uto-rename source files"
|
|||
msgstr "&Самостално преименуј изворне датотеке"
|
||||
|
||||
#: ulng.rsdlgbuttonautorenametarget
|
||||
msgid "A&uto-rename target files"
|
||||
msgid "Auto-rename tar&get files"
|
||||
msgstr ""
|
||||
|
||||
#: ulng.rsdlgbuttoncancel
|
||||
|
|
|
|||
|
|
@ -10473,7 +10473,7 @@ msgid "A&uto-rename source files"
|
|||
msgstr "&Samostalno preimenuj izvorne datoteke"
|
||||
|
||||
#: ulng.rsdlgbuttonautorenametarget
|
||||
msgid "A&uto-rename target files"
|
||||
msgid "Auto-rename tar&get files"
|
||||
msgstr ""
|
||||
|
||||
#: ulng.rsdlgbuttoncancel
|
||||
|
|
|
|||
|
|
@ -10639,7 +10639,7 @@ msgid "A&uto-rename source files"
|
|||
msgstr ""
|
||||
|
||||
#: ulng.rsdlgbuttonautorenametarget
|
||||
msgid "A&uto-rename target files"
|
||||
msgid "Auto-rename tar&get files"
|
||||
msgstr ""
|
||||
|
||||
#: ulng.rsdlgbuttoncancel
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Native-Language: Український нова\n"
|
||||
"X-Native-Language: Українська мова\n"
|
||||
|
||||
#: fsyncdirsdlg.rscomparingpercent
|
||||
msgid "Comparing... %d%% (ESC to cancel)"
|
||||
|
|
@ -10301,7 +10301,7 @@ msgid "A&uto-rename source files"
|
|||
msgstr "Авто-перейменування вихідних файлів"
|
||||
|
||||
#: ulng.rsdlgbuttonautorenametarget
|
||||
msgid "A&uto-rename target files"
|
||||
msgid "Auto-rename tar&get files"
|
||||
msgstr ""
|
||||
|
||||
#: ulng.rsdlgbuttoncancel
|
||||
|
|
|
|||
|
|
@ -10022,7 +10022,7 @@ msgid "A&uto-rename source files"
|
|||
msgstr "自动重命名源文件(&U)"
|
||||
|
||||
#: ulng.rsdlgbuttonautorenametarget
|
||||
msgid "A&uto-rename target files"
|
||||
msgid "Auto-rename tar&get files"
|
||||
msgstr "自动重命名目标文件(&U)"
|
||||
|
||||
#: ulng.rsdlgbuttoncancel
|
||||
|
|
|
|||
|
|
@ -10965,7 +10965,7 @@ msgid "A&uto-rename source files"
|
|||
msgstr ""
|
||||
|
||||
#: ulng.rsdlgbuttonautorenametarget
|
||||
msgid "A&uto-rename target files"
|
||||
msgid "Auto-rename tar&get files"
|
||||
msgstr ""
|
||||
|
||||
#: ulng.rsdlgbuttoncancel
|
||||
|
|
|
|||
102
multiarc.ini
102
multiarc.ini
|
|
@ -7,13 +7,13 @@ Archiver=7za
|
|||
Start=^-------------------
|
||||
End=^-------------------
|
||||
Format0=yyyy tt dd hh mm ss aaaaa zzzzzzzzzzzz pppppppppppp n+
|
||||
List=%P -r0 l {-p%W} %AQA
|
||||
Extract=%P x -y {-p%W} {%S} %AQA @%LQU
|
||||
ExtractWithoutPath=%P e -y {-p%W} {%S} %AQA @%LQU
|
||||
Test=%P t -y {%S} %AQA @%LQU
|
||||
Delete=%P d -y {%S} %AQA @%LQU
|
||||
Add=%P a -mx -y {-p%W} {-v%V} {%S} %AQA @%LQU
|
||||
AddSelfExtract=%P a -mx -y -sfx {-p%W} {-v%V} {%S} %AQA @%LQU
|
||||
List=%P -r0 l {-p%W} %AQ
|
||||
Extract=%P x -y {-p%W} {%S} %AQ @%LQU
|
||||
ExtractWithoutPath=%P e -y {-p%W} {%S} %AQ @%LQU
|
||||
Test=%P t -y {%S} %AQ @%LQU
|
||||
Delete=%P d -y {%S} %AQ @%LQU
|
||||
Add=%P a -mx -y {-p%W} {-v%V} {%S} %AQ @%LQU
|
||||
AddSelfExtract=%P a -mx -y -sfx {-p%W} {-v%V} {%S} %AQ @%LQU
|
||||
PasswordQuery=Enter password
|
||||
FormMode=8
|
||||
Output=0
|
||||
|
|
@ -27,10 +27,10 @@ Extension=cab,z,taz,lzh,lha,iso,wim,swm,dmg,xar,hfs,ntfs,fat,vhd,mbr
|
|||
Start=^-------------------
|
||||
End=^-------------------
|
||||
Format0=yyyy tt dd hh mm ss aaaaa zzzzzzzzzzzz pppppppppppp n+
|
||||
List=%P -r0 l {-p%W} %AQA
|
||||
Extract=%P x -y {-p%W} {%S} %AQA @%LQU
|
||||
ExtractWithoutPath=%P e -y {-p%W} {%S} %AQA @%LQU
|
||||
Test=%P t -y {%S} %AQA @%LQU
|
||||
List=%P -r0 l {-p%W} %AQ
|
||||
Extract=%P x -y {-p%W} {%S} %AQ @%LQU
|
||||
ExtractWithoutPath=%P e -y {-p%W} {%S} %AQ @%LQU
|
||||
Test=%P t -y {%S} %AQ @%LQU
|
||||
PasswordQuery=Enter password
|
||||
FormMode=8
|
||||
Enabled=0
|
||||
|
|
@ -44,13 +44,13 @@ Extension=ace
|
|||
Start=^Date
|
||||
End=^listed:
|
||||
Format0=dd.tt.yy│hh:mm│ppppppppppp│zzzzzzzzz│ │ n+
|
||||
List=%P v -y %AQA
|
||||
Extract=%P x -y {-p%W} {%S} %AQA @%LQA
|
||||
ExtractWithoutPath=%P e -y {-p%W} {%S} %AQA @%LQA
|
||||
Test=%P t -y %AQA
|
||||
Delete=%P d -y %AQA @%LQA
|
||||
Add=%P a -y {-p%W} {-v%V} {%S} %AQA @%LQA
|
||||
AddSelfExtract=%P a -y -sfx {-p%W} {-v%V} {%S} %AQA @%LQA
|
||||
List=%P v -y %AQ
|
||||
Extract=%P x -y {-p%W} {%S} %AQ @%LQA
|
||||
ExtractWithoutPath=%P e -y {-p%W} {%S} %AQ @%LQA
|
||||
Test=%P t -y %AQ
|
||||
Delete=%P d -y %AQ @%LQA
|
||||
Add=%P a -y {-p%W} {-v%V} {%S} %AQ @%LQA
|
||||
AddSelfExtract=%P a -y -sfx {-p%W} {-v%V} {%S} %AQ @%LQA
|
||||
Enabled=0
|
||||
Output=0
|
||||
Debug=0
|
||||
|
|
@ -67,12 +67,12 @@ Format0=* n+
|
|||
Format1=???????????? zzzzzzzzzz pppppppppp yy-tt-dd hh:mm:ss aaaaaa
|
||||
Format2=?
|
||||
Format3=?
|
||||
List=%P v %AQA
|
||||
Extract=%P x -y {-g%W} {%S} %AQA !%LQA
|
||||
ExtractWithoutPath=%P e -y {-g%W} {%S} %AQA !%LQA
|
||||
Test=%P t -y {%S} %AQA
|
||||
Delete=%P d -y {%S} %AQA !%LQA
|
||||
Add=%P a -y {-g%W} {-v%V} {%S} %AQA !%LQA
|
||||
List=%P v %AQ
|
||||
Extract=%P x -y {-g%W} {%S} %AQ !%LQA
|
||||
ExtractWithoutPath=%P e -y {-g%W} {%S} %AQ !%LQA
|
||||
Test=%P t -y {%S} %AQ
|
||||
Delete=%P d -y {%S} %AQ !%LQA
|
||||
Add=%P a -y {-g%W} {-v%V} {%S} %AQ !%LQA
|
||||
Enabled=0
|
||||
Output=0
|
||||
Debug=0
|
||||
|
|
@ -87,13 +87,13 @@ Extension=rar
|
|||
Start=^-----------
|
||||
End=^-----------
|
||||
Format0=?aaaaaaaaaa $z+ yyyy tt dd hh:mm n+
|
||||
List=%P l -c- {-p%W} %AQA
|
||||
Extract=%P x -y {-p%W} {%S} %AQA @%LQA
|
||||
ExtractWithoutPath=%P e -y {-p%W} {%S} %AQA @%LQA
|
||||
Test=%P t -y {%S} %AQA
|
||||
Delete=%P d -y {%S} %AQA @%LQA
|
||||
Add=%P a -y {-p%W} {-v%V} {%S} %AQA @%LQA
|
||||
AddSelfExtract=%P a -y -sfx {-p%W} {-v%V} {%S} %AQA @%LQA
|
||||
List=%P l -c- {-p%W} %AQ
|
||||
Extract=%P x -y {-p%W} {%S} %AQ @%LQA
|
||||
ExtractWithoutPath=%P e -y {-p%W} {%S} %AQ @%LQA
|
||||
Test=%P t -y {%S} %AQ
|
||||
Delete=%P d -y {%S} %AQ @%LQA
|
||||
Add=%P a -y {-p%W} {-v%V} {%S} %AQ @%LQA
|
||||
AddSelfExtract=%P a -y -sfx {-p%W} {-v%V} {%S} %AQ @%LQA
|
||||
PasswordQuery=Enter password
|
||||
FormMode=0
|
||||
Enabled=0
|
||||
|
|
@ -104,10 +104,28 @@ Debug=0
|
|||
Archiver=tar
|
||||
Description=Compressed tar file (tar.xz)
|
||||
Extension=txz
|
||||
Format0=aaaaaaaaaa zzzzzzz yyyy-tt-dd hh:mm n+
|
||||
List=%P -tv --xz -f %AQA
|
||||
Extract=%P -x --xz --no-recursion {%S} -f %AQA -T %LFQA
|
||||
Add=%P -c --xz --no-recursion {%S} -f %AQA -T %LQA
|
||||
Format0=aaaaaaaaaa *$z+ yyyy-tt-dd hh:mm n+
|
||||
List=%P -tv --xz -f %AQ
|
||||
Extract=%P -x --xz --no-recursion {%S} -f %AQ -T %LFA
|
||||
Add=%P -c --xz --no-recursion {%S} -f %AQ -T %LA
|
||||
Enabled=0
|
||||
Output=0
|
||||
Debug=0
|
||||
|
||||
[ZPAQ]
|
||||
Archiver=zpaq
|
||||
Description=ZPAQ - http://mattmahoney.net/dc/zpaq.html
|
||||
IDSeekRange=0
|
||||
Extension=zpaq
|
||||
Start=
|
||||
End=shown
|
||||
Format0=- yyyy-tt-dd hh:mm:ss$z+$aaaaa$n+
|
||||
List=%P l %AQ
|
||||
Extract=%P x %AQ {%S} {-key %W}
|
||||
ExtractWithoutPath=
|
||||
Test=%P l %AQ -test
|
||||
Add=%P a %AQ %FQU {%S} {-key %W}
|
||||
FormMode=1
|
||||
Enabled=0
|
||||
Output=0
|
||||
Debug=0
|
||||
|
|
@ -122,13 +140,13 @@ Extension=arc
|
|||
Start=^--
|
||||
End=^--
|
||||
Format0=yyyy tt dd hh mm ss aaaaaaa zzzzzzzzzzzzzzz ppppppppppppppp rrrrrrrr n+
|
||||
List=%P v --noarcext -- %AQA
|
||||
Extract=%P x {-p%W} -y --noarcext -sclANSI -- %AQA @%LA
|
||||
ExtractWithoutPath=%P e {-p%W} -y --noarcext -sclANSI -- %AQA @%LA
|
||||
Test=%P t --noarcext -sclANSI -- %AQA
|
||||
Delete=%P d --noarcext -sclANSI -- %AQA @%LA
|
||||
Add=%P a {-p%W} {-ap%RQA} --noarcext -sclANSI {%S} -- %AQA @%LA
|
||||
AddSelfExtract=%P a {-p%W} {-ap%RQA} -sfx --noarcext -sclANSI {%S} -- %AQA @%LA
|
||||
List=%P v --noarcext -- %AQ
|
||||
Extract=%P x {-p%W} -y --noarcext -sclANSI -- %AQ @%LA
|
||||
ExtractWithoutPath=%P e {-p%W} -y --noarcext -sclANSI -- %AQ @%LA
|
||||
Test=%P t --noarcext -sclANSI -- %AQ
|
||||
Delete=%P d --noarcext -sclANSI -- %AQ @%LA
|
||||
Add=%P a {-p%W} {-ap%RQA} --noarcext -sclANSI {%S} -- %AQ @%LA
|
||||
AddSelfExtract=%P a {-p%W} {-ap%RQA} -sfx --noarcext -sclANSI {%S} -- %AQ @%LA
|
||||
PasswordQuery=
|
||||
FormMode=0
|
||||
Enabled=0
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ avi=video-x-generic
|
|||
bat=application-x-shellscript
|
||||
deb=application-x-deb
|
||||
doc=x-office-document
|
||||
docx=x-office-document
|
||||
htm=text-html
|
||||
html=text-html
|
||||
iso=application-x-cd-image
|
||||
|
|
@ -19,3 +20,4 @@ rpm=application-x-rpm
|
|||
sh=application-x-shellscript
|
||||
txt=text-x-generic
|
||||
xls=x-office-spreadsheet
|
||||
xlsx=x-office-spreadsheet
|
||||
|
|
|
|||
|
|
@ -1,15 +1,16 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<CONFIG>
|
||||
<ProjectOptions>
|
||||
<Version Value="10"/>
|
||||
<Version Value="12"/>
|
||||
<PathDelim Value="\"/>
|
||||
<General>
|
||||
<Flags>
|
||||
<MainUnitHasCreateFormStatements Value="False"/>
|
||||
<MainUnitHasTitleStatement Value="False"/>
|
||||
<MainUnitHasScaledStatement Value="False"/>
|
||||
<CompatibilityMode Value="True"/>
|
||||
</Flags>
|
||||
<SessionStorage Value="InProjectDir"/>
|
||||
<MainUnit Value="0"/>
|
||||
<Title Value="EverythingDsx"/>
|
||||
<UseAppBundle Value="False"/>
|
||||
<ResourceType Value="res"/>
|
||||
|
|
@ -17,9 +18,6 @@
|
|||
<i18n>
|
||||
<EnableI18N LFM="False"/>
|
||||
</i18n>
|
||||
<VersionInfo>
|
||||
<StringTable ProductVersion=""/>
|
||||
</VersionInfo>
|
||||
<BuildModes Count="2">
|
||||
<Item1 Name="Release" Default="True"/>
|
||||
<Item2 Name="Debug">
|
||||
|
|
@ -68,17 +66,29 @@
|
|||
</PublishOptions>
|
||||
<RunParams>
|
||||
<local>
|
||||
<FormatVersion Value="1"/>
|
||||
<HostApplicationFilename Value="R:\Temp\doublecmd\doublecmd.exe"/>
|
||||
</local>
|
||||
<FormatVersion Value="2"/>
|
||||
<Modes Count="1">
|
||||
<Mode0 Name="default">
|
||||
<local>
|
||||
<HostApplicationFilename Value="R:\Temp\doublecmd\doublecmd.exe"/>
|
||||
</local>
|
||||
</Mode0>
|
||||
</Modes>
|
||||
</RunParams>
|
||||
<RequiredPackages Count="1">
|
||||
<Item1>
|
||||
<PackageName Value="doublecmd_common"/>
|
||||
</Item1>
|
||||
</RequiredPackages>
|
||||
<Units Count="2">
|
||||
<Unit0>
|
||||
<Filename Value="EverythingDsx.lpr"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
</Unit0>
|
||||
<Unit1>
|
||||
<Filename Value="..\everything.pas"/>
|
||||
<Filename Value="everything.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
</Unit1>
|
||||
</Units>
|
||||
|
|
@ -87,12 +97,12 @@
|
|||
<Version Value="11"/>
|
||||
<PathDelim Value="\"/>
|
||||
<Target>
|
||||
<Filename Value="EverythingDsx.dsx" ApplyConventions="False"/>
|
||||
<Filename Value="..\everything.dsx" ApplyConventions="False"/>
|
||||
</Target>
|
||||
<SearchPaths>
|
||||
<IncludeFiles Value="$(ProjOutDir)"/>
|
||||
<OtherUnitFiles Value=".."/>
|
||||
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
|
||||
<OtherUnitFiles Value="..\..\..\..\sdk"/>
|
||||
<UnitOutputDirectory Value="..\lib"/>
|
||||
</SearchPaths>
|
||||
<CodeGeneration>
|
||||
<SmartLinkUnit Value="True"/>
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ library EverythingDsx;
|
|||
{$mode objfpc}{$H+}
|
||||
|
||||
uses
|
||||
Classes, DsxPlugin, everything;
|
||||
Classes, Everything, DsxPlugin, DCConvertEncoding;
|
||||
|
||||
threadvar
|
||||
AddFileProc: TSAddFileProc;
|
||||
|
|
@ -12,7 +12,7 @@ procedure FoundCallback(FileName: PWideChar);
|
|||
var
|
||||
S: String;
|
||||
begin
|
||||
S:= UTF8Encode(UnicodeString(FileName));
|
||||
S:= CeUtf16ToUtf8(UnicodeString(FileName));
|
||||
AddFileProc(0, PAnsiChar(S));
|
||||
end;
|
||||
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ function ShowPasswordQuery(var Encrypt: Boolean; var Password: WideString): Bool
|
|||
implementation
|
||||
|
||||
uses
|
||||
SevenZipCodecs;
|
||||
LazUTF8, SevenZipCodecs;
|
||||
|
||||
{$R *.res}
|
||||
|
||||
|
|
@ -108,9 +108,9 @@ end;
|
|||
|
||||
function ComboBoxAdd(hwndDlg: HWND; ItemID: Integer; ItemText: String; ItemData: PtrInt): Integer;
|
||||
var
|
||||
Text: WideString;
|
||||
Text: UnicodeString;
|
||||
begin
|
||||
Text:= UTF8Decode(ItemText);
|
||||
Text:= UTF8ToUTF16(ItemText);
|
||||
Result:= SendDlgItemMessageW(hwndDlg, ItemID, CB_ADDSTRING, 0, LPARAM(PWideChar(Text)));
|
||||
SendDlgItemMessage(hwndDlg, ItemID, CB_SETITEMDATA, Result, ItemData);
|
||||
end;
|
||||
|
|
@ -699,7 +699,6 @@ function PasswordDialog(hwndDlg: HWND; uMsg: UINT; wParam: WPARAM; lParam: LPARA
|
|||
var
|
||||
PasswordData: PPasswordData;
|
||||
begin
|
||||
PasswordData:= PPasswordData(GetWindowLongPtr(hwndDlg, GWLP_USERDATA));
|
||||
case uMsg of
|
||||
WM_INITDIALOG:
|
||||
begin
|
||||
|
|
@ -715,16 +714,18 @@ begin
|
|||
case LOWORD(wParam) of
|
||||
IDOK:
|
||||
begin
|
||||
PasswordData:= PPasswordData(GetWindowLongPtr(hwndDlg, GWLP_USERDATA));
|
||||
PasswordData^.EncryptHeader:= IsDlgButtonChecked(hwndDlg, IDC_ENCRYPT_HEADER) <> 0;
|
||||
GetDlgItemTextW(hwndDlg, IDC_PASSWORD, PasswordData^.Password, MAX_PATH);
|
||||
EndDialog(hwndDlg, IDOK);
|
||||
EndDialog(hwndDlg, IDOK);
|
||||
end;
|
||||
IDCANCEL:
|
||||
EndDialog(hwndDlg, IDCANCEL);
|
||||
IDC_SHOW_PASSWORD:
|
||||
begin
|
||||
wParam:= (not IsDlgButtonChecked(hwndDlg, IDC_SHOW_PASSWORD) and $01) * $2A;
|
||||
SendDlgItemMessageW(hwndDlg, IDC_PASSWORD, EM_SETPASSWORDCHAR, wParam, 0);
|
||||
SendDlgItemMessageW(hwndDlg, IDC_PASSWORD, EM_SETPASSWORDCHAR, wParam, 0);
|
||||
RedrawWindow(hwndDlg, nil, 0, RDW_INVALIDATE or RDW_UPDATENOW);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
-------------------------------------------------------------------------
|
||||
SevenZip archiver plugin
|
||||
|
||||
Copyright (C) 2014-2019 Alexander Koblov (alexx2000@mail.ru)
|
||||
Copyright (C) 2014-2022 Alexander Koblov (alexx2000@mail.ru)
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
|
|
@ -347,7 +347,7 @@ begin
|
|||
else begin
|
||||
AMessage := SysErrorMessage(GetLastError) + LineEnding;
|
||||
AMessage += rsSevenZipSfxNotFound + LineEnding + SfxModule;
|
||||
MessageBox(0, PAnsiChar(AMessage), nil, MB_OK or MB_ICONERROR);
|
||||
MessageBoxW(0, PWideChar(UTF8ToUTF16(AMessage)), nil, MB_OK or MB_ICONERROR);
|
||||
Exit(E_NO_FILES);
|
||||
end;
|
||||
end;
|
||||
|
|
@ -501,13 +501,14 @@ var
|
|||
ModulePath: AnsiString;
|
||||
begin
|
||||
// Save configuration file name
|
||||
ConfigFile:= ExtractFilePath(dps^.DefaultIniName) + DefaultIniName;
|
||||
ConfigFile:= ExtractFilePath(dps^.DefaultIniName);
|
||||
ConfigFile:= WinCPToUTF8(ConfigFile) + DefaultIniName;
|
||||
// Get plugin path
|
||||
if GetModulePath(ModulePath) then
|
||||
begin
|
||||
// Use configuration from plugin path
|
||||
if FileExistsUTF8(ModulePath + DefaultIniName) then
|
||||
ConfigFile:= UTF8ToSys(ModulePath) + DefaultIniName;
|
||||
ConfigFile:= ModulePath + DefaultIniName;
|
||||
end;
|
||||
// Load plugin configuration
|
||||
LoadConfiguration;
|
||||
|
|
@ -533,7 +534,7 @@ begin
|
|||
if (Is7ZipLoaded or Load7Zip) then
|
||||
LoadLibraries
|
||||
else begin
|
||||
MessageBoxW(0, PWideChar(UTF8Decode(rsSevenZipLoadError)), 'SevenZip', MB_OK or MB_ICONERROR);
|
||||
MessageBoxW(0, PWideChar(UTF8ToUTF16(rsSevenZipLoadError)), 'SevenZip', MB_OK or MB_ICONERROR);
|
||||
end;
|
||||
// Create password cache object
|
||||
PasswordCache:= TPasswordCache.Create;
|
||||
|
|
@ -630,7 +631,7 @@ begin
|
|||
on E: Exception do
|
||||
begin
|
||||
ReturnValue:= GetArchiveError(E);
|
||||
MessageBox(0, PAnsiChar(E.Message), nil, MB_OK or MB_ICONERROR);
|
||||
MessageBoxW(0, PWideChar(UTF8ToUTF16(E.Message)), nil, MB_OK or MB_ICONERROR);
|
||||
end;
|
||||
end;
|
||||
Terminate;
|
||||
|
|
|
|||
|
|
@ -365,8 +365,16 @@ begin
|
|||
AddWideStringProperty('0', GetCodecName(PluginConfig[AFormat].Method));
|
||||
end;
|
||||
end;
|
||||
if MethodStandard and (Method <> cmCopy) and (Pos('D=', Parameters) = 0) then begin
|
||||
AddWideStringProperty('D', WideString(IntToStr(PluginConfig[AFormat].Dictionary) + 'B'));
|
||||
if MethodStandard then
|
||||
begin
|
||||
if (Method > cmCopy) and (Method < cmPPMd) and (Pos('D=', Parameters) = 0) then
|
||||
begin
|
||||
AddWideStringProperty('D', WideString(IntToStr(PluginConfig[AFormat].Dictionary) + 'B'));
|
||||
end
|
||||
else if (Method = cmPPMd) and (Pos('MEM=', Parameters) = 0) then
|
||||
begin
|
||||
AddWideStringProperty('MEM', WideString(IntToStr(PluginConfig[AFormat].Dictionary) + 'B'));
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
|
@ -432,7 +440,7 @@ begin
|
|||
SetArchiveCustom(AJclArchive, Index);
|
||||
except
|
||||
on E: Exception do
|
||||
Messagebox(0, PAnsiChar(E.Message), nil, MB_OK or MB_ICONERROR);
|
||||
MessageBoxW(0, PWideChar(UTF8ToUTF16(E.Message)), nil, MB_OK or MB_ICONERROR);
|
||||
end;
|
||||
|
||||
Exit;
|
||||
|
|
@ -450,7 +458,7 @@ begin
|
|||
Ini:= TIniFile.Create(ConfigFile);
|
||||
try
|
||||
LibraryPath:= Ini.ReadString('Library', TargetCPU, EmptyStr);
|
||||
LibraryPath:= Utf16ToUtf8(ExpandEnvironmentStrings(UTF8Decode(LibraryPath)));
|
||||
LibraryPath:= Utf16ToUtf8(ExpandEnvironmentStrings(UTF8ToUTF16(LibraryPath)));
|
||||
for ArchiveFormat:= Low(TArchiveFormat) to High(TArchiveFormat) do
|
||||
begin
|
||||
Section:= GUIDToString(PluginConfig[ArchiveFormat].ArchiveCLSID^);
|
||||
|
|
@ -467,7 +475,7 @@ begin
|
|||
end;
|
||||
except
|
||||
on E: Exception do
|
||||
MessageBox(0, PAnsiChar(E.Message), nil, MB_OK or MB_ICONERROR);
|
||||
MessageBoxW(0, PWideChar(UTF8ToUTF16(E.Message)), nil, MB_OK or MB_ICONERROR);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
|
@ -497,7 +505,7 @@ begin
|
|||
end;
|
||||
except
|
||||
on E: Exception do
|
||||
MessageBox(0, PAnsiChar(E.Message), nil, MB_OK or MB_ICONERROR);
|
||||
MessageBoxW(0, PWideChar(UTF8ToUTF16(E.Message)), nil, MB_OK or MB_ICONERROR);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
|
|
|||
|
|
@ -167,7 +167,7 @@ function GetFileAttributesEx(lpFileName: LPCSTR; fInfoLevelId: TGET_FILEEX_INFO_
|
|||
implementation
|
||||
|
||||
uses
|
||||
LazFileUtils;
|
||||
LazUTF8, LazFileUtils;
|
||||
|
||||
function StreamCopy(Source, Target: TStream): Int64;
|
||||
begin
|
||||
|
|
@ -232,7 +232,7 @@ end;
|
|||
|
||||
function FileDelete(const FileName: String): Boolean;
|
||||
begin
|
||||
Result:= DeleteFileW(PWideChar(UTF8Decode(FileName)));
|
||||
Result:= DeleteFileW(PWideChar(UTF8ToUTF16(FileName)));
|
||||
end;
|
||||
|
||||
function FindUnusedFileName(const FileName, FileExt: String): String;
|
||||
|
|
@ -251,7 +251,7 @@ function FileMove(const OldName, NewName: String; Replace: Boolean): Boolean;
|
|||
const
|
||||
dwFlags: array[Boolean] of DWORD = (0, MOVEFILE_REPLACE_EXISTING);
|
||||
begin
|
||||
Result:= MoveFileExW(PWideChar(UTF8Decode(OldName)), PWideChar(UTF8Decode(NewName)),
|
||||
Result:= MoveFileExW(PWideChar(UTF8ToUTF16(OldName)), PWideChar(UTF8ToUTF16(NewName)),
|
||||
dwFlags[Replace] or MOVEFILE_COPY_ALLOWED);
|
||||
end;
|
||||
|
||||
|
|
@ -262,7 +262,7 @@ end;
|
|||
|
||||
class function JclSysUtils.LoadModule(var Module: TModuleHandle; FileName: String): Boolean;
|
||||
begin
|
||||
Module:= LoadLibraryW(PWideChar(UTF8Decode(FileName)));
|
||||
Module:= LoadLibraryW(PWideChar(UTF8ToUTF16(FileName)));
|
||||
Result:= Module <> INVALID_MODULEHANDLE_VALUE;
|
||||
end;
|
||||
|
||||
|
|
@ -314,13 +314,13 @@ end;
|
|||
function CreateFile(lpFileName: LPCSTR; dwDesiredAccess: DWORD; dwShareMode: DWORD; lpSecurityAttributes: LPSECURITY_ATTRIBUTES;
|
||||
dwCreationDisposition: DWORD; dwFlagsAndAttributes: DWORD; hTemplateFile: HANDLE): HANDLE;
|
||||
begin
|
||||
Result:= CreateFileW(PWideChar(UTF8Decode(lpFileName)), dwDesiredAccess, dwShareMode,
|
||||
Result:= CreateFileW(PWideChar(UTF8ToUTF16(lpFileName)), dwDesiredAccess, dwShareMode,
|
||||
lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile);
|
||||
end;
|
||||
|
||||
function GetFileAttributesEx(lpFileName: LPCSTR; fInfoLevelId: TGET_FILEEX_INFO_LEVELS; lpFileInformation: Pointer): BOOL;
|
||||
begin
|
||||
Result:= GetFileAttributesExW(PWideChar(UTF8Decode(lpFileName)), fInfoLevelId, lpFileInformation);
|
||||
Result:= GetFileAttributesExW(PWideChar(UTF8ToUTF16(lpFileName)), fInfoLevelId, lpFileInformation);
|
||||
end;
|
||||
|
||||
{ TJclDynamicSplitStream }
|
||||
|
|
@ -436,26 +436,26 @@ procedure TJclWideStringList.PutObject(Index: Integer; AObject: TObject);
|
|||
begin
|
||||
Data[Index] := AObject;
|
||||
end;
|
||||
|
||||
function TJclWideStringList.CompareWideStringProc(Key1, Key2: Pointer): Integer;
|
||||
begin
|
||||
{$if FPC_FULLVERSION<30002}
|
||||
Result:= WideStringManager.CompareWideStringProc(WideString(Key1^), WideString(Key2^));
|
||||
{$else}
|
||||
Result:= WideStringManager.CompareWideStringProc(WideString(Key1^), WideString(Key2^), []);
|
||||
{$endif}
|
||||
end;
|
||||
|
||||
function TJclWideStringList.CompareTextWideStringProc(Key1, Key2: Pointer): Integer;
|
||||
begin
|
||||
{$if FPC_FULLVERSION<30002}
|
||||
Result:= WideStringManager.CompareTextWideStringProc(WideString(Key1^), WideString(Key2^));
|
||||
{$else}
|
||||
Result:= WideStringManager.CompareWideStringProc(WideString(Key1^), WideString(Key2^), [coIgnoreCase]);
|
||||
{$endif}
|
||||
end;
|
||||
|
||||
constructor TJclWideStringList.Create;
|
||||
|
||||
function TJclWideStringList.CompareWideStringProc(Key1, Key2: Pointer): Integer;
|
||||
begin
|
||||
{$if FPC_FULLVERSION<30002}
|
||||
Result:= WideStringManager.CompareWideStringProc(WideString(Key1^), WideString(Key2^));
|
||||
{$else}
|
||||
Result:= WideStringManager.CompareWideStringProc(WideString(Key1^), WideString(Key2^), []);
|
||||
{$endif}
|
||||
end;
|
||||
|
||||
function TJclWideStringList.CompareTextWideStringProc(Key1, Key2: Pointer): Integer;
|
||||
begin
|
||||
{$if FPC_FULLVERSION<30002}
|
||||
Result:= WideStringManager.CompareTextWideStringProc(WideString(Key1^), WideString(Key2^));
|
||||
{$else}
|
||||
Result:= WideStringManager.CompareWideStringProc(WideString(Key1^), WideString(Key2^), [coIgnoreCase]);
|
||||
{$endif}
|
||||
end;
|
||||
|
||||
constructor TJclWideStringList.Create;
|
||||
begin
|
||||
inherited Create;
|
||||
OnKeyPtrCompare := @CompareTextWideStringProc;
|
||||
|
|
|
|||
|
|
@ -6541,7 +6541,10 @@ begin
|
|||
Value.bstrVal := SysAllocString(PWideChar(AItem.Group));
|
||||
end;
|
||||
// kpidBlock: ;
|
||||
// kpidComment: ;
|
||||
kpidComment:
|
||||
begin
|
||||
Value.vt := VT_EMPTY;
|
||||
end;
|
||||
// kpidPosition: ;
|
||||
// kpidPrefix: ;
|
||||
// kpidNumSubDirs: ;
|
||||
|
|
@ -6608,7 +6611,7 @@ begin
|
|||
except
|
||||
on E: Exception do
|
||||
begin
|
||||
case MessageBox(0, PAnsiChar(E.Message), nil, MB_ABORTRETRYIGNORE or MB_ICONERROR) of
|
||||
case MessageBoxW(0, PWideChar(UTF8Decode(E.Message)), nil, MB_ABORTRETRYIGNORE or MB_ICONERROR) of
|
||||
IDABORT: Exit(E_ABORT);
|
||||
IDIGNORE:
|
||||
begin
|
||||
|
|
|
|||
|
|
@ -29,7 +29,8 @@ uses
|
|||
cthreads,
|
||||
{$ENDIF}
|
||||
FPCAdds,
|
||||
Classes, SysUtils, TorrentFile, WcxPlugin, DCDateTimeUtils, DCClassesUtf8;
|
||||
Classes, SysUtils, TorrentFile, WcxPlugin, DCDateTimeUtils, DCClassesUtf8,
|
||||
DCConvertEncoding;
|
||||
|
||||
type
|
||||
PTorrentHandle = ^TTorrentHandle;
|
||||
|
|
@ -57,7 +58,7 @@ begin
|
|||
Exit;
|
||||
end;
|
||||
try
|
||||
AFileName := UTF8Encode(UnicodeString(ArchiveData.ArcName));
|
||||
AFileName := CeUtf16ToUtf8(UnicodeString(ArchiveData.ArcName));
|
||||
AStream:= TFileStreamEx.Create(AFileName, fmOpenRead or fmShareDenyNone);
|
||||
try
|
||||
New(AHandle);
|
||||
|
|
@ -93,7 +94,7 @@ begin
|
|||
|
||||
AFile:= TTorrentSubFile(AHandle.Torrent.Files[AHandle.Index]);
|
||||
HeaderData.FileTime:= UnixFileTimeToWcxTime(AHandle.Torrent.CreationTime);
|
||||
HeaderData.FileName:= UTF8Decode(AFile.Path + AFile.Name);
|
||||
HeaderData.FileName:= CeUtf8ToUtf16(AFile.Path + AFile.Name);
|
||||
HeaderData.UnpSize:= Int64Rec(AFile.Length).Lo;
|
||||
HeaderData.UnpSizeHigh:= Int64Rec(AFile.Length).Hi;
|
||||
HeaderData.PackSize:= HeaderData.UnpSize;
|
||||
|
|
|
|||
|
|
@ -26,16 +26,16 @@ var
|
|||
implementation
|
||||
|
||||
uses
|
||||
IniFiles, UnRARFunc, Extension, RarFunc;
|
||||
DCClassesUtf8, UnRARFunc, Extension, RarFunc;
|
||||
|
||||
{$R *.lfm}
|
||||
|
||||
procedure LoadConfig;
|
||||
var
|
||||
gIni: TIniFile;
|
||||
gIni: TIniFileEx;
|
||||
begin
|
||||
try
|
||||
gIni:= TIniFile.Create(IniFileName);
|
||||
gIni:= TIniFileEx.Create(IniFileName, fmOpenRead);
|
||||
try
|
||||
Args:= gIni.ReadString('unrar', 'Args', EmptyStr);
|
||||
WinRar:= gIni.ReadString('unrar', 'Path', WinRar);
|
||||
|
|
@ -52,10 +52,10 @@ end;
|
|||
|
||||
procedure SaveConfig;
|
||||
var
|
||||
gIni: TIniFile;
|
||||
gIni: TIniFileEx;
|
||||
begin
|
||||
try
|
||||
gIni:= TIniFile.Create(IniFileName);
|
||||
gIni:= TIniFileEx.Create(IniFileName, fmOpenReadWrite);
|
||||
try
|
||||
gIni.WriteString('unrar', 'Args', Args);
|
||||
gIni.WriteString('unrar', 'Path', WinRar);
|
||||
|
|
@ -63,6 +63,7 @@ begin
|
|||
gIni.WriteBool('unrar', 'Recovery', Recovery);
|
||||
gIni.WriteBool('unrar', 'Encrypt', Encrypt);
|
||||
gIni.WriteBool('unrar', 'Solid', Solid);
|
||||
gIni.UpdateFile;
|
||||
finally
|
||||
gIni.Free;
|
||||
end;
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
-------------------------------------------------------------------------
|
||||
Wcx plugin for packing RAR archives
|
||||
|
||||
Copyright (C) 2015-2020 Alexander Koblov (alexx2000@mail.ru)
|
||||
Copyright (C) 2015-2022 Alexander Koblov (alexx2000@mail.ru)
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -41,7 +41,8 @@ var
|
|||
implementation
|
||||
|
||||
uses
|
||||
Process, LazUTF8, DCProcessUtf8, DCOSUtils, UnRARFunc, RarConfDlg;
|
||||
Process, LazUTF8, DCConvertEncoding, DCProcessUtf8, DCOSUtils, UnRARFunc,
|
||||
RarConfDlg;
|
||||
|
||||
const
|
||||
UTF16LEBOM: WideChar = #$FEFF;
|
||||
|
|
@ -63,6 +64,7 @@ begin
|
|||
10: Result:= E_BAD_DATA; // No files matching the specified mask and options were found
|
||||
11: Result:= E_BAD_DATA; // Wrong password
|
||||
255: Result:= E_EABORTED; // User break
|
||||
else Result:= E_UNKNOWN; // Unknown
|
||||
end;
|
||||
end;
|
||||
|
||||
|
|
@ -72,14 +74,14 @@ var
|
|||
S, FileName: String;
|
||||
Percent: Integer = 0;
|
||||
begin
|
||||
FileName:= GetTempFileName;
|
||||
TempFile:= FileCreate(FileName);
|
||||
FileName:= GetTempName('');
|
||||
TempFile:= mbFileCreate(FileName);
|
||||
if (TempFile = feInvalidHandle) then Exit(E_ECREATE);
|
||||
try
|
||||
FileWrite(TempFile, FileList[1], Length(FileList) * SizeOf(WideChar));
|
||||
FileClose(TempFile);
|
||||
|
||||
Process.Parameters.Add('@' + SysToUTF8(FileName));
|
||||
Process.Parameters.Add('@' + FileName);
|
||||
|
||||
Process.Execute;
|
||||
|
||||
|
|
@ -125,7 +127,7 @@ end;
|
|||
|
||||
procedure PackSetDefaultParams(dps: PPackDefaultParamStruct); dcpcall;
|
||||
begin
|
||||
IniFileName:= dps^.DefaultIniName;
|
||||
IniFileName:= CeSysToUtf8(dps^.DefaultIniName);
|
||||
|
||||
LoadConfig;
|
||||
end;
|
||||
|
|
@ -148,7 +150,7 @@ begin
|
|||
Process.Parameters.Add('d');
|
||||
Process.Parameters.Add('-c-');
|
||||
Process.Parameters.Add('-r-');
|
||||
Process.Parameters.Add(UTF16ToUTF8(UnicodeString(PackedFile)));
|
||||
Process.Parameters.Add(CeUtf16ToUtf8(UnicodeString(PackedFile)));
|
||||
|
||||
try
|
||||
// Parse file list
|
||||
|
|
@ -234,15 +236,15 @@ begin
|
|||
// Destination path
|
||||
if Assigned(SubPath) then
|
||||
begin
|
||||
Process.Parameters.Add('-ap' + UTF16ToUTF8(UnicodeString(SubPath)));
|
||||
Process.Parameters.Add('-ap' + CeUtf16ToUtf8(UnicodeString(SubPath)));
|
||||
end;
|
||||
|
||||
Process.Parameters.Add(UTF16ToUTF8(UnicodeString(PackedFile)));
|
||||
Process.Parameters.Add(CeUtf16ToUtf8(UnicodeString(PackedFile)));
|
||||
|
||||
// Source path
|
||||
if Assigned(SrcPath) then
|
||||
begin
|
||||
Process.CurrentDirectory:= UTF16ToUTF8(UnicodeString(SrcPath));
|
||||
Process.CurrentDirectory:= CeUtf16ToUtf8(UnicodeString(SrcPath));
|
||||
end;
|
||||
|
||||
try
|
||||
|
|
|
|||
|
|
@ -60,8 +60,6 @@ end;"/>
|
|||
<Linking>
|
||||
<Debugging>
|
||||
<DebugInfoType Value="dsDwarf2Set"/>
|
||||
<UseHeaptrc Value="True"/>
|
||||
<UseExternalDbgSyms Value="True"/>
|
||||
</Debugging>
|
||||
<Options>
|
||||
<PassLinkerOptions Value="True"/>
|
||||
|
|
@ -81,10 +79,8 @@ end;"/>
|
|||
<Version Value="2"/>
|
||||
</PublishOptions>
|
||||
<RunParams>
|
||||
<local>
|
||||
<FormatVersion Value="1"/>
|
||||
<LaunchingApplication PathPlusParams="\usr\X11R6\bin\xterm -T 'Lazarus Run Output' -e $(LazarusDir)\tools\runwait.sh $(TargetCmdLine)"/>
|
||||
</local>
|
||||
<FormatVersion Value="2"/>
|
||||
<Modes Count="0"/>
|
||||
</RunParams>
|
||||
<RequiredPackages Count="1">
|
||||
<Item1>
|
||||
|
|
|
|||
39
plugins/wcx/unrar/src/unrarfunc.pas
Normal file → Executable file
39
plugins/wcx/unrar/src/unrarfunc.pas
Normal file → Executable file
|
|
@ -4,7 +4,7 @@
|
|||
WCX plugin for unpacking RAR archives
|
||||
This is simple wrapper for unrar.dll or libunrar.so
|
||||
|
||||
Copyright (C) 2008-2015 Alexander Koblov (alexx2000@mail.ru)
|
||||
Copyright (C) 2008-2022 Alexander Koblov (alexx2000@mail.ru)
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
|
@ -205,7 +205,7 @@ var
|
|||
implementation
|
||||
|
||||
uses
|
||||
DCBasicTypes, DCDateTimeUtils, DCConvertEncoding, DCFileAttributes;
|
||||
SysUtils, DCBasicTypes, DCDateTimeUtils, DCConvertEncoding, DCFileAttributes;
|
||||
|
||||
type
|
||||
// From libunrar (dll.hpp)
|
||||
|
|
@ -234,6 +234,20 @@ var
|
|||
ProcessedFileNameW: array [0..1023] of WideChar;
|
||||
ProcessedFileHostOS: RarHostSystem;
|
||||
|
||||
function StrLCopy(Dest, Source: PRarUnicodeChar; MaxLen: SizeInt): PRarUnicodeChar; overload;
|
||||
var
|
||||
ACounter: SizeInt;
|
||||
begin
|
||||
ACounter := 0;
|
||||
while (Source[ACounter] <> TRarUnicodeChar(0)) and (ACounter < MaxLen) do
|
||||
begin
|
||||
Dest[ACounter] := TRarUnicodeChar(Source[ACounter]);
|
||||
Inc(ACounter);
|
||||
end;
|
||||
Dest[ACounter] := TRarUnicodeChar(0);
|
||||
StrLCopy := Dest;
|
||||
end;
|
||||
|
||||
procedure StringToArrayA(src: AnsiString;
|
||||
pDst: PAnsiChar;
|
||||
MaxDstLength: Integer);
|
||||
|
|
@ -339,8 +353,10 @@ end;
|
|||
|
||||
function UnrarCallback(Msg: LongWord; UserData, P1: Pointer; P2: PtrInt) : Integer; dcpcall;
|
||||
var
|
||||
PasswordU: String;
|
||||
VolumeNameA: TRarUnicodeArray;
|
||||
VolumeNameU: TRarUnicodeString;
|
||||
PasswordA: array[0..511] of AnsiChar;
|
||||
VolumeNameW: array [0..1023] of WideChar;
|
||||
begin
|
||||
Result := 0;
|
||||
|
|
@ -394,20 +410,25 @@ begin
|
|||
Result := -1;
|
||||
end;
|
||||
end;
|
||||
UCM_NEEDPASSWORD:
|
||||
UCM_NEEDPASSWORDW:
|
||||
begin
|
||||
// DLL needs a password to process archive. This message must be
|
||||
// processed if you wish to be able to handle encrypted archives.
|
||||
// Return zero or a positive value to continue process or -1
|
||||
// to cancel the archive operation.
|
||||
// P1 - contains the address pointing to the buffer for
|
||||
// a password in single byte encoding. You need to copy a password
|
||||
// here.
|
||||
// P2 - contains the size of password buffer.
|
||||
if not gStartupInfo.InputBox('Unrar', 'Please enter the password:', True, PAnsiChar(P1), P2) then
|
||||
// P1 - contains the address pointing to the buffer for a password.
|
||||
// You need to copy a password here.
|
||||
// P2 - contains the size of password buffer in characters.
|
||||
StrLCopy(VolumeNameA, PRarUnicodeChar(P1), High(VolumeNameA));
|
||||
PasswordU := CeUtf16ToUtf8(RarUnicodeStringToWideString(VolumeNameA));
|
||||
StrLCopy(PasswordA, PAnsiChar(PasswordU), High(PasswordA));
|
||||
if not gStartupInfo.InputBox('Unrar', 'Please enter the password:', True, PasswordA, High(PasswordA)) then
|
||||
Result := -1
|
||||
else
|
||||
else begin
|
||||
Result := 1;
|
||||
StrPLCopy(VolumeNameW, CeUtf8ToUtf16(PasswordA), High(VolumeNameW));
|
||||
StrLCopy(PRarUnicodeChar(P1), PRarUnicodeChar(WideStringToRarUnicodeString(VolumeNameW)), P2 - 1);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<CONFIG>
|
||||
<ProjectOptions>
|
||||
<Version Value="10"/>
|
||||
<Version Value="11"/>
|
||||
<PathDelim Value="\"/>
|
||||
<General>
|
||||
<SessionStorage Value="InProjectDir"/>
|
||||
|
|
@ -56,8 +56,6 @@ end;"/>
|
|||
<Linking>
|
||||
<Debugging>
|
||||
<DebugInfoType Value="dsDwarf2Set"/>
|
||||
<UseHeaptrc Value="True"/>
|
||||
<UseExternalDbgSyms Value="True"/>
|
||||
</Debugging>
|
||||
<Options>
|
||||
<PassLinkerOptions Value="True"/>
|
||||
|
|
@ -75,15 +73,19 @@ end;"/>
|
|||
</BuildModes>
|
||||
<PublishOptions>
|
||||
<Version Value="2"/>
|
||||
<IgnoreBinaries Value="False"/>
|
||||
<IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
|
||||
<ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
|
||||
</PublishOptions>
|
||||
<RunParams>
|
||||
<local>
|
||||
<FormatVersion Value="1"/>
|
||||
<LaunchingApplication PathPlusParams="\usr\X11R6\bin\xterm -T 'Lazarus Run Output' -e $(LazarusDir)\tools\runwait.sh $(TargetCmdLine)"/>
|
||||
</local>
|
||||
<FormatVersion Value="2"/>
|
||||
<Modes Count="1">
|
||||
<Mode0 Name="default">
|
||||
<local>
|
||||
<LaunchingApplication PathPlusParams="\usr\X11R6\bin\xterm -T 'Lazarus Run Output' -e $(LazarusDir)\tools\runwait.sh $(TargetCmdLine)"/>
|
||||
</local>
|
||||
</Mode0>
|
||||
</Modes>
|
||||
</RunParams>
|
||||
<RequiredPackages Count="2">
|
||||
<Item1>
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
-------------------------------------------------------------------------
|
||||
WCX plugin for working with *.zip, *.gz, *.tar, *.tgz archives
|
||||
|
||||
Copyright (C) 2007-2019 Alexander Koblov (alexx2000@mail.ru)
|
||||
Copyright (C) 2007-2022 Alexander Koblov (alexx2000@mail.ru)
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
|
@ -201,7 +201,7 @@ begin
|
|||
|
||||
sFileName := Arc.GetFileName(Arc.Tag);
|
||||
|
||||
StringToArrayW(UTF8Decode(sFileName), @HeaderData.FileName, SizeOf(HeaderData.FileName));
|
||||
StringToArrayW(CeUtf8ToUtf16(sFileName), @HeaderData.FileName, SizeOf(HeaderData.FileName));
|
||||
|
||||
with Arc.Items[Arc.Tag] do
|
||||
begin
|
||||
|
|
@ -246,9 +246,7 @@ begin
|
|||
// Show progress and ask if aborting.
|
||||
if Assigned(Arc.FProcessDataProcW) then
|
||||
begin
|
||||
if Arc.FProcessDataProcW(PWideChar(UTF8Decode(Arc.Items[Arc.Tag].FileName)),
|
||||
Arc.Items[Arc.Tag].UncompressedSize) = 0
|
||||
then
|
||||
if Arc.FProcessDataProcW(PWideChar(CeUtf8ToUtf16(Arc.Items[Arc.Tag].FileName)), -1100) = 0 then
|
||||
Arc.FOperationResult := E_EABORTED;
|
||||
end;
|
||||
end;
|
||||
|
|
@ -268,9 +266,7 @@ begin
|
|||
// Show progress and ask if aborting.
|
||||
if Assigned(Arc.FProcessDataProcW) then
|
||||
begin
|
||||
if Arc.FProcessDataProcW(PWideChar(UTF8Decode(Arc.Items[Arc.Tag].FileName)),
|
||||
Arc.Items[Arc.Tag].UncompressedSize) = 0
|
||||
then
|
||||
if Arc.FProcessDataProcW(PWideChar(CeUtf8ToUtf16(Arc.Items[Arc.Tag].FileName)), -1100) = 0 then
|
||||
Arc.FOperationResult := E_EABORTED;
|
||||
end;
|
||||
end;
|
||||
|
|
@ -353,7 +349,6 @@ begin
|
|||
Arc.DeflationOption:= gDeflationOption;
|
||||
Arc.FProcessDataProcW := gProcessDataProcW;
|
||||
Arc.OnProcessItemFailure := @Arc.AbProcessItemFailureEvent;
|
||||
Arc.StoreOptions := Arc.StoreOptions + [soReplace];
|
||||
|
||||
sPackedFile := UTF16ToUTF8(UnicodeString(PackedFile));
|
||||
|
||||
|
|
@ -369,6 +364,7 @@ begin
|
|||
|
||||
Arc.OnArchiveItemProgress := @Arc.AbArchiveItemProgressEvent;
|
||||
Arc.OnArchiveProgress := @Arc.AbArchiveProgressEvent;
|
||||
Arc.StoreOptions := Arc.StoreOptions + [soReplace];
|
||||
|
||||
Arc.BaseDirectory := UTF16ToUTF8(UnicodeString(SrcPath));
|
||||
|
||||
|
|
@ -574,9 +570,9 @@ var
|
|||
begin
|
||||
if (not mbFileExists(ImageName)) and Assigned(FChangeVolProcW) then
|
||||
begin
|
||||
StrPCopy(AVolume, UTF8Decode(ImageName));
|
||||
StrPCopy(AVolume, CeUtf8ToUtf16(ImageName));
|
||||
Abort := (FChangeVolProcW(AVolume, PK_VOL_ASK) = 0);
|
||||
if not Abort then ImageName:= UTF8Encode(UnicodeString(AVolume));
|
||||
if not Abort then ImageName:= CeUtf16ToUtf8(UnicodeString(AVolume));
|
||||
end;
|
||||
end;
|
||||
|
||||
|
|
@ -587,7 +583,7 @@ begin
|
|||
if Assigned(FProcessDataProcW) then
|
||||
begin
|
||||
if Assigned(Item) then
|
||||
Abort := (FProcessDataProcW(PWideChar(UTF8Decode(Item.FileName)), -(Progress + 1000)) = 0)
|
||||
Abort := (FProcessDataProcW(PWideChar(CeUtf8ToUtf16(Item.FileName)), -(Progress + 1000)) = 0)
|
||||
else
|
||||
Abort := (FProcessDataProcW(nil, -(Progress + 1000)) = 0);
|
||||
end;
|
||||
|
|
|
|||
|
|
@ -551,7 +551,9 @@ begin
|
|||
else if (Ext = '.TLZ') then
|
||||
Result := atLzmaTar
|
||||
else if (Ext = '.ZST') then
|
||||
Result := atZstd;
|
||||
Result := atZstd
|
||||
else if (Ext = '.TZST') then
|
||||
Result := atZstdTar;
|
||||
end;
|
||||
{$IF NOT DEFINED(ExtractCabSupport)}
|
||||
if Result = atCab then
|
||||
|
|
|
|||
|
|
@ -119,7 +119,7 @@ uses
|
|||
Windows, // Fix inline warnings
|
||||
{$ENDIF}
|
||||
StrUtils, SysUtils,
|
||||
AbBzip2, AbExcept, AbVMStrm, AbBitBkt, DCOSUtils, DCClassesUtf8;
|
||||
AbBzip2, AbExcept, AbVMStrm, AbBitBkt, AbProgress, DCOSUtils, DCClassesUtf8;
|
||||
|
||||
{ ****************** Helper functions Not from Classes Above ***************** }
|
||||
function VerifyHeader(const Header : TAbBzip2Header) : Boolean;
|
||||
|
|
@ -326,7 +326,7 @@ var
|
|||
CurItem: TAbBzip2Item;
|
||||
UpdateArchive: Boolean;
|
||||
TempFileName: String;
|
||||
InputFileStream: TStream;
|
||||
InputFileStream: TAbProgressFileStream;
|
||||
begin
|
||||
if IsBzippedTar and TarAutoHandle then
|
||||
begin
|
||||
|
|
@ -338,7 +338,7 @@ begin
|
|||
FreeAndNil(FBzip2Stream);
|
||||
TempFileName := GetTempName(FArchiveName + ExtensionSeparator);
|
||||
{ Create new archive with temporary name }
|
||||
FBzip2Stream := TFileStreamEx.Create(TempFileName, fmCreate or fmShareDenyWrite);
|
||||
FBzip2Stream := TAbProgressFileStream.Create(TempFileName, fmCreate or fmShareDenyWrite, OnProgress);
|
||||
end;
|
||||
FTarStream.Position := 0;
|
||||
CompStream := TBZCompressionStream.Create(bs9, FBzip2Stream);
|
||||
|
|
@ -377,7 +377,7 @@ begin
|
|||
if CurItem.Action = aaStreamAdd then
|
||||
CompStream.CopyFrom(InStream, 0){ Copy/compress entire Instream to FBzip2Stream }
|
||||
else begin
|
||||
InputFileStream := TFileStreamEx.Create(CurItem.DiskFileName, fmOpenRead or fmShareDenyWrite );
|
||||
InputFileStream := TAbProgressFileStream.Create(CurItem.DiskFileName, fmOpenRead or fmShareDenyWrite, OnProgress);
|
||||
try
|
||||
CompStream.CopyFrom(InputFileStream, 0);{ Copy/compress entire Instream to FBzip2Stream }
|
||||
finally
|
||||
|
|
@ -408,23 +408,29 @@ const
|
|||
BufSize = $F000;
|
||||
var
|
||||
DecompStream: TBZDecompressionStream;
|
||||
ProxyStream: TAbProgressStream;
|
||||
Buffer: PByte;
|
||||
N: Integer;
|
||||
begin
|
||||
DecompStream := TBZDecompressionStream.Create(FBzip2Stream);
|
||||
ProxyStream:= TAbProgressStream.Create(FBzip2Stream, OnProgress);
|
||||
try
|
||||
GetMem(Buffer, BufSize);
|
||||
DecompStream := TBZDecompressionStream.Create(ProxyStream);
|
||||
try
|
||||
N := DecompStream.Read(Buffer^, BufSize);
|
||||
while N > 0 do begin
|
||||
aStream.WriteBuffer(Buffer^, N);
|
||||
GetMem(Buffer, BufSize);
|
||||
try
|
||||
N := DecompStream.Read(Buffer^, BufSize);
|
||||
while N > 0 do begin
|
||||
aStream.WriteBuffer(Buffer^, N);
|
||||
N := DecompStream.Read(Buffer^, BufSize);
|
||||
end;
|
||||
finally
|
||||
FreeMem(Buffer, BufSize);
|
||||
end;
|
||||
finally
|
||||
FreeMem(Buffer, BufSize);
|
||||
DecompStream.Free;
|
||||
end;
|
||||
finally
|
||||
DecompStream.Free;
|
||||
ProxyStream.Free;
|
||||
end;
|
||||
end;
|
||||
{ -------------------------------------------------------------------------- }
|
||||
|
|
|
|||
|
|
@ -293,7 +293,7 @@ uses
|
|||
Windows,
|
||||
{$ENDIF}
|
||||
SysUtils,
|
||||
AbBitBkt, AbDfBase, AbDfDec, AbZlibPrc, AbExcept, AbResString,
|
||||
AbBitBkt, AbDfBase, AbDfDec, AbZlibPrc, AbExcept, AbResString, AbProgress,
|
||||
AbVMStrm, DCOSUtils, DCClassesUtf8, DCConvertEncoding;
|
||||
|
||||
const
|
||||
|
|
@ -985,6 +985,7 @@ procedure TAbGzipArchive.ExtractItemToStreamAt(Index: Integer;
|
|||
aStream: TStream);
|
||||
var
|
||||
GzHelp : TAbGzipStreamHelper;
|
||||
ProxyStream : TAbProgressStream;
|
||||
begin
|
||||
if IsGzippedTar and TarAutoHandle then begin
|
||||
SwapToTar;
|
||||
|
|
@ -994,43 +995,48 @@ begin
|
|||
SwapToGzip;
|
||||
{ note Index ignored as there's only one item in a GZip }
|
||||
|
||||
GZHelp := TAbGzipStreamHelper.Create(FGzStream);
|
||||
ProxyStream := TAbProgressStream.Create(FGzStream, FOnProgress);
|
||||
try
|
||||
FGzStream.Seek(0, soBeginning);
|
||||
GZHelp := TAbGzipStreamHelper.Create(ProxyStream);
|
||||
try
|
||||
FGzStream.Seek(0, soBeginning);
|
||||
|
||||
{ read GZip Header }
|
||||
GzHelp.ReadHeader;
|
||||
|
||||
repeat
|
||||
{ extract copy data from GZip}
|
||||
GzHelp.ExtractItemData(aStream);
|
||||
|
||||
{ Get validation data }
|
||||
GzHelp.ReadTail;
|
||||
|
||||
{$IFDEF STRICTGZIP}
|
||||
{ According to
|
||||
http://www.gzip.org/zlib/rfc1952.txt
|
||||
|
||||
A compliant gzip compressor should calculate and set the CRC32 and ISIZE.
|
||||
However, a compliant decompressor should not check these values.
|
||||
|
||||
If you want to check the the values of the CRC32 and ISIZE in a GZIP file
|
||||
when decompressing enable the STRICTGZIP define contained in AbDefine.inc }
|
||||
|
||||
{ validate against CRC }
|
||||
if GzHelp.FItem.Crc32 <> GzHelp.TailCRC then
|
||||
raise EAbGzipBadCRC.Create;
|
||||
|
||||
{ validate against file size }
|
||||
if GzHelp.FItem.UncompressedSize <> GZHelp.TailSize then
|
||||
raise EAbGzipBadFileSize.Create;
|
||||
{$ENDIF}
|
||||
{ try concatenated streams }
|
||||
{ read GZip Header }
|
||||
GzHelp.ReadHeader;
|
||||
until not VerifyHeader(GZHelp.FItem.FGzHeader);
|
||||
|
||||
repeat
|
||||
{ extract copy data from GZip}
|
||||
GzHelp.ExtractItemData(aStream);
|
||||
|
||||
{ Get validation data }
|
||||
GzHelp.ReadTail;
|
||||
|
||||
{$IFDEF STRICTGZIP}
|
||||
{ According to
|
||||
http://www.gzip.org/zlib/rfc1952.txt
|
||||
|
||||
A compliant gzip compressor should calculate and set the CRC32 and ISIZE.
|
||||
However, a compliant decompressor should not check these values.
|
||||
|
||||
If you want to check the the values of the CRC32 and ISIZE in a GZIP file
|
||||
when decompressing enable the STRICTGZIP define contained in AbDefine.inc }
|
||||
|
||||
{ validate against CRC }
|
||||
if GzHelp.FItem.Crc32 <> GzHelp.TailCRC then
|
||||
raise EAbGzipBadCRC.Create;
|
||||
|
||||
{ validate against file size }
|
||||
if GzHelp.FItem.UncompressedSize <> GZHelp.TailSize then
|
||||
raise EAbGzipBadFileSize.Create;
|
||||
{$ENDIF}
|
||||
{ try concatenated streams }
|
||||
GzHelp.ReadHeader;
|
||||
until not VerifyHeader(GZHelp.FItem.FGzHeader);
|
||||
finally
|
||||
GzHelp.Free;
|
||||
end;
|
||||
finally
|
||||
GzHelp.Free;
|
||||
ProxyStream.Free;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
|
@ -1121,9 +1127,11 @@ var
|
|||
InGzHelp, OutGzHelp : TAbGzipStreamHelper;
|
||||
Abort : Boolean;
|
||||
i : Integer;
|
||||
NewStream : TAbVirtualMemoryStream;
|
||||
NewStream : TStream;
|
||||
UncompressedStream : TStream;
|
||||
CurItem : TAbGzipItem;
|
||||
CreateArchive : Boolean;
|
||||
ATempName : String;
|
||||
begin
|
||||
{prepare for the try..finally}
|
||||
OutGzHelp := nil;
|
||||
|
|
@ -1134,12 +1142,16 @@ begin
|
|||
|
||||
try
|
||||
{init new archive stream}
|
||||
NewStream := TAbVirtualMemoryStream.Create;
|
||||
CreateArchive:= FOwnsStream and (FGzStream.Size = 0) and (FGzStream is TFileStreamEx);
|
||||
if CreateArchive then
|
||||
NewStream := FGzStream
|
||||
else begin
|
||||
ATempName := Copy(ExtractFileName(FArchiveName), 1, MAX_PATH div 2) + '~';
|
||||
ATempName := GetTempName(ExtractFilePath(FArchiveName) + ATempName) + '.tmp';
|
||||
NewStream := TFileStreamEx.Create(ATempName, fmCreate or fmShareDenyWrite);
|
||||
end;
|
||||
OutGzHelp := TAbGzipStreamHelper.Create(NewStream);
|
||||
|
||||
{ create helper }
|
||||
NewStream.SwapFileDirectory := ExtractFilePath(AbGetTempFile(FTempDir, False));
|
||||
|
||||
{ save the Tar data }
|
||||
if IsGzippedTar and TarAutoHandle then begin
|
||||
SwapToTar;
|
||||
|
|
@ -1191,8 +1203,8 @@ begin
|
|||
end
|
||||
else begin
|
||||
CurItem.LastModTimeAsDateTime := AbGetFileTime(CurItem.DiskFileName);
|
||||
UncompressedStream := TFileStreamEx.Create(CurItem.DiskFileName,
|
||||
fmOpenRead or fmShareDenyWrite );
|
||||
UncompressedStream := TAbProgressFileStream.Create(CurItem.DiskFileName,
|
||||
fmOpenRead or fmShareDenyWrite, OnProgress);
|
||||
|
||||
try
|
||||
CurItem.UncompressedSize := UncompressedStream.Size;
|
||||
|
|
@ -1223,11 +1235,32 @@ begin
|
|||
TMemoryStream(FStream).LoadFromStream(NewStream)
|
||||
else begin
|
||||
{ need new stream to write }
|
||||
FreeAndNil(FStream);
|
||||
FGZStream := nil;
|
||||
FStream := TFileStreamEx.Create(FArchiveName, fmCreate or fmShareDenyWrite);
|
||||
FGZStream := FStream;
|
||||
FStream.CopyFrom(NewStream, NewStream.Size);
|
||||
if CreateArchive then
|
||||
NewStream := nil
|
||||
else begin
|
||||
if FOwnsStream then
|
||||
begin
|
||||
{need new stream to write}
|
||||
if CreateArchive then
|
||||
NewStream := nil
|
||||
else begin
|
||||
FGZStream := nil;
|
||||
FreeAndNil(FStream);
|
||||
FreeAndNil(NewStream);
|
||||
if (mbDeleteFile(FArchiveName) and mbRenameFile(ATempName, FArchiveName)) then
|
||||
FStream := TFileStreamEx.Create(FArchiveName, fmOpenReadWrite or fmShareDenyWrite)
|
||||
else begin
|
||||
RaiseLastOSError;
|
||||
end;
|
||||
FGZStream := FStream;
|
||||
end;
|
||||
end
|
||||
else begin
|
||||
FStream.Size := 0;
|
||||
FStream.Position := 0;
|
||||
FStream.CopyFrom(NewStream, 0)
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
{update Items list}
|
||||
|
|
@ -1245,7 +1278,8 @@ begin
|
|||
DoArchiveProgress( 100, Abort );
|
||||
finally {NewStream}
|
||||
OutGzHelp.Free;
|
||||
NewStream.Free;
|
||||
if (FStream <> NewStream) then
|
||||
NewStream.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
|
|
|||
109
plugins/wcx/zip/src/fparchive/abprogress.pas
Executable file
109
plugins/wcx/zip/src/fparchive/abprogress.pas
Executable file
|
|
@ -0,0 +1,109 @@
|
|||
unit AbProgress;
|
||||
|
||||
{$mode ObjFPC}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, AbArcTyp, DCClassesUtf8;
|
||||
|
||||
type
|
||||
|
||||
{ TAbProgress }
|
||||
|
||||
TAbProgress = object
|
||||
DoneSize: Int64;
|
||||
FileSize: Int64;
|
||||
OnProgress: TAbProgressEvent;
|
||||
procedure DoProgress(Result: Integer);
|
||||
end;
|
||||
|
||||
{ TAbProgressStream }
|
||||
|
||||
TAbProgressStream = class(TStream)
|
||||
private
|
||||
FSource: TStream;
|
||||
FProgress: TAbProgress;
|
||||
public
|
||||
constructor Create(ASource : TStream; AEvent: TAbProgressEvent); reintroduce;
|
||||
function Read(var Buffer; Count: Longint): Longint; override;
|
||||
function Write(const Buffer; Count: Longint): Longint; override;
|
||||
function Seek(const Offset: Int64; Origin: TSeekOrigin): Int64; override;
|
||||
end;
|
||||
|
||||
{ TAbProgressFileStream }
|
||||
|
||||
TAbProgressFileStream = class(TFileStreamEx)
|
||||
private
|
||||
FProgress: TAbProgress;
|
||||
public
|
||||
constructor Create(const AFileName: String; Mode: LongWord; AEvent: TAbProgressEvent); reintroduce;
|
||||
function Read(var Buffer; Count: Longint): Longint; override;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
AbExcept, DCOSUtils;
|
||||
|
||||
{ TAbProgress }
|
||||
|
||||
procedure TAbProgress.DoProgress(Result: Integer);
|
||||
var
|
||||
Percent: Byte;
|
||||
Abort: Boolean = False;
|
||||
begin
|
||||
if (FileSize > 0) then
|
||||
begin
|
||||
DoneSize += Result;
|
||||
Percent:= Byte(DoneSize * 100 div FileSize);
|
||||
|
||||
OnProgress(Percent, Abort);
|
||||
|
||||
if Abort then raise EAbUserAbort.Create;
|
||||
end;
|
||||
end;
|
||||
|
||||
{ TAbProgressStream }
|
||||
|
||||
constructor TAbProgressStream.Create(ASource: TStream; AEvent: TAbProgressEvent);
|
||||
begin
|
||||
FSource:= ASource;
|
||||
FProgress.OnProgress:= AEvent;
|
||||
FProgress.FileSize:= FSource.Size;
|
||||
end;
|
||||
|
||||
function TAbProgressStream.Read(var Buffer; Count: Longint): Longint;
|
||||
begin
|
||||
Result:= FSource.Read(Buffer, Count);
|
||||
if Assigned(FProgress.OnProgress) then FProgress.DoProgress(Result);
|
||||
end;
|
||||
|
||||
function TAbProgressStream.Write(const Buffer; Count: Longint): Longint;
|
||||
begin
|
||||
Result:= FSource.Write(Buffer, Count);
|
||||
end;
|
||||
|
||||
function TAbProgressStream.Seek(const Offset: Int64; Origin: TSeekOrigin): Int64;
|
||||
begin
|
||||
Result:= FSource.Seek(Offset, Origin);
|
||||
end;
|
||||
|
||||
{ TAbProgressFileStream }
|
||||
|
||||
constructor TAbProgressFileStream.Create(const AFileName: String;
|
||||
Mode: LongWord; AEvent: TAbProgressEvent);
|
||||
begin
|
||||
FProgress.OnProgress:= AEvent;
|
||||
inherited Create(AFileName, Mode);
|
||||
FProgress.FileSize:= FileGetSize(Handle);
|
||||
end;
|
||||
|
||||
function TAbProgressFileStream.Read(var Buffer; Count: Longint): Longint;
|
||||
begin
|
||||
Result:= inherited Read(Buffer, Count);
|
||||
if Assigned(FProgress.OnProgress) then FProgress.DoProgress(Result);
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
|
|
@ -1153,6 +1153,11 @@ begin
|
|||
begin
|
||||
SetString(AValue, P + 1, ALength - 1);
|
||||
FTarItem.Size := StrToInt64Def(AValue, FTarItem.Size);
|
||||
end
|
||||
else if (AName = 'mtime') then
|
||||
begin
|
||||
SetString(AValue, P + 1, ALength - 1);
|
||||
FTarItem.ModTime := Round(StrToFloatDef(AValue, FTarItem.ModTime));
|
||||
end;
|
||||
|
||||
Inc(P, ALength);
|
||||
|
|
@ -2148,11 +2153,6 @@ begin
|
|||
|
||||
if CurItem.ItemType in [UNKNOWN_ITEM] then
|
||||
raise EAbTarBadOp.Create; { Unsupported Type, Cannot Extract }
|
||||
if (CurItem.ItemType = UNSUPPORTED_ITEM) and
|
||||
((Length(CurItem.FileName) >= AB_TAR_NAMESIZE) or
|
||||
(Length(CurItem.LinkName) >= AB_TAR_NAMESIZE)) then
|
||||
raise EAbTarBadOp.Create; { Unsupported Type, Cannot Extract }
|
||||
{ We will allow extractions if the file name/Link name are strickly less than 100 chars }
|
||||
|
||||
{ Link to previously archived file }
|
||||
if CurItem.LinkFlag in [AB_TAR_LF_LINK] then
|
||||
|
|
@ -2216,11 +2216,6 @@ begin
|
|||
|
||||
if CurItem.ItemType in [UNKNOWN_ITEM] then
|
||||
raise EAbTarBadOp.Create; { Unsupported Type, Cannot Extract }
|
||||
if (CurItem.ItemType = UNSUPPORTED_ITEM) and
|
||||
((Length(CurItem.FileName) >= AB_TAR_NAMESIZE) or
|
||||
(Length(CurItem.LinkName) >= AB_TAR_NAMESIZE)) then
|
||||
raise EAbTarBadOp.Create; { Unsupported Type, Cannot Extract }
|
||||
{ We will allow extractions if the file name is strictly less than 100 chars }
|
||||
|
||||
FStream.Position := CurItem.StreamPosition+CurItem.FileHeaderCount*AB_TAR_RECORDSIZE;
|
||||
if CurItem.UncompressedSize <> 0 then
|
||||
|
|
@ -2235,9 +2230,9 @@ var
|
|||
ItemFound : Boolean;
|
||||
Abort : Boolean;
|
||||
Confirm : Boolean;
|
||||
Duplicate : Boolean;
|
||||
i : Integer;
|
||||
Progress : Byte;
|
||||
|
||||
begin
|
||||
{ create helper }
|
||||
TarHelp := TAbTarStreamHelper.Create(FStream);
|
||||
|
|
@ -2245,6 +2240,7 @@ begin
|
|||
{build Items list from tar header records}
|
||||
|
||||
{ reset Tar }
|
||||
Duplicate := False;
|
||||
ItemFound := (FStream.Size > 0) and TarHelp.FindFirstItem;
|
||||
if ItemFound then FArchFormat := UNKNOWN_FORMAT
|
||||
else FArchFormat := V7_FORMAT;
|
||||
|
|
@ -2264,7 +2260,24 @@ begin
|
|||
if FArchFormat < Item.ArchiveFormat then
|
||||
FArchFormat := Item.ArchiveFormat; { Take the max format }
|
||||
Item.Action := aaNone;
|
||||
FItemList.Add(Item);
|
||||
{
|
||||
TAR archive can contain the same directory multiple
|
||||
times. In this case, use the last found directory.
|
||||
}
|
||||
if Item.IsDirectory then
|
||||
begin
|
||||
I := FItemList.Find(Item.FileName);
|
||||
if (I >= 0) then
|
||||
begin
|
||||
Duplicate := True;
|
||||
FItemList.Items[I] := Item;
|
||||
end;
|
||||
end;
|
||||
if Duplicate then
|
||||
Duplicate := False
|
||||
else begin
|
||||
FItemList.Add(Item);
|
||||
end;
|
||||
end { end if }
|
||||
else begin
|
||||
{ unhandled Tar file system entity, notify user, but otherwise ignore }
|
||||
|
|
@ -2372,19 +2385,24 @@ var
|
|||
CurItem : TAbTarItem;
|
||||
AttrEx : TAbAttrExRec;
|
||||
ATempName : String;
|
||||
CreateArchive : Boolean;
|
||||
begin
|
||||
if FArchReadOnly then
|
||||
raise EAbTarBadOp.Create; { Archive is read only }
|
||||
|
||||
{init new archive stream}
|
||||
CreateArchive:= FOwnsStream and (FStream.Size = 0) and (FStream is TFileStreamEx);
|
||||
if CreateArchive then
|
||||
NewStream := FStream
|
||||
if FOwnsStream and (FStream is TFileStreamEx) then
|
||||
begin
|
||||
if FStream.Size = 0 then
|
||||
NewStream := FStream
|
||||
else begin
|
||||
ATempName := Copy(ExtractOnlyFileName(FArchiveName), 1, MAX_PATH div 2) + '~';
|
||||
ATempName := GetTempName(ExtractFilePath(FArchiveName) + ATempName) + '.tmp';
|
||||
NewStream := TFileStreamEx.Create(ATempName, fmCreate or fmShareDenyWrite);
|
||||
end;
|
||||
end
|
||||
else begin
|
||||
ATempName := Copy(ExtractOnlyFileName(FArchiveName), 1, MAX_PATH div 2) + '~';
|
||||
ATempName := GetTempName(ExtractFilePath(FArchiveName) + ATempName) + '.tmp';
|
||||
NewStream := TFileStreamEx.Create(ATempName, fmCreate or fmShareDenyWrite);
|
||||
NewStream := TAbVirtualMemoryStream.Create;
|
||||
TAbVirtualMemoryStream(NewStream).SwapFileDirectory := ExtractFileDir(FArchiveName);
|
||||
end;
|
||||
OutTarHelp := TAbTarStreamHelper.Create(NewStream);
|
||||
|
||||
|
|
@ -2485,7 +2503,7 @@ begin
|
|||
if FOwnsStream then
|
||||
begin
|
||||
{need new stream to write}
|
||||
if CreateArchive then
|
||||
if NewStream = FStream then
|
||||
NewStream := nil
|
||||
else begin
|
||||
FreeAndNil(FStream);
|
||||
|
|
|
|||
|
|
@ -160,6 +160,7 @@ uses
|
|||
AbSWStm,
|
||||
AbUnzOutStm,
|
||||
AbUtils,
|
||||
AbZlibPrc,
|
||||
AbWinZipAes,
|
||||
DCClassesUtf8;
|
||||
|
||||
|
|
@ -899,11 +900,17 @@ begin
|
|||
Hlpr := TAbDeflateHelper.Create;
|
||||
try
|
||||
if Item.CompressionMethod = cmEnhancedDeflated then
|
||||
begin
|
||||
Hlpr.Options := Hlpr.Options or dfc_UseDeflate64;
|
||||
Hlpr.StreamSize := Item.CompressedSize;
|
||||
|
||||
Hlpr.StreamSize := Item.CompressedSize;
|
||||
AbDfDec.Inflate(InStream, OutStream, Hlpr)
|
||||
end
|
||||
else begin
|
||||
Hlpr.NormalSize := Item.UncompressedSize;
|
||||
|
||||
Inflate(InStream, OutStream, Hlpr);
|
||||
AbZlibPrc.Inflate(InStream, OutStream, Hlpr);
|
||||
end;
|
||||
finally
|
||||
Hlpr.Free;
|
||||
end;
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ interface
|
|||
uses
|
||||
{$IFDEF MSWINDOWS}
|
||||
Windows,
|
||||
DCConvertEncoding,
|
||||
{$ENDIF}
|
||||
{$IFDEF LibcAPI}
|
||||
Libc,
|
||||
|
|
@ -257,7 +258,7 @@ type
|
|||
{ recursive routine to see if the source string matches
|
||||
the pattern. Both ? and * wildcard characters are allowed.}
|
||||
|
||||
function AbPercentage(V1, V2 : LongInt) : Byte;
|
||||
function AbPercentage(V1, V2 : Int64) : Byte;
|
||||
{-Returns the ratio of V1 to V2 * 100}
|
||||
|
||||
procedure AbStripDots( var FName : string );
|
||||
|
|
@ -320,8 +321,8 @@ const
|
|||
MinutesInDay = 1440; {Number of minutes in a day}
|
||||
|
||||
|
||||
function AbUnixTimeToLocalDateTime(UnixTime : LongInt) : TDateTime;
|
||||
function AbLocalDateTimeToUnixTime(DateTime : TDateTime) : LongInt;
|
||||
function AbUnixTimeToLocalDateTime(UnixTime : Int64) : TDateTime;
|
||||
function AbLocalDateTimeToUnixTime(DateTime : TDateTime) : Int64;
|
||||
|
||||
function AbDosFileDateToDateTime(FileDate, FileTime : Word) : TDateTime;
|
||||
function AbDateTimeToDosFileDate(Value : TDateTime) : LongInt;
|
||||
|
|
@ -375,6 +376,7 @@ uses
|
|||
AbExcept,
|
||||
DCOSUtils,
|
||||
DCStrUtils,
|
||||
DCBasicTypes,
|
||||
DCDateTimeUtils;
|
||||
|
||||
(*
|
||||
|
|
@ -447,7 +449,7 @@ begin
|
|||
end;
|
||||
{$ENDIF UNIX}
|
||||
{$IFDEF MSWINDOWS}
|
||||
Result := CopyFileW(PWideChar(UTF8Decode(Source)), PWideChar(UTF8Decode(Destination)), FailIfExists);
|
||||
Result := CopyFileW(PWideChar(CeUtf8ToUtf16(Source)), PWideChar(CeUtf8ToUtf16(Destination)), FailIfExists);
|
||||
{$ENDIF MSWINDOWS}
|
||||
end;
|
||||
{ -------------------------------------------------------------------------- }
|
||||
|
|
@ -556,7 +558,7 @@ function AbGetDriveFreeSpace(const ArchiveName : string) : Int64;
|
|||
var
|
||||
FreeAvailable, TotalSpace: Int64;
|
||||
begin
|
||||
if GetDiskFreeSpaceExW(PWideChar(UTF8Decode(ExtractFilePath(ExpandFileName(ArchiveName)))),
|
||||
if GetDiskFreeSpaceExW(PWideChar(CeUtf8ToUtf16(ExtractFilePath(ExpandFileName(ArchiveName)))),
|
||||
FreeAvailable, TotalSpace, nil) then
|
||||
Result := FreeAvailable
|
||||
else
|
||||
|
|
@ -911,13 +913,9 @@ begin
|
|||
end;
|
||||
end;
|
||||
{ -------------------------------------------------------------------------- }
|
||||
function AbPercentage(V1, V2 : LongInt) : Byte;
|
||||
function AbPercentage(V1, V2 : Int64): Byte;
|
||||
{ Returns the ratio of V1 to V2 * 100 }
|
||||
begin
|
||||
if V2 > 16384000 then begin {Possible LongInt overflow}
|
||||
V1 := (V1 + $80) shr 8; {scale down (div 256)}
|
||||
V2 := (V2 + $80) shr 8; {scale down (div 256)}
|
||||
end;
|
||||
if V2 <= 0 then
|
||||
Result := 0
|
||||
else if V1 >= V2 then
|
||||
|
|
@ -997,18 +995,20 @@ end;
|
|||
{ -------------------------------------------------------------------------- }
|
||||
function AbWriteVolumeLabel(const VolName : string;
|
||||
Drive : Char) : Cardinal;
|
||||
{$IFDEF MSWINDOWS}
|
||||
var
|
||||
Temp : WideString;
|
||||
Temp : UnicodeString;
|
||||
Vol : array[0..11] of WideChar;
|
||||
Root : array[0..3] of WideChar;
|
||||
{$ENDIF}
|
||||
begin
|
||||
Temp := UTF8Decode(VolName);
|
||||
{$IFDEF MSWINDOWS}
|
||||
Temp := CeUtf8ToUtf16(VolName);
|
||||
StrPCopyW(Root, '%:' + AbPathDelim);
|
||||
Root[0] := Drive;
|
||||
if Length(Temp) > 11 then
|
||||
SetLength(Temp, 11);
|
||||
StrPCopyW(Vol, Temp);
|
||||
{$IFDEF MSWINDOWS}
|
||||
if Windows.SetVolumeLabelW(Root, Vol) then
|
||||
Result := 0
|
||||
else Result := GetLastError;
|
||||
|
|
@ -1039,7 +1039,7 @@ Result := Result * SecondsInMinute;
|
|||
end;
|
||||
{$ENDIF}
|
||||
{ -------------------------------------------------------------------------- }
|
||||
function AbUnixTimeToLocalDateTime(UnixTime : LongInt) : TDateTime;
|
||||
function AbUnixTimeToLocalDateTime(UnixTime : Int64) : TDateTime;
|
||||
{ convert UTC unix date to Delphi TDateTime in local timezone }
|
||||
{$IFDEF MSWINDOWS}
|
||||
var
|
||||
|
|
@ -1061,12 +1061,12 @@ begin
|
|||
{$ENDIF}
|
||||
{$IFDEF UNIX}
|
||||
begin
|
||||
Result := FileDateToDateTime(UnixTime);
|
||||
Result := UnixFileTimeToDateTime(TUnixFileTime(UnixTime));
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
{ -------------------------------------------------------------------------- }
|
||||
function AbLocalDateTimeToUnixTime(DateTime : TDateTime) : LongInt;
|
||||
function AbLocalDateTimeToUnixTime(DateTime : TDateTime) : Int64;
|
||||
{ convert local Delphi TDateTime to UTC unix date }
|
||||
{$IFDEF MSWINDOWS}
|
||||
var
|
||||
|
|
@ -1086,7 +1086,7 @@ begin
|
|||
{$ENDIF}
|
||||
{$IFDEF UNIX}
|
||||
begin
|
||||
Result := DateTimeToFileDate(DateTime);
|
||||
Result := Int64(DateTimeToUnixFileTime(DateTime));
|
||||
{$ENDIF}
|
||||
end;
|
||||
{ -------------------------------------------------------------------------- }
|
||||
|
|
@ -1257,11 +1257,9 @@ begin
|
|||
aAttr.Attr := -1;
|
||||
aAttr.Mode := 0;
|
||||
{$IFDEF MSWINDOWS}
|
||||
Result := GetFileAttributesExW(PWideChar(UTF8Decode(aFileName)), GetFileExInfoStandard, @FindData);
|
||||
Result := GetFileAttributesExW(PWideChar(CeUtf8ToUtf16(aFileName)), GetFileExInfoStandard, @FindData);
|
||||
if Result then begin
|
||||
if Windows.FileTimeToLocalFileTime(FindData.ftLastWriteTime, LocalFileTime) and
|
||||
FileTimeToDosDateTime(LocalFileTime, FileDate.Hi, FileDate.Lo) then
|
||||
aAttr.Time := FileDateToDateTime(Integer(FileDate));
|
||||
aAttr.Time := WinFileTimeToDateTime(FindData.ftLastWriteTime);
|
||||
LARGE_INTEGER(aAttr.Size).LowPart := FindData.nFileSizeLow;
|
||||
LARGE_INTEGER(aAttr.Size).HighPart := FindData.nFileSizeHigh;
|
||||
aAttr.Attr := FindData.dwFileAttributes;
|
||||
|
|
|
|||
|
|
@ -114,7 +114,7 @@ uses
|
|||
Windows, // Fix inline warnings
|
||||
{$ENDIF}
|
||||
StrUtils, SysUtils,
|
||||
AbXz, AbExcept, AbVMStrm, AbBitBkt, CRC, DCOSUtils, DCClassesUtf8;
|
||||
AbXz, AbExcept, AbVMStrm, AbBitBkt, AbProgress, CRC, DCOSUtils, DCClassesUtf8;
|
||||
|
||||
{ ****************** Helper functions Not from Classes Above ***************** }
|
||||
function VerifyHeader(const Header : TAbXzHeader) : Boolean;
|
||||
|
|
@ -317,8 +317,8 @@ var
|
|||
CurItem: TAbXzItem;
|
||||
UpdateArchive: Boolean;
|
||||
TempFileName: String;
|
||||
InputFileStream: TStream;
|
||||
LzmaCompression: TLzmaCompression;
|
||||
InputFileStream: TAbProgressFileStream;
|
||||
begin
|
||||
if IsXzippedTar and TarAutoHandle then
|
||||
begin
|
||||
|
|
@ -330,7 +330,7 @@ begin
|
|||
FreeAndNil(FXzStream);
|
||||
TempFileName := GetTempName(FArchiveName + ExtensionSeparator);
|
||||
{ Create new archive with temporary name }
|
||||
FXzStream := TFileStreamEx.Create(TempFileName, fmCreate or fmShareDenyWrite);
|
||||
FXzStream := TAbProgressFileStream.Create(TempFileName, fmCreate or fmShareDenyWrite, OnProgress);
|
||||
end;
|
||||
FTarStream.Position := 0;
|
||||
LzmaCompression := TLzmaCompression.Create(FTarStream, FXzStream);
|
||||
|
|
@ -374,7 +374,7 @@ begin
|
|||
end;
|
||||
end
|
||||
else begin
|
||||
InputFileStream := TFileStreamEx.Create(CurItem.DiskFileName, fmOpenRead or fmShareDenyWrite);
|
||||
InputFileStream := TAbProgressFileStream.Create(CurItem.DiskFileName, fmOpenRead or fmShareDenyWrite, OnProgress);
|
||||
try
|
||||
LzmaCompression := TLzmaCompression.Create(InputFileStream, FXzStream);
|
||||
try
|
||||
|
|
@ -404,13 +404,19 @@ end;
|
|||
{ -------------------------------------------------------------------------- }
|
||||
procedure TAbXzArchive.DecompressToStream(aStream: TStream);
|
||||
var
|
||||
ProxyStream: TAbProgressStream;
|
||||
LzmaDecompression: TLzmaDecompression;
|
||||
begin
|
||||
LzmaDecompression := TLzmaDecompression.Create(FXzStream, aStream);
|
||||
ProxyStream:= TAbProgressStream.Create(FXzStream, OnProgress);
|
||||
try
|
||||
LzmaDecompression.Code
|
||||
LzmaDecompression := TLzmaDecompression.Create(ProxyStream, aStream);
|
||||
try
|
||||
LzmaDecompression.Code
|
||||
finally
|
||||
LzmaDecompression.Free;
|
||||
end;
|
||||
finally
|
||||
LzmaDecompression.Free;
|
||||
ProxyStream.Free;
|
||||
end;
|
||||
end;
|
||||
{ -------------------------------------------------------------------------- }
|
||||
|
|
|
|||
|
|
@ -73,6 +73,23 @@ const
|
|||
Ab_XceedUnicodePathSubfieldID : Word = $554E;
|
||||
Ab_XceedUnicodePathSignature : LongWord= $5843554E;
|
||||
|
||||
type
|
||||
TNtfsTimeField = packed record
|
||||
Reserved : UInt32;
|
||||
Tag : UInt16;
|
||||
Size : UInt16;
|
||||
Mtime : UInt64;
|
||||
Atime : UInt64;
|
||||
Ctime : UInt64;
|
||||
end;
|
||||
PNtfsTimeField = ^TNtfsTimeField;
|
||||
|
||||
TInfoZipTimeField = packed record
|
||||
Tag : Byte;
|
||||
Mtime : UInt32;
|
||||
end;
|
||||
PInfoZipTimeField = ^TInfoZipTimeField;
|
||||
|
||||
type
|
||||
PAbByteArray4K = ^TAbByteArray4K;
|
||||
TAbByteArray4K = array[1..4096] of Byte;
|
||||
|
|
@ -413,6 +430,7 @@ type
|
|||
function GetLastModFileTime : Word; override;
|
||||
function GetNativeFileAttributes : LongInt; override;
|
||||
function GetNativeLastModFileTime: Longint; override;
|
||||
function GetLastModTimeAsDateTime: TDateTime; override;
|
||||
procedure SetCompressedSize( const Value : Int64 ); override;
|
||||
procedure SetCRC32( const Value : Longint ); override;
|
||||
procedure SetExternalFileAttributes( Value : LongWord ); override;
|
||||
|
|
@ -420,6 +438,7 @@ type
|
|||
procedure SetLastModFileDate(const Value : Word ); override;
|
||||
procedure SetLastModFileTime(const Value : Word ); override;
|
||||
procedure SetUncompressedSize( const Value : Int64 ); override;
|
||||
procedure SetLastModTimeAsDateTime(const Value: TDateTime); override;
|
||||
|
||||
public {methods}
|
||||
constructor Create;
|
||||
|
|
@ -1455,6 +1474,14 @@ begin
|
|||
{$ENDIF}
|
||||
end;
|
||||
{ -------------------------------------------------------------------------- }
|
||||
function TAbZipItem.GetLastModTimeAsDateTime: TDateTime;
|
||||
begin
|
||||
if (FDateTime <> 0) then
|
||||
Result := FDateTime
|
||||
else
|
||||
Result := AbDosFileDateToDateTime(FItemInfo.LastModFileDate, FItemInfo.LastModFileTime);
|
||||
end;
|
||||
{ -------------------------------------------------------------------------- }
|
||||
function TAbZipItem.GetShannonFanoTreeCount : Byte;
|
||||
begin
|
||||
Result := FItemInfo.ShannonFanoTreeCount;
|
||||
|
|
@ -1687,7 +1714,7 @@ begin
|
|||
{$IFDEF MSWINDOWS}
|
||||
FItemInfo.IsUTF8 := False;
|
||||
HostOS := hosDOS;
|
||||
UnicName := UTF8Decode(Value);
|
||||
UnicName := CeUtf8ToUtf16(Value);
|
||||
if CeTryEncode(UnicName, CP_OEMCP, False, AnsiName) then
|
||||
{no-op}
|
||||
else if (GetACP <> GetOEMCP) and CeTryEncode(UnicName, CP_ACP, False, AnsiName) then
|
||||
|
|
@ -1700,6 +1727,7 @@ begin
|
|||
FItemInfo.FileName := AnsiName;
|
||||
{$ENDIF}
|
||||
{$IFDEF UNIX}
|
||||
HostOS := hosUnix;
|
||||
FItemInfo.FileName := Value;
|
||||
FItemInfo.IsUTF8 := SystemEncodingUtf8;
|
||||
{$ENDIF}
|
||||
|
|
@ -1772,6 +1800,38 @@ begin
|
|||
FItemInfo.UncompressedSize:= Min(Value, $FFFFFFFF);
|
||||
UpdateZip64ExtraHeader;
|
||||
end;
|
||||
|
||||
procedure TAbZipItem.SetLastModTimeAsDateTime(const Value: TDateTime);
|
||||
var
|
||||
DataSize: Word;
|
||||
ANtfsTime: PNtfsTimeField;
|
||||
AInfoZipTime: PInfoZipTimeField;
|
||||
begin
|
||||
inherited SetLastModTimeAsDateTime(Value);
|
||||
|
||||
// Update time extra fields
|
||||
if FItemInfo.ExtraField.Get(Ab_NTFSSubfieldID, ANtfsTime, DataSize) then
|
||||
begin
|
||||
if (DataSize = SizeOf(TNtfsTimeField)) then
|
||||
begin
|
||||
if ANtfsTime^.Tag = $0001 then
|
||||
begin
|
||||
ANtfsTime^.Mtime := DateTimeToWinFileTime(Value);
|
||||
end;
|
||||
end;
|
||||
end
|
||||
else if FItemInfo.ExtraField.Get(Ab_InfoZipTimestampSubfieldID, AInfoZipTime, DataSize) then
|
||||
begin
|
||||
if (DataSize = SizeOf(TInfoZipTimeField)) then
|
||||
begin
|
||||
if (AInfoZipTime^.Tag and $01 <> 0) then
|
||||
begin
|
||||
AInfoZipTime^.Mtime := UInt32(DateTimeToUnixFileTime(Value));
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
{ -------------------------------------------------------------------------- }
|
||||
procedure TAbZipItem.SetVersionMadeBy( Value : Word );
|
||||
begin
|
||||
|
|
@ -2453,7 +2513,3 @@ begin
|
|||
end;
|
||||
|
||||
end.
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -14,20 +14,33 @@ type
|
|||
TDeflateStream = class(TCompressionStream)
|
||||
private
|
||||
FSize: Int64;
|
||||
FHash: LongInt;
|
||||
FHash: UInt32;
|
||||
FOnProgressStep: TAbProgressStep;
|
||||
public
|
||||
constructor Create(ALevel: Integer; ADest: TStream);
|
||||
function Write(const Buffer; Count: Longint): Longint; override;
|
||||
end;
|
||||
|
||||
{ TInflateStream }
|
||||
|
||||
TInflateStream = class(TDecompressionStream)
|
||||
private
|
||||
FHash: UInt32;
|
||||
public
|
||||
function CopyInto(ATarget: TStream; ACount: Int64): Int64;
|
||||
function Read(var Buffer; Count: LongInt): LongInt; override;
|
||||
end;
|
||||
|
||||
function Deflate(aSource : TStream; aDest : TStream;
|
||||
aHelper : TAbDeflateHelper) : longint;
|
||||
|
||||
function Inflate(aSource : TStream; aDest : TStream;
|
||||
aHelper : TAbDeflateHelper) : longint;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
ZDeflate, ZBase;
|
||||
Math, ZDeflate, ZBase, DCcrc32;
|
||||
|
||||
function Deflate(aSource : TStream; aDest : TStream;
|
||||
aHelper : TAbDeflateHelper): longint;
|
||||
|
|
@ -58,12 +71,72 @@ begin
|
|||
aHelper.NormalSize:= ADeflateStream.raw_written;
|
||||
aHelper.CompressedSize:= ADeflateStream.compressed_written;
|
||||
{ provide encryption check value }
|
||||
Result := not ADeflateStream.FHash;
|
||||
Result := LongInt(ADeflateStream.FHash);
|
||||
finally
|
||||
ADeflateStream.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
function Inflate(aSource: TStream; aDest: TStream;
|
||||
aHelper: TAbDeflateHelper): longint;
|
||||
var
|
||||
ACount: Int64;
|
||||
AInflateStream: TInflateStream;
|
||||
begin
|
||||
AInflateStream:= TInflateStream.Create(aSource, True);
|
||||
try
|
||||
if aHelper.PartialSize > 0 then
|
||||
begin
|
||||
ACount:= aHelper.PartialSize;
|
||||
aHelper.NormalSize:= AInflateStream.CopyInto(aDest, ACount);
|
||||
end
|
||||
else begin
|
||||
ACount:= aHelper.NormalSize;
|
||||
aHelper.NormalSize:= aDest.CopyFrom(AInflateStream, ACount);
|
||||
end;
|
||||
aHelper.CompressedSize:= AInflateStream.compressed_read;
|
||||
Result:= LongInt(AInflateStream.FHash);
|
||||
finally
|
||||
AInflateStream.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
{ TInflateStream }
|
||||
|
||||
function TInflateStream.CopyInto(ATarget: TStream; ACount: Int64): Int64;
|
||||
var
|
||||
ARead, ASize: Integer;
|
||||
ABuffer: array of Byte;
|
||||
begin
|
||||
Result:= 0;
|
||||
ASize:= Min(ACount, $8000);
|
||||
SetLength(ABuffer, ASize);
|
||||
repeat
|
||||
if ACount < ASize then
|
||||
begin
|
||||
ASize:= ACount;
|
||||
end;
|
||||
ARead:= Read(ABuffer[0], ASize);
|
||||
if ARead > 0 then
|
||||
begin
|
||||
Dec(ACount, ARead);
|
||||
Inc(Result, ARead);
|
||||
ATarget.WriteBuffer(ABuffer[0], ARead);
|
||||
end;
|
||||
until (ARead < ASize) or (ACount = 0);
|
||||
end;
|
||||
|
||||
function TInflateStream.Read(var Buffer; Count: LongInt): LongInt;
|
||||
begin
|
||||
Result:= inherited Read(Buffer, Count);
|
||||
FHash:= crc32_16bytes(@Buffer, Result, FHash);
|
||||
if (Result < Count) and (Fstream.avail_in > 0) then
|
||||
begin
|
||||
FSource.Seek(-Fstream.avail_in, soCurrent);
|
||||
Fstream.avail_in:= 0;
|
||||
end;
|
||||
end;
|
||||
|
||||
{ TDeflateStream }
|
||||
|
||||
constructor TDeflateStream.Create(ALevel: Integer;
|
||||
|
|
@ -73,7 +146,6 @@ const
|
|||
var
|
||||
AError: Integer;
|
||||
begin
|
||||
FHash := -1;
|
||||
TOwnerStream(Self).Create(ADest);
|
||||
|
||||
Fbuffer:= GetMem(BUF_SIZE);
|
||||
|
|
@ -88,7 +160,7 @@ end;
|
|||
|
||||
function TDeflateStream.Write(const Buffer; Count: Longint): Longint;
|
||||
begin
|
||||
AbUpdateCRCBuffer(FHash, (@Buffer)^, Count);
|
||||
FHash:= crc32_16bytes(@Buffer, Count, FHash);
|
||||
Result:= inherited Write(Buffer, Count);
|
||||
if Assigned(FOnProgressStep) then
|
||||
begin
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
(* ***** BEGIN LICENSE BLOCK *****
|
||||
* Simple interface to zstd library
|
||||
*
|
||||
* Copyright (C) 2019 Alexander Koblov (alexx2000@mail.ru)
|
||||
* Copyright (C) 2019-2023 Alexander Koblov (alexx2000@mail.ru)
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining
|
||||
* a copy of this software and associated documentation files (the
|
||||
|
|
@ -319,20 +319,24 @@ var
|
|||
AInput: ZSTD_inBuffer;
|
||||
begin
|
||||
try
|
||||
FillChar({%H-}AInput, SizeOf(ZSTD_inBuffer), 0);
|
||||
if Assigned(FContext) then
|
||||
try
|
||||
FillChar({%H-}AInput, SizeOf(ZSTD_inBuffer), 0);
|
||||
|
||||
repeat
|
||||
FBufferOut.pos:= 0;
|
||||
repeat
|
||||
FBufferOut.pos:= 0;
|
||||
|
||||
ARemaining:= ZSTD_Check(ZSTD_compressStream2(FContext, @FBufferOut, @AInput, ZSTD_e_end));
|
||||
ARemaining:= ZSTD_Check(ZSTD_compressStream2(FContext, @FBufferOut, @AInput, ZSTD_e_end));
|
||||
|
||||
if (FBufferOut.pos > 0) then begin
|
||||
FStream.WriteBuffer(FBufferOut.dst^, FBufferOut.pos);
|
||||
end;
|
||||
until (ARemaining = 0);
|
||||
if (FBufferOut.pos > 0) then begin
|
||||
FStream.WriteBuffer(FBufferOut.dst^, FBufferOut.pos);
|
||||
end;
|
||||
until (ARemaining = 0);
|
||||
finally
|
||||
FreeMem(FBufferOut.dst);
|
||||
ZSTD_freeCCtx(FContext);
|
||||
end;
|
||||
finally
|
||||
FreeMem(FBufferOut.dst);
|
||||
ZSTD_freeCCtx(FContext);
|
||||
inherited Destroy;
|
||||
end;
|
||||
end;
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue