Skip to content

Commit eefb3e9

Browse files
committed
sync with libssh2.h
1 parent b6dfac7 commit eefb3e9

File tree

8 files changed

+2165
-742
lines changed

8 files changed

+2165
-742
lines changed

comp/uMySFTPClient.pas

Lines changed: 211 additions & 83 deletions
Large diffs are not rendered by default.

demo/Unit3.dfm

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,24 @@ object Form3: TForm3
235235
ParentFont = False
236236
PasswordChar = #8226
237237
TabOrder = 11
238+
Text = ''
239+
end
240+
object edPath: TLabeledEdit
241+
Left = 223
242+
Top = 100
243+
Width = 137
244+
Height = 21
245+
EditLabel.Width = 26
246+
EditLabel.Height = 13
247+
EditLabel.Caption = 'Path:'
248+
Font.Charset = DEFAULT_CHARSET
249+
Font.Color = clWindowText
250+
Font.Height = -11
251+
Font.Name = 'Tahoma'
252+
Font.Style = [fsBold]
253+
ParentFont = False
254+
TabOrder = 12
255+
Text = ''
238256
end
239257
object cbKeepAlive: TCheckBox
240258
Left = 119
@@ -244,7 +262,7 @@ object Form3: TForm3
244262
Caption = 'Keepalive'
245263
Checked = True
246264
State = cbChecked
247-
TabOrder = 12
265+
TabOrder = 13
248266
end
249267
object btnDelete: TButton
250268
Left = 170
@@ -254,7 +272,7 @@ object Form3: TForm3
254272
Anchors = [akLeft, akBottom]
255273
Caption = 'Delete'
256274
Enabled = False
257-
TabOrder = 13
275+
TabOrder = 14
258276
OnClick = btnDeleteClick
259277
end
260278
object btnRename: TButton
@@ -265,7 +283,7 @@ object Form3: TForm3
265283
Anchors = [akLeft, akBottom]
266284
Caption = 'Rename'
267285
Enabled = False
268-
TabOrder = 14
286+
TabOrder = 15
269287
OnClick = btnRenameClick
270288
end
271289
object btnMkSymlink: TButton
@@ -276,7 +294,7 @@ object Form3: TForm3
276294
Anchors = [akLeft, akBottom]
277295
Caption = 'Make symlink'
278296
Enabled = False
279-
TabOrder = 15
297+
TabOrder = 16
280298
OnClick = btnMkSymlinkClick
281299
end
282300
object btnResSymlink: TButton
@@ -287,7 +305,7 @@ object Form3: TForm3
287305
Anchors = [akLeft, akBottom]
288306
Caption = 'Resolve symlink'
289307
Enabled = False
290-
TabOrder = 16
308+
TabOrder = 17
291309
OnClick = btnResSymlinkClick
292310
end
293311
object btnMkDir: TButton
@@ -298,7 +316,7 @@ object Form3: TForm3
298316
Anchors = [akLeft, akBottom]
299317
Caption = 'Make directory'
300318
Enabled = False
301-
TabOrder = 17
319+
TabOrder = 18
302320
OnClick = btnMkDirClick
303321
end
304322
object StatusBar1: TStatusBar
@@ -308,11 +326,13 @@ object Form3: TForm3
308326
Height = 19
309327
Panels = <
310328
item
311-
Width = 600
329+
Width = 250
312330
end
313331
item
314-
Width = 80
332+
Width = 250
315333
end>
334+
ParentShowHint = False
335+
ShowHint = True
316336
end
317337
object edPkey: TLabeledEdit
318338
Left = 366

demo/Unit3.pas

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ TForm3 = class(TForm)
3030
btnDisconnect: TButton;
3131
edUser: TLabeledEdit;
3232
edPass: TLabeledEdit;
33+
edPath: TLabeledEdit;
3334
cbKeepAlive: TCheckBox;
3435
btnDelete: TButton;
3536
btnRename: TButton;
@@ -43,7 +44,9 @@ TForm3 = class(TForm)
4344
btnSelPkey: TButton;
4445
btnSelPrivkey: TButton;
4546
btnSetPerms: TButton;
47+
4648
procedure FormCreate(Sender: TObject);
49+
4750
procedure btnConnectClick(Sender: TObject);
4851
procedure ListView1DblClick(Sender: TObject);
4952
procedure btnDisconnectClick(Sender: TObject);
@@ -120,10 +123,10 @@ procedure TForm3.btnConnectClick(Sender: TObject);
120123
SFTP.PrivateKeyPath := edPrivkey.Text;
121124
SFTP.PrivKeyPassPhrase := edPrivkpass.Text;
122125
try
123-
SFTP.Connect;
126+
SFTP.Connect(edPath.Text);
124127
if not SFTP.Connected then
125128
Exit;
126-
StatusBar1.Panels[0].Text := SFTP.GetSessionMethodsStr;
129+
StatusBar1.Panels[0].Text := #32 + SFTP.GetSessionMethodsStr;
127130
SFTP.List;
128131
FillList;
129132
btnConnect.Enabled := False;
@@ -248,7 +251,9 @@ procedure TForm3.btnDeleteClick(Sender: TObject);
248251
if ListView1.SelCount = 1 then
249252
if ListView1.Selected.Caption <> '..' then
250253
begin
251-
if MessageDlg('Are you sure?', mtWarning, mbYesNo, 0) = mrNo then
254+
//-if MessageDlg('Are you sure?', mtWarning, mbYesNo, 0) = mrNo then
255+
//- Exit;
256+
if Application.MessageBox('Are you sure?', '', MB_OKCANCEL + MB_ICONQUESTION + MB_DEFBUTTON2 + MB_TOPMOST) <> MB_OK then
252257
Exit;
253258
I := ListView1.Selected.Index;
254259
if ListView1.Items[0].Caption = '..' then
@@ -282,7 +287,7 @@ procedure TForm3.btnRenameClick(Sender: TObject);
282287
NewName := SFTP.DirectoryItems[I].FileName;
283288
if InputQuery('Rename', 'Enter new name', NewName) then
284289
try
285-
SFTP.Rename(SFTP.DirectoryItems[I].FileName, SFTP.CurrentDirectory + '/' + NewName);
290+
SFTP.Rename(SFTP.CurrentDirectory + '/' + SFTP.DirectoryItems[I].FileName, SFTP.CurrentDirectory + '/' + NewName);
286291
SFTP.List;
287292
FillList;
288293
except
@@ -444,15 +449,15 @@ procedure TForm3.FormCreate(Sender: TObject);
444449
//
445450
{$IFDEF CPUX64}
446451
Caption := Caption + ' (x64)';
447-
{$ENDIF}
452+
{$ENDIF CPUX64}
448453
//
449454
SFTP := TSFTPClient.Create(Self);
450455
SFTP.DebugMode := True; // ouput debug info over Windows.OutputDebugString
451456
SFTP.OnTransferProgress := OnProgress;
452457
SFTP.OnAuthFailed := OnAuthFailed;
453458
SFTP.OnCantChangeStartDir := OnCantChangeStartDir;
454459
SFTP.OnKeybdInteractive := OnKeybdInteractive;
455-
StatusBar1.Panels[1].Text := 'libssh2 ver: ' + SFTP.LibraryVersion;
460+
StatusBar1.Panels[1].Text := #32 + 'libssh2 ver: ' + SFTP.LibraryVersion + '; ' + SFTP.Version;
456461
end;
457462

458463
procedure TForm3.ListView1DblClick(Sender: TObject);
@@ -511,12 +516,16 @@ procedure TForm3.ListView1DblClick(Sender: TObject);
511516

512517
procedure TForm3.OnAuthFailed(ASender: TObject; var Continue: Boolean);
513518
begin
514-
Continue := MessageDlg('Auth failed. Try again?', mtConfirmation, mbYesNo, 0) = mrYes;
519+
//-Continue := MessageDlg('Auth failed. Try again?', mtConfirmation, mbYesNo, 0) = mrYes;
520+
Continue := Application.MessageBox('Auth failed. Try again?', '',
521+
MB_OKCANCEL + MB_ICONQUESTION + MB_DEFBUTTON2 + MB_TOPMOST) = MB_OK;
515522
end;
516523

517524
procedure TForm3.OnCantChangeStartDir(ASender: TObject; var Continue: Boolean);
518525
begin
519-
Continue := MessageDlg('Could not change to start dir. Continue?', mtConfirmation, mbYesNo, 0) = mrYes;
526+
//-Continue := MessageDlg('Could not change to start dir. Continue?', mtConfirmation, mbYesNo, 0) = mrYes;
527+
Continue := Application.MessageBox('Could not change to start dir. Continue', '',
528+
MB_OKCANCEL + MB_ICONQUESTION + MB_DEFBUTTON2 + MB_TOPMOST) = MB_OK;
520529
end;
521530

522531
procedure TForm3.OnKeybdInteractive(ASender: TObject; var Password: String);

demo/app_linker.inc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,9 @@ const
3737
{$WEAKLINKRTTI ON}
3838
{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}
3939
{$ENDIF}
40+
41+
{$IF CompilerVersion >= 35.00} // D28 Up (RAD DX11.x Alexandria)
42+
{$SETPEOSVERSION 5.0} // optional
43+
{$SETPESUBSYSVERSION 5.0} // optional
44+
{$IFEND}
4045
{$ENDIF}

libssh2.inc

Lines changed: 19 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
{ libssh2.inc } // version: 2023.0809.0400
2-
1+
{ libssh2.inc } //# version: 2024.0114.1600
2+
//#....
33
{$IFDEF FPC}
4-
{$ALIGN 8} // For packed record
4+
{$ALIGN 8} //# For packed record
55
{$MINENUMSIZE 1}
66
{$ELSE}
77
{$IFDEF UNICODE}
8-
{$ALIGN 8} // For packed record
8+
{$ALIGN 8} //# For packed record
99
{$MINENUMSIZE 1}
1010

11-
{$IF CompilerVersion >= 25.00}{XE4Up}
11+
{$IF CompilerVersion >= 25.00} // XE4_UP
1212
{$ZEROBASEDSTRINGS OFF}
1313

1414
{$IF CompilerVersion >= 33.00} // 10.3 Rio
@@ -23,12 +23,13 @@
2323
{$ENDIF}
2424
{$ENDIF}
2525

26+
{$undef allow_inline}
2627
{$undef allow_delayed}
2728
{$undef allow_hvdll}
2829

2930
{$IFDEF WIN32}
30-
{$IF CompilerVersion < 21.00} // ... external ?dll_name name '?function_name' delayed;
31-
{$define allow_hvdll} { optional } // alternative for: external ?dll_name name '?function_name' delayed;
31+
{$IF CompilerVersion < 21.00}
32+
{$define allow_hvdll} { optional } //# alternative for: external '%dll_name%' name '%function_name%' delayed;
3233
{$ELSE}
3334
{$IFNDEF FPC}
3435
{$define allow_delayed} { optional }
@@ -42,91 +43,20 @@
4243
{$ELSE}
4344
{$IFDEF WIN64}
4445
{$IFNDEF FPC}
45-
{$define allow_delayed} { optional } // TODO: Crash for x86 dll
46+
{$define allow_delayed} { optional } //#TODO: Crash for x86 dll
4647
{$ifndef allow_delayed}
47-
//TODO: {.$define allow_hvdll} { optional }
48+
{-define allow_hvdll} { optional } //#TODO:...
4849
{$endif}
4950
{$ENDIF}
5051
{$ENDIF WIN64}
5152
{$ENDIF WIN32}
5253

53-
(*
54-
{$A8,B-,C+,D+,E-,F-,G+,H+,I+,J-,K-,L+,M-,N-,O+,P+,Q-,R-,S-,T-,U-,V+,W-,X+,Y+,Z1}
55-
//{$MINSTACKSIZE $00004000}
56-
//{$MAXSTACKSIZE $00100000}
57-
//{$IMAGEBASE $00400000}
58-
//{$APPTYPE GUI}
59-
{$WARN SYMBOL_DEPRECATED ON}
60-
{$WARN SYMBOL_LIBRARY ON}
61-
{$WARN SYMBOL_PLATFORM ON}
62-
{$WARN SYMBOL_EXPERIMENTAL ON}
63-
{$WARN UNIT_LIBRARY ON}
64-
{$WARN UNIT_PLATFORM ON}
65-
{$WARN UNIT_DEPRECATED ON}
66-
{$WARN UNIT_EXPERIMENTAL ON}
67-
{$WARN HRESULT_COMPAT ON}
68-
{$WARN HIDING_MEMBER ON}
69-
{$WARN HIDDEN_VIRTUAL ON}
70-
{$WARN GARBAGE ON}
71-
{$WARN BOUNDS_ERROR ON}
72-
{$WARN ZERO_NIL_COMPAT ON}
73-
{$WARN STRING_CONST_TRUNCED ON}
74-
{$WARN FOR_LOOP_VAR_VARPAR ON}
75-
{$WARN TYPED_CONST_VARPAR ON}
76-
{$WARN ASG_TO_TYPED_CONST ON}
77-
{$WARN CASE_LABEL_RANGE ON}
78-
{$WARN FOR_VARIABLE ON}
79-
{$WARN CONSTRUCTING_ABSTRACT ON}
80-
{$WARN COMPARISON_FALSE ON}
81-
{$WARN COMPARISON_TRUE ON}
82-
{$WARN COMPARING_SIGNED_UNSIGNED ON}
83-
{$WARN COMBINING_SIGNED_UNSIGNED ON}
84-
{$WARN UNSUPPORTED_CONSTRUCT ON}
85-
{$WARN FILE_OPEN ON}
86-
{$WARN FILE_OPEN_UNITSRC ON}
87-
{$WARN BAD_GLOBAL_SYMBOL ON}
88-
{$WARN DUPLICATE_CTOR_DTOR ON}
89-
{$WARN INVALID_DIRECTIVE ON}
90-
{$WARN PACKAGE_NO_LINK ON}
91-
{$WARN PACKAGED_THREADVAR ON}
92-
{$WARN IMPLICIT_IMPORT ON}
93-
{$WARN HPPEMIT_IGNORED ON}
94-
{$WARN NO_RETVAL ON}
95-
{$WARN USE_BEFORE_DEF ON}
96-
{$WARN FOR_LOOP_VAR_UNDEF ON}
97-
{$WARN UNIT_NAME_MISMATCH ON}
98-
{$WARN NO_CFG_FILE_FOUND ON}
99-
{$WARN IMPLICIT_VARIANTS ON}
100-
{$WARN UNICODE_TO_LOCALE ON}
101-
{$WARN LOCALE_TO_UNICODE ON}
102-
{$WARN IMAGEBASE_MULTIPLE ON}
103-
{$WARN SUSPICIOUS_TYPECAST ON}
104-
{$WARN PRIVATE_PROPACCESSOR ON}
105-
{$WARN UNSAFE_TYPE OFF}
106-
{$WARN UNSAFE_CODE OFF}
107-
{$WARN UNSAFE_CAST OFF}
108-
{$WARN OPTION_TRUNCATED ON}
109-
{$WARN WIDECHAR_REDUCED ON}
110-
{$WARN DUPLICATES_IGNORED ON}
111-
{$WARN UNIT_INIT_SEQ ON}
112-
{$WARN LOCAL_PINVOKE ON}
113-
{$WARN MESSAGE_DIRECTIVE ON}
114-
{$WARN TYPEINFO_IMPLICITLY_ADDED ON}
115-
//{$WARN RLINK_WARNING ON}
116-
//{$WARN IMPLICIT_STRING_CAST ON}
117-
//{$WARN IMPLICIT_STRING_CAST_LOSS ON}
118-
//{$WARN EXPLICIT_STRING_CAST OFF}
119-
//{$WARN EXPLICIT_STRING_CAST_LOSS OFF}
120-
//{$WARN CVT_WCHAR_TO_ACHAR ON}
121-
//{$WARN CVT_NARROWING_STRING_LOST ON}
122-
//{$WARN CVT_ACHAR_TO_WCHAR ON}
123-
//{$WARN CVT_WIDENING_STRING_LOST ON}
124-
{$WARN XML_WHITESPACE_NOT_ALLOWED ON}
125-
{$WARN XML_UNKNOWN_ENTITY ON}
126-
{$WARN XML_INVALID_NAME_START ON}
127-
{$WARN XML_INVALID_NAME ON}
128-
{$WARN XML_EXPECTED_CHARACTER ON}
129-
{$WARN XML_CREF_NO_RESOLVE ON}
130-
{$WARN XML_NO_PARM ON}
131-
{$WARN XML_NO_MATCHING_PARM ON}
132-
//*)
54+
{$IFDEF FPC}
55+
{$define allow_inline} { optional }
56+
{$ELSE}
57+
{$IFDEF CONDITIONALEXPRESSIONS}
58+
{$IF CompilerVersion >= 25.00}
59+
{$define allow_inline} { optional }
60+
{$IFEND}
61+
{$ENDIF}
62+
{$ENDIF}

0 commit comments

Comments
 (0)