Compare commits
22 Commits
RELEASE.0.
...
RELEASE.0.
Author | SHA1 | Date | |
---|---|---|---|
![]() |
dbbd9eafc6 | ||
![]() |
c92465930d | ||
![]() |
34d5c9a4b1 | ||
![]() |
e8bb993437 | ||
![]() |
030b670e2a | ||
![]() |
371a795443 | ||
![]() |
2d773f9322 | ||
![]() |
80f6c7c6d1 | ||
![]() |
46f26d3d0e | ||
![]() |
5d91d286f1 | ||
![]() |
5a854cfb26 | ||
![]() |
e905b206ed | ||
![]() |
fe7a6f967d | ||
![]() |
5879a0245b | ||
![]() |
d90d8bdae7 | ||
![]() |
f216b36328 | ||
![]() |
c4630d1ffb | ||
![]() |
17173aab0e | ||
![]() |
f8d4de78e9 | ||
![]() |
e32ff531a3 | ||
![]() |
a227554c26 | ||
![]() |
9f27d176f8 |
7
AUTHORS
7
AUTHORS
@@ -4,8 +4,13 @@
|
|||||||
|
|
||||||
* Simon Josefsson: libgcrypt support
|
* Simon Josefsson: libgcrypt support
|
||||||
|
|
||||||
* Daniel Stenberg: Nonblocking fixes, Build Improvements, and Daily snapshot artist
|
* Daniel Stenberg: Nonblocking fixes, Build Improvements, and Daily snapshot
|
||||||
|
artist
|
||||||
|
|
||||||
* Mikhail Gusarov: Keyboard Interactive Authentication
|
* Mikhail Gusarov: Keyboard Interactive Authentication
|
||||||
|
|
||||||
* Wez Furlong & Edink Kadribasic: Windows Port
|
* Wez Furlong & Edink Kadribasic: Windows Port
|
||||||
|
|
||||||
|
* Dan Fandrich: bug fixes, cleanups
|
||||||
|
|
||||||
|
* Guenter Knauf: win32 work and more
|
||||||
|
@@ -11,7 +11,12 @@ NETWAREFILES = nw/keepscreen.c \
|
|||||||
nw/nwlib.c \
|
nw/nwlib.c \
|
||||||
nw/test/Makefile.netware
|
nw/test/Makefile.netware
|
||||||
|
|
||||||
EXTRA_DIST = win32 buildconf $(NETWAREFILES) get_ver.awk HACKING maketgz NMakefile
|
WIN32FILES = win32/libssh2_dll.dsp win32/libssh2.dsw win32/Makefile.win32 \
|
||||||
|
win32/config.mk win32/Makefile win32/test/Makefile.win32 win32/libssh2_lib.dsp \
|
||||||
|
win32/libssh2_config.h win32/tests.dsp win32/rules.mk
|
||||||
|
|
||||||
|
EXTRA_DIST = $(WIN32FILES) buildconf $(NETWAREFILES) get_ver.awk HACKING \
|
||||||
|
maketgz NMakefile
|
||||||
|
|
||||||
ACLOCAL_AMFLAGS = -I m4
|
ACLOCAL_AMFLAGS = -I m4
|
||||||
|
|
||||||
|
105
NEWS
105
NEWS
@@ -1,5 +1,26 @@
|
|||||||
Version 0.17
|
Version 0.18
|
||||||
------------
|
------------
|
||||||
|
|
||||||
|
- Various changes that improve non-blocking operations and prevent stalls.
|
||||||
|
Especially noticable on Windows since libssh2 just didn't work properly
|
||||||
|
non-blocking on Windows before.
|
||||||
|
|
||||||
|
- Peter O'Gorman reported how a SCP transfer would hang for him, and it was
|
||||||
|
fairly easy reproducable. One bug was in the transport layer, ignoring to
|
||||||
|
read more data while there was data left even though it couldn't decrypt the
|
||||||
|
data that was left due to it being too little... The other bug was in the
|
||||||
|
channel layer, where the libssh2_channel_receive_window_adjust() function
|
||||||
|
missed to set the state variables at times and thus this function would
|
||||||
|
misbehave on repeated invokes.
|
||||||
|
|
||||||
|
- Changed the signature of libssh2_channel_setenv_ex to add const to the
|
||||||
|
"varname" parameter (Dan Fandrich)
|
||||||
|
|
||||||
|
- Satish Mittal and David J Sullivan fixed an infinit recv() loop in
|
||||||
|
libssh2_banner_receive()
|
||||||
|
|
||||||
|
Version 0.17 (August 6 2007)
|
||||||
|
----------------------------
|
||||||
Changes since previous version include:
|
Changes since previous version include:
|
||||||
|
|
||||||
o Re-indented the source code with this GNU indent setup:
|
o Re-indented the source code with this GNU indent setup:
|
||||||
@@ -18,8 +39,8 @@ Changes since previous version include:
|
|||||||
--space-after-while
|
--space-after-while
|
||||||
--no-space-after-function-call-names
|
--no-space-after-function-call-names
|
||||||
|
|
||||||
Version 0.16
|
Version 0.16 (August 6 2007)
|
||||||
------------
|
----------------------------
|
||||||
Changes since previous version include:
|
Changes since previous version include:
|
||||||
|
|
||||||
o CRLF stripping fix for PEM reading
|
o CRLF stripping fix for PEM reading
|
||||||
@@ -44,8 +65,8 @@ This release would not have been possible without these friendly contributors:
|
|||||||
Of course we would have nothing without the great work by Sara Golemon that
|
Of course we would have nothing without the great work by Sara Golemon that
|
||||||
we're extending and building upon.
|
we're extending and building upon.
|
||||||
|
|
||||||
Version 0.15
|
Version 0.15 (June 15 2007)
|
||||||
------------
|
---------------------------
|
||||||
Added libssh2_sftp_readdir_ex() and updated LIBSSH2_APINO to
|
Added libssh2_sftp_readdir_ex() and updated LIBSSH2_APINO to
|
||||||
200706151200 (James Housley)
|
200706151200 (James Housley)
|
||||||
|
|
||||||
@@ -118,7 +139,8 @@ Version 0.14
|
|||||||
|
|
||||||
Allow socket_fd == 0 in libssh2_session_startup(). (puudeli)
|
Allow socket_fd == 0 in libssh2_session_startup(). (puudeli)
|
||||||
|
|
||||||
Swap ordering of packet_add/packet-inspection to avoid inspect after free. (Selcuk)
|
Swap ordering of packet_add/packet-inspection to avoid inspect after
|
||||||
|
free. (Selcuk)
|
||||||
|
|
||||||
Swap KEX_INIT ordering, send our KEX_INIT first.
|
Swap KEX_INIT ordering, send our KEX_INIT first.
|
||||||
|
|
||||||
@@ -129,9 +151,11 @@ Version 0.14
|
|||||||
Version 0.13
|
Version 0.13
|
||||||
------------
|
------------
|
||||||
|
|
||||||
Fixed channel not being marked closed when CHANNEL_CLOSE package cannot be sent. (David Robins)
|
Fixed channel not being marked closed when CHANNEL_CLOSE package cannot be
|
||||||
|
sent. (David Robins)
|
||||||
|
|
||||||
Fixed payload packet allocation bug when invalid packet length received. (David Robins)
|
Fixed payload packet allocation bug when invalid packet length
|
||||||
|
received. (David Robins)
|
||||||
|
|
||||||
Fixed `make install' target for MacOSX.
|
Fixed `make install' target for MacOSX.
|
||||||
|
|
||||||
@@ -148,10 +172,12 @@ Version 0.12
|
|||||||
(Thanks Simon Hart)
|
(Thanks Simon Hart)
|
||||||
|
|
||||||
Fix generation of 'e' portion of Diffie-Hellman keyset.
|
Fix generation of 'e' portion of Diffie-Hellman keyset.
|
||||||
Use appropriate order for BN_rand() rather than fixed group1-specific value.
|
|
||||||
|
Use appropriate order for BN_rand() rather than fixed group1-specific value.
|
||||||
|
|
||||||
Re-fixed libssh2_sftp_rename_ex()
|
Re-fixed libssh2_sftp_rename_ex()
|
||||||
Transport had right packet_len, but sftp layer still had extra 4 bytes.
|
|
||||||
|
Transport had right packet_len, but sftp layer still had extra 4 bytes.
|
||||||
|
|
||||||
Fixed build with newer OpenSSL headers.
|
Fixed build with newer OpenSSL headers.
|
||||||
|
|
||||||
@@ -166,42 +192,52 @@ Version 0.11
|
|||||||
|
|
||||||
Added libssh2_userauth_keyboard_interactive_ex() -- Mikhail
|
Added libssh2_userauth_keyboard_interactive_ex() -- Mikhail
|
||||||
|
|
||||||
Added libssh2_channel_receive_window_adjust() to be able to increase the size of the receive window.
|
Added libssh2_channel_receive_window_adjust() to be able to increase the
|
||||||
|
size of the receive window.
|
||||||
|
|
||||||
Added queueing for small window_adjust packets to avoid unnecessary packet conversation.
|
Added queueing for small window_adjust packets to avoid unnecessary packet
|
||||||
|
conversation.
|
||||||
|
|
||||||
Fixed libssh2_sftp_rename_ex() to only send flags parameter if version >= 5 negotiated
|
Fixed libssh2_sftp_rename_ex() to only send flags parameter if version >= 5
|
||||||
(not currently possible, but will be and might as well keep the API consistent).
|
negotiated (not currently possible, but will be and might as well keep the
|
||||||
|
API consistent).
|
||||||
|
|
||||||
Version 0.10
|
Version 0.10
|
||||||
------------
|
------------
|
||||||
|
|
||||||
Added developer debugging hooks. See --enable-debug-* options to ./configure
|
Added developer debugging hooks. See --enable-debug-* options to ./configure
|
||||||
|
|
||||||
Ignore extended data in the SFTP layer. With no other mechanism to deal with that data it'd just fill up and get stuck.
|
Ignore extended data in the SFTP layer. With no other mechanism to deal
|
||||||
|
with that data it'd just fill up and get stuck.
|
||||||
|
|
||||||
(Re)Fixed channel_write() to provide an opportunity for window space to become available again.
|
(Re)Fixed channel_write() to provide an opportunity for window space to
|
||||||
|
become available again.
|
||||||
|
|
||||||
(Re)Fixed SFTP INIT to send the correct SFTP packet length.
|
(Re)Fixed SFTP INIT to send the correct SFTP packet length.
|
||||||
|
|
||||||
Fixed segfault when client and host can't agree on a hostkey/crypt/mac/comp method. (Thanks puudeli)
|
Fixed segfault when client and host can't agree on a hostkey/crypt/mac/comp
|
||||||
|
method. (Thanks puudeli)
|
||||||
|
|
||||||
Fixed major issue with sftp packet buffering mechanism. Using wrong blocking semantics. (No puudeli, YOU the man)
|
Fixed major issue with sftp packet buffering mechanism. Using wrong
|
||||||
|
blocking semantics. (No puudeli, YOU the man)
|
||||||
|
|
||||||
Reduced busy-looping of libssh2_sftp_packet_requirev.
|
Reduced busy-looping of libssh2_sftp_packet_requirev.
|
||||||
|
|
||||||
Version 0.9
|
Version 0.9
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
Changed blocking_read to only block as much as necessary and not an arbitrary length of time. (Thanks Felix)
|
Changed blocking_read to only block as much as necessary and not an
|
||||||
|
arbitrary length of time. (Thanks Felix)
|
||||||
|
|
||||||
Fixed SFTP INIT/VERSION to exclude request_id and send correct maximum version number.
|
Fixed SFTP INIT/VERSION to exclude request_id and send correct maximum
|
||||||
|
version number.
|
||||||
|
|
||||||
Fixed SFTP to be properly BC with version 1 and 2 servers.
|
Fixed SFTP to be properly BC with version 1 and 2 servers.
|
||||||
|
|
||||||
Fixed libssh2_poll() to recognized closed sessions/channels.
|
Fixed libssh2_poll() to recognized closed sessions/channels.
|
||||||
|
|
||||||
Fixed libssh2_channel_write_ex() to fully block when set to blocking mode. Return actual bytes written as well. (Thanks deadem)
|
Fixed libssh2_channel_write_ex() to fully block when set to blocking mode.
|
||||||
|
Return actual bytes written as well. (Thanks deadem)
|
||||||
|
|
||||||
Added tests for -lm and -lsocket and add them when necessary.
|
Added tests for -lm and -lsocket and add them when necessary.
|
||||||
|
|
||||||
@@ -215,9 +251,11 @@ Version 0.8
|
|||||||
|
|
||||||
Fix compatability with older versions of OpenSSL
|
Fix compatability with older versions of OpenSSL
|
||||||
|
|
||||||
Swapped order of none,zlib compression modes to prefer no compression by default.
|
Swapped order of none,zlib compression modes to prefer no compression by
|
||||||
|
default.
|
||||||
|
|
||||||
Added sys/uio.h for platforms (FBSD) which need it in order to define struct iovec.
|
Added sys/uio.h for platforms (FBSD) which need it in order to define struct
|
||||||
|
iovec.
|
||||||
|
|
||||||
Added libssh2_poll() to check status of sockets/channels/listeners.
|
Added libssh2_poll() to check status of sockets/channels/listeners.
|
||||||
|
|
||||||
@@ -240,15 +278,18 @@ Version 0.7
|
|||||||
Version 0.6
|
Version 0.6
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
Added LIBSSH2_FLAG_SIGPIPE to enable/disable SIGPIPE generated by send()/recv() calls. Default off.
|
Added LIBSSH2_FLAG_SIGPIPE to enable/disable SIGPIPE generated by
|
||||||
|
send()/recv() calls. Default off.
|
||||||
|
|
||||||
Added libssh2_session_flag() to set optional session flags.
|
Added libssh2_session_flag() to set optional session flags.
|
||||||
|
|
||||||
Collapsed exchanging_keys/newkeys/authenticated flags into single state attribute.
|
Collapsed exchanging_keys/newkeys/authenticated flags into single state
|
||||||
|
attribute.
|
||||||
|
|
||||||
Fix zlib compression issue when internal buffer state misses partial sync.
|
Fix zlib compression issue when internal buffer state misses partial sync.
|
||||||
|
|
||||||
Fix segfault when libssh2_session_methods() is called prior to session_startup().
|
Fix segfault when libssh2_session_methods() is called prior to
|
||||||
|
session_startup().
|
||||||
|
|
||||||
Fixed client to server channel windowing. Pervent send queue overruns.
|
Fixed client to server channel windowing. Pervent send queue overruns.
|
||||||
|
|
||||||
@@ -258,7 +299,8 @@ Version 0.5
|
|||||||
-----------
|
-----------
|
||||||
|
|
||||||
*** BC Break ***
|
*** BC Break ***
|
||||||
Reimplemented libssh2_session_methods() to match libssh2_session_method_pref() style
|
Reimplemented libssh2_session_methods() to match
|
||||||
|
libssh2_session_method_pref() style
|
||||||
|
|
||||||
Fixed libssh2_attr2bin() (effects any setstat style call).
|
Fixed libssh2_attr2bin() (effects any setstat style call).
|
||||||
|
|
||||||
@@ -268,11 +310,14 @@ Version 0.5
|
|||||||
|
|
||||||
Fixed KEX_INIT cookie and packet padding to use actual random data
|
Fixed KEX_INIT cookie and packet padding to use actual random data
|
||||||
|
|
||||||
Added DESTDIR support to makefiles (Adam Go<47><6F>biowski -- I hope that character set translates right)
|
Added DESTDIR support to makefiles (Adam Go<47><6F>biowski -- I hope that
|
||||||
|
character set translates right)
|
||||||
|
|
||||||
Added libssh2_channel_forward_listen_ex(), libssh2_channel_forward_cancel(), and libssh2_channel_forward_accept().
|
Added libssh2_channel_forward_listen_ex(), libssh2_channel_forward_cancel(),
|
||||||
|
and libssh2_channel_forward_accept().
|
||||||
|
|
||||||
Added ./configure option '--disable-gex-new' to allow using the older group-exchange format
|
Added ./configure option '--disable-gex-new' to allow using the older
|
||||||
|
group-exchange format
|
||||||
|
|
||||||
Added MAC methods hmac-md5 and hmac-md5-96.
|
Added MAC methods hmac-md5 and hmac-md5-96.
|
||||||
|
|
||||||
|
@@ -10,34 +10,6 @@ noinst_PROGRAMS = ssh2 \
|
|||||||
sftp_RW_nonblock \
|
sftp_RW_nonblock \
|
||||||
sftpdir sftpdir_nonblock
|
sftpdir sftpdir_nonblock
|
||||||
|
|
||||||
INCLUDES = -I$(top_srcdir)/include
|
INCLUDES = -I. -I$(top_srcdir)/include
|
||||||
LDADD = $(top_builddir)/src/libssh2.la
|
LDADD = $(top_builddir)/src/libssh2.la
|
||||||
|
|
||||||
ssh2_SOURCES = ssh2.c
|
|
||||||
|
|
||||||
scp_SOURCES = scp.c
|
|
||||||
|
|
||||||
scp_nonblock_SOURCES = scp_nonblock.c
|
|
||||||
|
|
||||||
scp_write_SOURCES = scp_write.c
|
|
||||||
|
|
||||||
scp_write_nonblock_SOURCES = scp_write_nonblock.c
|
|
||||||
|
|
||||||
sftp_SOURCES = sftp.c
|
|
||||||
|
|
||||||
sftp_nonblock_SOURCES = sftp_nonblock.c
|
|
||||||
|
|
||||||
sftp_write_SOURCES = sftp_write.c
|
|
||||||
|
|
||||||
sftp_write_nonblock_SOURCES = sftp_write_nonblock.c
|
|
||||||
|
|
||||||
sftp_mkdir_SOURCES = sftp_mkdir.c
|
|
||||||
|
|
||||||
sftp_mkdir_nonblock_SOURCES = sftp_mkdir_nonblock.c
|
|
||||||
|
|
||||||
sftpdir_SOURCES = sftpdir.c
|
|
||||||
|
|
||||||
sftpdir_nonblock_SOURCES = sftpdir_nonblock.c
|
|
||||||
|
|
||||||
sftp_RW_nonblock_SOURCES = sftp_RW_nonblock.c
|
|
||||||
|
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: scp.c,v 1.9 2007/07/31 11:00:29 bagder Exp $
|
* $Id: scp.c,v 1.10 2007/08/09 01:10:11 dfandrich Exp $
|
||||||
*
|
*
|
||||||
* Sample showing how to do a simple SCP transfer.
|
* Sample showing how to do a simple SCP transfer.
|
||||||
*/
|
*/
|
||||||
@@ -40,9 +40,9 @@ int main(int argc, char *argv[])
|
|||||||
const char *fingerprint;
|
const char *fingerprint;
|
||||||
LIBSSH2_SESSION *session;
|
LIBSSH2_SESSION *session;
|
||||||
LIBSSH2_CHANNEL *channel;
|
LIBSSH2_CHANNEL *channel;
|
||||||
char *username=(char *)"username";
|
const char *username="username";
|
||||||
char *password=(char *)"password";
|
const char *password="password";
|
||||||
char *scppath=(char *)"/tmp/TEST";
|
const char *scppath="/tmp/TEST";
|
||||||
struct stat fileinfo;
|
struct stat fileinfo;
|
||||||
int rc;
|
int rc;
|
||||||
off_t got=0;
|
off_t got=0;
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: scp_nonblock.c,v 1.8 2007/07/31 11:00:29 bagder Exp $
|
* $Id: scp_nonblock.c,v 1.11 2007/09/24 12:15:45 bagder Exp $
|
||||||
*
|
*
|
||||||
* Sample showing how to do SCP transfers in a non-blocking manner.
|
* Sample showing how to do SCP transfers in a non-blocking manner.
|
||||||
*/
|
*/
|
||||||
@@ -40,9 +40,9 @@ int main(int argc, char *argv[])
|
|||||||
const char *fingerprint;
|
const char *fingerprint;
|
||||||
LIBSSH2_SESSION *session;
|
LIBSSH2_SESSION *session;
|
||||||
LIBSSH2_CHANNEL *channel;
|
LIBSSH2_CHANNEL *channel;
|
||||||
char *username=(char *)"username";
|
const char *username="username";
|
||||||
char *password=(char *)"password";
|
const char *password="password";
|
||||||
char *scppath=(char *)"/tmp/TEST";
|
const char *scppath="/tmp/TEST";
|
||||||
struct stat fileinfo;
|
struct stat fileinfo;
|
||||||
int rc;
|
int rc;
|
||||||
off_t got=0;
|
off_t got=0;
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: scp_write.c,v 1.4 2007/07/31 11:00:29 bagder Exp $
|
* $Id: scp_write.c,v 1.5 2007/08/09 01:10:11 dfandrich Exp $
|
||||||
*
|
*
|
||||||
* Sample showing how to do a simple SCP transfer.
|
* Sample showing how to do a simple SCP transfer.
|
||||||
*/
|
*/
|
||||||
@@ -40,10 +40,10 @@ int main(int argc, char *argv[])
|
|||||||
const char *fingerprint;
|
const char *fingerprint;
|
||||||
LIBSSH2_SESSION *session;
|
LIBSSH2_SESSION *session;
|
||||||
LIBSSH2_CHANNEL *channel;
|
LIBSSH2_CHANNEL *channel;
|
||||||
char *username=(char *)"username";
|
const char *username="username";
|
||||||
char *password=(char *)"password";
|
const char *password="password";
|
||||||
char *loclfile=(char *)"scp_write.c";
|
const char *loclfile="scp_write.c";
|
||||||
char *scppath=(char *)"/tmp/TEST";
|
const char *scppath="/tmp/TEST";
|
||||||
FILE *local;
|
FILE *local;
|
||||||
int rc;
|
int rc;
|
||||||
char mem[1024];
|
char mem[1024];
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: scp_write_nonblock.c,v 1.6 2007/07/31 11:00:29 bagder Exp $
|
* $Id: scp_write_nonblock.c,v 1.7 2007/08/09 01:10:11 dfandrich Exp $
|
||||||
*
|
*
|
||||||
* Sample showing how to do a simple SCP transfer.
|
* Sample showing how to do a simple SCP transfer.
|
||||||
*/
|
*/
|
||||||
@@ -41,10 +41,10 @@ int main(int argc, char *argv[])
|
|||||||
const char *fingerprint;
|
const char *fingerprint;
|
||||||
LIBSSH2_SESSION *session;
|
LIBSSH2_SESSION *session;
|
||||||
LIBSSH2_CHANNEL *channel;
|
LIBSSH2_CHANNEL *channel;
|
||||||
char *username=(char *)"username";
|
const char *username="username";
|
||||||
char *password=(char *)"password";
|
const char *password="password";
|
||||||
char *loclfile=(char *)"scp_write.c";
|
const char *loclfile="scp_write.c";
|
||||||
char *scppath=(char *)"/tmp/TEST";
|
const char *scppath="/tmp/TEST";
|
||||||
FILE *local;
|
FILE *local;
|
||||||
int rc;
|
int rc;
|
||||||
char mem[1024];
|
char mem[1024];
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: sftp.c,v 1.12 2007/07/31 11:00:29 bagder Exp $
|
* $Id: sftp.c,v 1.14 2007/09/24 12:14:18 bagder Exp $
|
||||||
*
|
*
|
||||||
* Sample showing how to do SFTP transfers.
|
* Sample showing how to do SFTP transfers.
|
||||||
*
|
*
|
||||||
@@ -39,11 +39,11 @@
|
|||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
|
||||||
|
|
||||||
char *keyfile1=(char *)"~/.ssh/id_rsa.pub";
|
const char *keyfile1="~/.ssh/id_rsa.pub";
|
||||||
char *keyfile2=(char *)"~/.ssh/id_rsa";
|
const char *keyfile2="~/.ssh/id_rsa";
|
||||||
char *username=(char *)"username";
|
const char *username="username";
|
||||||
char *password=(char *)"password";
|
const char *password="password";
|
||||||
char *sftppath=(char *)"/tmp/TEST";
|
const char *sftppath="/tmp/TEST";
|
||||||
|
|
||||||
|
|
||||||
static void kbd_callback(const char *name, int name_len,
|
static void kbd_callback(const char *name, int name_len,
|
||||||
@@ -147,7 +147,7 @@ int main(int argc, char *argv[])
|
|||||||
fprintf(stderr, "\n");
|
fprintf(stderr, "\n");
|
||||||
|
|
||||||
/* check what authentication methods are available */
|
/* check what authentication methods are available */
|
||||||
userauthlist = libssh2_userauth_list(session, username, sizeof(username));
|
userauthlist = libssh2_userauth_list(session, username, strlen(username));
|
||||||
printf("Authentication methods: %s\n", userauthlist);
|
printf("Authentication methods: %s\n", userauthlist);
|
||||||
if (strstr(userauthlist, "password") != NULL) {
|
if (strstr(userauthlist, "password") != NULL) {
|
||||||
auth_pw |= 1;
|
auth_pw |= 1;
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: sftp_RW_nonblock.c,v 1.9 2007/07/31 11:00:29 bagder Exp $
|
* $Id: sftp_RW_nonblock.c,v 1.10 2007/08/09 01:10:11 dfandrich Exp $
|
||||||
*
|
*
|
||||||
* Sample showing how to do SFTP transfers in a non-blocking manner.
|
* Sample showing how to do SFTP transfers in a non-blocking manner.
|
||||||
*
|
*
|
||||||
@@ -48,10 +48,10 @@ int main(int argc, char *argv[])
|
|||||||
struct sockaddr_in sin;
|
struct sockaddr_in sin;
|
||||||
const char *fingerprint;
|
const char *fingerprint;
|
||||||
LIBSSH2_SESSION *session;
|
LIBSSH2_SESSION *session;
|
||||||
char *username=(char *)"username";
|
const char *username="username";
|
||||||
char *password=(char *)"password";
|
const char *password="password";
|
||||||
char *sftppath=(char *)"/tmp/TEST"; /* source path */
|
const char *sftppath="/tmp/TEST"; /* source path */
|
||||||
char *dest=(char *)"/tmp/TEST2"; /* destination path */
|
const char *dest="/tmp/TEST2"; /* destination path */
|
||||||
int rc;
|
int rc;
|
||||||
LIBSSH2_SFTP *sftp_session;
|
LIBSSH2_SFTP *sftp_session;
|
||||||
LIBSSH2_SFTP_HANDLE *sftp_handle;
|
LIBSSH2_SFTP_HANDLE *sftp_handle;
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: sftp_mkdir.c,v 1.6 2007/07/31 11:00:29 bagder Exp $
|
* $Id: sftp_mkdir.c,v 1.7 2007/08/09 01:10:11 dfandrich Exp $
|
||||||
*
|
*
|
||||||
* Sample showing how to do SFTP mkdir
|
* Sample showing how to do SFTP mkdir
|
||||||
*
|
*
|
||||||
@@ -42,9 +42,9 @@ int main(int argc, char *argv[])
|
|||||||
struct sockaddr_in sin;
|
struct sockaddr_in sin;
|
||||||
const char *fingerprint;
|
const char *fingerprint;
|
||||||
LIBSSH2_SESSION *session;
|
LIBSSH2_SESSION *session;
|
||||||
char *username=(char *)"username";
|
const char *username="username";
|
||||||
char *password=(char *)"password";
|
const char *password="password";
|
||||||
char *sftppath=(char *)"/tmp/sftp_mkdir";
|
const char *sftppath="/tmp/sftp_mkdir";
|
||||||
int rc;
|
int rc;
|
||||||
LIBSSH2_SFTP *sftp_session;
|
LIBSSH2_SFTP *sftp_session;
|
||||||
|
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: sftp_mkdir_nonblock.c,v 1.8 2007/07/31 11:00:29 bagder Exp $
|
* $Id: sftp_mkdir_nonblock.c,v 1.9 2007/08/09 01:10:11 dfandrich Exp $
|
||||||
*
|
*
|
||||||
* Sample showing how to do SFTP non-blocking mkdir.
|
* Sample showing how to do SFTP non-blocking mkdir.
|
||||||
*
|
*
|
||||||
@@ -42,9 +42,9 @@ int main(int argc, char *argv[])
|
|||||||
struct sockaddr_in sin;
|
struct sockaddr_in sin;
|
||||||
const char *fingerprint;
|
const char *fingerprint;
|
||||||
LIBSSH2_SESSION *session;
|
LIBSSH2_SESSION *session;
|
||||||
char *username=(char *)"username";
|
const char *username="username";
|
||||||
char *password=(char *)"password";
|
const char *password="password";
|
||||||
char *sftppath=(char *)"/tmp/sftp_mkdir_nonblock";
|
const char *sftppath="/tmp/sftp_mkdir_nonblock";
|
||||||
int rc;
|
int rc;
|
||||||
LIBSSH2_SFTP *sftp_session;
|
LIBSSH2_SFTP *sftp_session;
|
||||||
|
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: sftp_nonblock.c,v 1.12 2007/07/31 11:00:29 bagder Exp $
|
* $Id: sftp_nonblock.c,v 1.13 2007/08/09 01:10:11 dfandrich Exp $
|
||||||
*
|
*
|
||||||
* Sample showing how to do SFTP non-blocking transfers.
|
* Sample showing how to do SFTP non-blocking transfers.
|
||||||
*
|
*
|
||||||
@@ -45,9 +45,9 @@ int main(int argc, char *argv[])
|
|||||||
struct sockaddr_in sin;
|
struct sockaddr_in sin;
|
||||||
const char *fingerprint;
|
const char *fingerprint;
|
||||||
LIBSSH2_SESSION *session;
|
LIBSSH2_SESSION *session;
|
||||||
char *username=(char *)"username";
|
const char *username="username";
|
||||||
char *password=(char *)"password";
|
const char *password="password";
|
||||||
char *sftppath=(char *)"/tmp/TEST";
|
const char *sftppath="/tmp/TEST";
|
||||||
int rc;
|
int rc;
|
||||||
LIBSSH2_SFTP *sftp_session;
|
LIBSSH2_SFTP *sftp_session;
|
||||||
LIBSSH2_SFTP_HANDLE *sftp_handle;
|
LIBSSH2_SFTP_HANDLE *sftp_handle;
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: sftp_write.c,v 1.7 2007/07/31 11:00:29 bagder Exp $
|
* $Id: sftp_write.c,v 1.8 2007/08/09 01:10:11 dfandrich Exp $
|
||||||
*
|
*
|
||||||
* Sample showing how to do SFTP write transfers.
|
* Sample showing how to do SFTP write transfers.
|
||||||
*
|
*
|
||||||
@@ -42,10 +42,10 @@ int main(int argc, char *argv[])
|
|||||||
struct sockaddr_in sin;
|
struct sockaddr_in sin;
|
||||||
const char *fingerprint;
|
const char *fingerprint;
|
||||||
LIBSSH2_SESSION *session;
|
LIBSSH2_SESSION *session;
|
||||||
char *username=(char *)"username";
|
const char *username="username";
|
||||||
char *password=(char *)"password";
|
const char *password="password";
|
||||||
char *loclfile=(char *)"sftp_write.c";
|
const char *loclfile="sftp_write.c";
|
||||||
char *sftppath=(char *)"/tmp/TEST";
|
const char *sftppath="/tmp/TEST";
|
||||||
int rc;
|
int rc;
|
||||||
FILE *local;
|
FILE *local;
|
||||||
LIBSSH2_SFTP *sftp_session;
|
LIBSSH2_SFTP *sftp_session;
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: sftp_write_nonblock.c,v 1.9 2007/07/31 11:00:29 bagder Exp $
|
* $Id: sftp_write_nonblock.c,v 1.10 2007/08/09 01:10:11 dfandrich Exp $
|
||||||
*
|
*
|
||||||
* Sample showing how to do SFTP non-blocking write transfers.
|
* Sample showing how to do SFTP non-blocking write transfers.
|
||||||
*
|
*
|
||||||
@@ -42,10 +42,10 @@ int main(int argc, char *argv[])
|
|||||||
struct sockaddr_in sin;
|
struct sockaddr_in sin;
|
||||||
const char *fingerprint;
|
const char *fingerprint;
|
||||||
LIBSSH2_SESSION *session;
|
LIBSSH2_SESSION *session;
|
||||||
char *username=(char *)"username";
|
const char *username="username";
|
||||||
char *password=(char *)"password";
|
const char *password="password";
|
||||||
char *loclfile=(char *)"sftp_write_nonblock.c";
|
const char *loclfile="sftp_write_nonblock.c";
|
||||||
char *sftppath=(char *)"/tmp/sftp_write_nonblock.c";
|
const char *sftppath="/tmp/sftp_write_nonblock.c";
|
||||||
int rc;
|
int rc;
|
||||||
FILE *local;
|
FILE *local;
|
||||||
LIBSSH2_SFTP *sftp_session;
|
LIBSSH2_SFTP *sftp_session;
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: sftpdir.c,v 1.8 2007/07/31 11:00:29 bagder Exp $
|
* $Id: sftpdir.c,v 1.9 2007/08/09 01:10:11 dfandrich Exp $
|
||||||
*
|
*
|
||||||
* Sample doing an SFTP directory listing.
|
* Sample doing an SFTP directory listing.
|
||||||
*
|
*
|
||||||
@@ -42,9 +42,9 @@ int main(int argc, char *argv[])
|
|||||||
struct sockaddr_in sin;
|
struct sockaddr_in sin;
|
||||||
const char *fingerprint;
|
const char *fingerprint;
|
||||||
LIBSSH2_SESSION *session;
|
LIBSSH2_SESSION *session;
|
||||||
char *username=(char *)"username";
|
const char *username="username";
|
||||||
char *password=(char *)"password";
|
const char *password="password";
|
||||||
char *sftppath=(char *)"/tmp/secretdir";
|
const char *sftppath="/tmp/secretdir";
|
||||||
int rc;
|
int rc;
|
||||||
LIBSSH2_SFTP *sftp_session;
|
LIBSSH2_SFTP *sftp_session;
|
||||||
LIBSSH2_SFTP_HANDLE *sftp_handle;
|
LIBSSH2_SFTP_HANDLE *sftp_handle;
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: sftpdir_nonblock.c,v 1.9 2007/07/31 11:00:29 bagder Exp $
|
* $Id: sftpdir_nonblock.c,v 1.10 2007/08/09 01:10:11 dfandrich Exp $
|
||||||
*
|
*
|
||||||
* Sample doing an SFTP directory listing.
|
* Sample doing an SFTP directory listing.
|
||||||
*
|
*
|
||||||
@@ -42,9 +42,9 @@ int main(int argc, char *argv[])
|
|||||||
struct sockaddr_in sin;
|
struct sockaddr_in sin;
|
||||||
const char *fingerprint;
|
const char *fingerprint;
|
||||||
LIBSSH2_SESSION *session;
|
LIBSSH2_SESSION *session;
|
||||||
char *username=(char *)"username";
|
const char *username="username";
|
||||||
char *password=(char *)"password";
|
const char *password="password";
|
||||||
char *sftppath=(char *)"/tmp/secretdir";
|
const char *sftppath="/tmp/secretdir";
|
||||||
int rc;
|
int rc;
|
||||||
LIBSSH2_SFTP *sftp_session;
|
LIBSSH2_SFTP *sftp_session;
|
||||||
LIBSSH2_SFTP_HANDLE *sftp_handle;
|
LIBSSH2_SFTP_HANDLE *sftp_handle;
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: ssh2.c,v 1.16 2007/08/03 15:08:28 jehousley Exp $
|
* $Id: ssh2.c,v 1.17 2007/08/09 01:10:11 dfandrich Exp $
|
||||||
*
|
*
|
||||||
* Sample showing how to do SSH2 connect.
|
* Sample showing how to do SSH2 connect.
|
||||||
*
|
*
|
||||||
@@ -36,10 +36,10 @@
|
|||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
|
||||||
|
|
||||||
char *keyfile1=(char *)"~/.ssh/id_rsa.pub";
|
const char *keyfile1="~/.ssh/id_rsa.pub";
|
||||||
char *keyfile2=(char *)"~/.ssh/id_rsa";
|
const char *keyfile2="~/.ssh/id_rsa";
|
||||||
char *username=(char *)"username";
|
const char *username="username";
|
||||||
char *password=(char *)"password";
|
const char *password="password";
|
||||||
|
|
||||||
|
|
||||||
static void kbd_callback(const char *name, int name_len,
|
static void kbd_callback(const char *name, int name_len,
|
||||||
@@ -189,12 +189,12 @@ int main(int argc, char *argv[])
|
|||||||
/* Some environment variables may be set,
|
/* Some environment variables may be set,
|
||||||
* It's up to the server which ones it'll allow though
|
* It's up to the server which ones it'll allow though
|
||||||
*/
|
*/
|
||||||
libssh2_channel_setenv(channel, (char *)"FOO", (char *)"bar");
|
libssh2_channel_setenv(channel, "FOO", "bar");
|
||||||
|
|
||||||
/* Request a terminal with 'vanilla' terminal emulation
|
/* Request a terminal with 'vanilla' terminal emulation
|
||||||
* See /etc/termcap for more options
|
* See /etc/termcap for more options
|
||||||
*/
|
*/
|
||||||
if (libssh2_channel_request_pty(channel, (char *)"vanilla")) {
|
if (libssh2_channel_request_pty(channel, "vanilla")) {
|
||||||
fprintf(stderr, "Failed requesting pty\n");
|
fprintf(stderr, "Failed requesting pty\n");
|
||||||
goto skip_shell;
|
goto skip_shell;
|
||||||
}
|
}
|
||||||
|
@@ -72,19 +72,22 @@ typedef unsigned int uint32_t;
|
|||||||
#if defined(LIBSSH2_WIN32) && defined(_MSC_VER) && (_MSC_VER <= 1400)
|
#if defined(LIBSSH2_WIN32) && defined(_MSC_VER) && (_MSC_VER <= 1400)
|
||||||
typedef unsigned __int64 libssh2_uint64_t;
|
typedef unsigned __int64 libssh2_uint64_t;
|
||||||
typedef __int64 libssh2_int64_t;
|
typedef __int64 libssh2_int64_t;
|
||||||
typedef long ssize_t;
|
|
||||||
typedef unsigned int uint32_t;
|
typedef unsigned int uint32_t;
|
||||||
|
#ifndef _SSIZE_T_DEFINED
|
||||||
|
typedef int ssize_t;
|
||||||
|
#define _SSIZE_T_DEFINED
|
||||||
|
#endif
|
||||||
#else
|
#else
|
||||||
typedef unsigned long long libssh2_uint64_t;
|
typedef unsigned long long libssh2_uint64_t;
|
||||||
typedef long long libssh2_int64_t;
|
typedef long long libssh2_int64_t;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define LIBSSH2_VERSION "0.16.0-CVS"
|
#define LIBSSH2_VERSION "0.18.0-CVS"
|
||||||
|
|
||||||
/* The numeric version number is also available "in parts" by using these
|
/* The numeric version number is also available "in parts" by using these
|
||||||
defines: */
|
defines: */
|
||||||
#define LIBSSH2_VERSION_MAJOR 0
|
#define LIBSSH2_VERSION_MAJOR 0
|
||||||
#define LIBSSH2_VERSION_MINOR 16
|
#define LIBSSH2_VERSION_MINOR 18
|
||||||
#define LIBSSH2_VERSION_PATCH 0
|
#define LIBSSH2_VERSION_PATCH 0
|
||||||
|
|
||||||
/* This is the numeric version of the libssh2 version number, meant for easier
|
/* This is the numeric version of the libssh2 version number, meant for easier
|
||||||
@@ -102,7 +105,7 @@ typedef long long libssh2_int64_t;
|
|||||||
and it is always a greater number in a more recent release. It makes
|
and it is always a greater number in a more recent release. It makes
|
||||||
comparisons with greater than and less than work.
|
comparisons with greater than and less than work.
|
||||||
*/
|
*/
|
||||||
#define LIBSSH2_VERSION_NUM 0x001000
|
#define LIBSSH2_VERSION_NUM 0x001200
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This is the date and time when the full source package was created. The
|
* This is the date and time when the full source package was created. The
|
||||||
@@ -306,7 +309,7 @@ LIBSSH2_API void **libssh2_session_abstract(LIBSSH2_SESSION *session);
|
|||||||
LIBSSH2_API void *libssh2_session_callback_set(LIBSSH2_SESSION *session, int cbtype, void *callback);
|
LIBSSH2_API void *libssh2_session_callback_set(LIBSSH2_SESSION *session, int cbtype, void *callback);
|
||||||
LIBSSH2_API int libssh2_banner_set(LIBSSH2_SESSION *session, const char *banner);
|
LIBSSH2_API int libssh2_banner_set(LIBSSH2_SESSION *session, const char *banner);
|
||||||
|
|
||||||
LIBSSH2_API int libssh2_session_startup(LIBSSH2_SESSION *session, int socket);
|
LIBSSH2_API int libssh2_session_startup(LIBSSH2_SESSION *session, int sock);
|
||||||
LIBSSH2_API int libssh2_session_disconnect_ex(LIBSSH2_SESSION *session, int reason, const char *description, const char *lang);
|
LIBSSH2_API int libssh2_session_disconnect_ex(LIBSSH2_SESSION *session, int reason, const char *description, const char *lang);
|
||||||
#define libssh2_session_disconnect(session, description) libssh2_session_disconnect_ex((session), SSH_DISCONNECT_BY_APPLICATION, (description), "")
|
#define libssh2_session_disconnect(session, description) libssh2_session_disconnect_ex((session), SSH_DISCONNECT_BY_APPLICATION, (description), "")
|
||||||
LIBSSH2_API int libssh2_session_free(LIBSSH2_SESSION *session);
|
LIBSSH2_API int libssh2_session_free(LIBSSH2_SESSION *session);
|
||||||
@@ -380,7 +383,7 @@ LIBSSH2_API int libssh2_channel_forward_cancel(LIBSSH2_LISTENER *listener);
|
|||||||
|
|
||||||
LIBSSH2_API LIBSSH2_CHANNEL *libssh2_channel_forward_accept(LIBSSH2_LISTENER *listener);
|
LIBSSH2_API LIBSSH2_CHANNEL *libssh2_channel_forward_accept(LIBSSH2_LISTENER *listener);
|
||||||
|
|
||||||
LIBSSH2_API int libssh2_channel_setenv_ex(LIBSSH2_CHANNEL *channel, char *varname, unsigned int varname_len, const char *value, unsigned int value_len);
|
LIBSSH2_API int libssh2_channel_setenv_ex(LIBSSH2_CHANNEL *channel, const char *varname, unsigned int varname_len, const char *value, unsigned int value_len);
|
||||||
#define libssh2_channel_setenv(channel, varname, value) libssh2_channel_setenv_ex((channel), (varname), strlen(varname), (value), strlen(value))
|
#define libssh2_channel_setenv(channel, varname, value) libssh2_channel_setenv_ex((channel), (varname), strlen(varname), (value), strlen(value))
|
||||||
|
|
||||||
LIBSSH2_API int libssh2_channel_request_pty_ex(LIBSSH2_CHANNEL *channel, const char *term, unsigned int term_len, const char *modes, unsigned int modes_len, int width, int height, int width_px, int height_px);
|
LIBSSH2_API int libssh2_channel_request_pty_ex(LIBSSH2_CHANNEL *channel, const char *term, unsigned int term_len, const char *modes, unsigned int modes_len, int width, int height, int width_px, int height_px);
|
||||||
|
@@ -5,7 +5,7 @@
|
|||||||
##
|
##
|
||||||
## Comments to: Guenter Knauf <eflash@gmx.net>
|
## Comments to: Guenter Knauf <eflash@gmx.net>
|
||||||
##
|
##
|
||||||
## $Id: Makefile.netware,v 1.7 2007/07/15 20:34:33 gknauf Exp $
|
## $Id: Makefile.netware,v 1.8 2007/08/08 16:32:42 gknauf Exp $
|
||||||
#
|
#
|
||||||
#########################################################################
|
#########################################################################
|
||||||
|
|
||||||
@@ -131,7 +131,7 @@ SDK_CLIB = $(NDK_ROOT)/nwsdk
|
|||||||
SDK_LIBC = $(NDK_ROOT)/libc
|
SDK_LIBC = $(NDK_ROOT)/libc
|
||||||
SNPRINTF = $(NDKBASE)/snprintf
|
SNPRINTF = $(NDKBASE)/snprintf
|
||||||
|
|
||||||
INCLUDES = -I.. -I../../include
|
INCLUDES = -I. -I../../include
|
||||||
|
|
||||||
LDLIBS =
|
LDLIBS =
|
||||||
|
|
||||||
@@ -188,7 +188,7 @@ vpath %.c $(SAMPLES)
|
|||||||
|
|
||||||
all: prebuild $(TARGETS)
|
all: prebuild $(TARGETS)
|
||||||
|
|
||||||
prebuild: $(OBJDIR) $(OBJDIR)/version.inc
|
prebuild: $(OBJDIR) $(OBJDIR)/version.inc config.h
|
||||||
|
|
||||||
$(OBJDIR)/%.o: %.c
|
$(OBJDIR)/%.o: %.c
|
||||||
# @echo Compiling $<
|
# @echo Compiling $<
|
||||||
@@ -284,6 +284,130 @@ endif
|
|||||||
@echo $(DL)output $(notdir $(@:.def=.nlm))$(DL) >> $@
|
@echo $(DL)output $(notdir $(@:.def=.nlm))$(DL) >> $@
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
config.h: Makefile.netware
|
||||||
|
@echo Creating $@
|
||||||
|
@echo $(DL)/* $@ for NetWare target.$(DL) > $@
|
||||||
|
@echo $(DL)** Do not edit this file - it is created by make!$(DL) >> $@
|
||||||
|
@echo $(DL)** All your changes will be lost!!$(DL) >> $@
|
||||||
|
@echo $(DL)*/$(DL) >> $@
|
||||||
|
@echo $(DL)#define VERSION "$(LIBSSH2_VERSION_STR)"$(DL) >> $@
|
||||||
|
@echo $(DL)#define PACKAGE_BUGREPORT "http://sourceforge.net/projects/libssh2"$(DL) >> $@
|
||||||
|
ifeq ($(LIBARCH),CLIB)
|
||||||
|
@echo $(DL)#define OS "i586-pc-clib-NetWare"$(DL) >> $@
|
||||||
|
@echo $(DL)#define NETDB_USE_INTERNET 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_STRICMP 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define socklen_t int$(DL) >> $@
|
||||||
|
@echo $(DL)#define sleep(s) delay(1000 * s)$(DL) >> $@
|
||||||
|
else
|
||||||
|
@echo $(DL)#define OS "i586-pc-libc-NetWare"$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_DLFCN_H 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_DLOPEN 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_FTRUNCATE 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_GETTIMEOFDAY 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_INET_PTON 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_INTTYPES_H 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_LIMITS_H 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_LONGLONG 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_STDINT_H 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_STRCASECMP 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_STRLCAT 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_STRLCPY 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_STRTOLL 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_SYS_PARAM_H 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_SYS_SELECT_H 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_TERMIOS_H 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_AF_INET6 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_PF_INET6 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_STRUCT_IN6_ADDR 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_STRUCT_SOCKADDR_IN6 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define SIZEOF_STRUCT_IN6_ADDR 16$(DL) >> $@
|
||||||
|
ifdef ENABLE_IPV6
|
||||||
|
@echo $(DL)#define ENABLE_IPV6 1$(DL) >> $@
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
@echo $(DL)#define HAVE_ARPA_INET_H 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_ASSERT_H 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_CTYPE_H 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_ERR_H 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_ERRNO_H 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_FCNTL_H 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_FIONBIO 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_GETHOSTBYADDR 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_GETHOSTBYNAME 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_GETPROTOBYNAME 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_GMTIME_R 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_INET_ADDR 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_INET_NTOA 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_LL 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_LOCALTIME_R 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_MALLOC_H 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_NETINET_IN_H 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_SELECT 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_SETJMP_H 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_SIGNAL 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_SIGNAL_H 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_SIG_ATOMIC_T 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_SOCKET 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_STDLIB_H 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_STRDUP 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_STRFTIME 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_STRING_H 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_STRSTR 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_STRUCT_ADDRINFO 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_STRUCT_TIMEVAL 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_SYS_IOCTL_H 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_SYS_STAT_H 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_SYS_TIME_H 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_TIME_H 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_UNAME 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_UNISTD_H 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_UTIME 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_UTIME_H 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define RETSIGTYPE void$(DL) >> $@
|
||||||
|
@echo $(DL)#define SIZEOF_STRUCT_IN_ADDR 4$(DL) >> $@
|
||||||
|
@echo $(DL)#define STDC_HEADERS 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define TIME_WITH_SYS_TIME 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define USE_SSLEAY 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define USE_OPENSSL 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_OPENSSL_X509_H 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_OPENSSL_SSL_H 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_OPENSSL_RSA_H 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_OPENSSL_PEM_H 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_OPENSSL_ERR_H 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_OPENSSL_CRYPTO_H 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_OPENSSL_ENGINE_H 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_O_NONBLOCK 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_LIBSSL 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_LIBCRYPTO 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define OPENSSL_NO_KRB5 1$(DL) >> $@
|
||||||
|
ifdef WITH_ZLIB
|
||||||
|
@echo $(DL)#define HAVE_ZLIB_H 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_LIBZ 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define LIBSSH2_HAVE_ZLIB 1$(DL) >> $@
|
||||||
|
endif
|
||||||
|
ifdef NW_WINSOCK
|
||||||
|
@echo $(DL)#define HAVE_CLOSESOCKET 1$(DL) >> $@
|
||||||
|
else
|
||||||
|
@echo $(DL)#define HAVE_SYS_TYPES_H 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_SYS_SOCKET_H 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_SYS_SOCKIO_H 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_NETDB_H 1$(DL) >> $@
|
||||||
|
endif
|
||||||
|
ifdef OLD_NOVELLSDK
|
||||||
|
@echo $(DL)#define socklen_t int$(DL) >> $@
|
||||||
|
endif
|
||||||
|
@echo $(DL)#define LIBSSH2_DH_GEX_NEW 1$(DL) >> $@
|
||||||
|
ifeq ($(DB),DEBUG)
|
||||||
|
@echo $(DL)#define LIBSSH2_DEBUG_CONNECTION 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define LIBSSH2_DEBUG_ERRORS 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define LIBSSH2_DEBUG_KEX 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define LIBSSH2_DEBUG_PUBLICKEY 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define LIBSSH2_DEBUG_SCP 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define LIBSSH2_DEBUG_SFTP 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define LIBSSH2_DEBUG_TRANSPORT 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define LIBSSH2_DEBUG_USERAUTH 1$(DL) >> $@
|
||||||
|
endif
|
||||||
|
|
||||||
help: $(OBJDIR)/version.inc
|
help: $(OBJDIR)/version.inc
|
||||||
@echo $(DL)===========================================================$(DL)
|
@echo $(DL)===========================================================$(DL)
|
||||||
@echo $(DL)OpenSSL path = $(OPENSSL_PATH)$(DL)
|
@echo $(DL)OpenSSL path = $(OPENSSL_PATH)$(DL)
|
||||||
|
@@ -700,7 +700,7 @@ libssh2_channel_forward_accept(LIBSSH2_LISTENER * listener)
|
|||||||
* Set an environment variable prior to requesting a shell/program/subsystem
|
* Set an environment variable prior to requesting a shell/program/subsystem
|
||||||
*/
|
*/
|
||||||
LIBSSH2_API int
|
LIBSSH2_API int
|
||||||
libssh2_channel_setenv_ex(LIBSSH2_CHANNEL * channel, char *varname,
|
libssh2_channel_setenv_ex(LIBSSH2_CHANNEL * channel, const char *varname,
|
||||||
unsigned int varname_len, const char *value,
|
unsigned int varname_len, const char *value,
|
||||||
unsigned int value_len)
|
unsigned int value_len)
|
||||||
{
|
{
|
||||||
@@ -1327,7 +1327,9 @@ libssh2_channel_receive_window_adjust(LIBSSH2_CHANNEL * channel,
|
|||||||
"Unable to send transfer-window adjustment packet, deferring",
|
"Unable to send transfer-window adjustment packet, deferring",
|
||||||
0);
|
0);
|
||||||
channel->adjust_queue = adjustment;
|
channel->adjust_queue = adjustment;
|
||||||
|
channel->adjust_state = libssh2_NB_state_idle;
|
||||||
} else {
|
} else {
|
||||||
|
channel->adjust_state = libssh2_NB_state_idle;
|
||||||
channel->remote.window_size += adjustment;
|
channel->remote.window_size += adjustment;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1649,11 +1651,30 @@ libssh2_channel_write_ex(LIBSSH2_CHANNEL * channel, int stream_id,
|
|||||||
0);
|
0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
/*
|
||||||
|
The following chunk of code is #ifdef'ed out, since I wanted it to
|
||||||
|
remain here with the given explanation why having the code in here
|
||||||
|
is not a good idea. The text is taken from the email Gavrie
|
||||||
|
Philipson wrote to libssh2-devel on Nov 8 2007.
|
||||||
|
|
||||||
|
The logic behind this is that in nonblocking mode, if the local
|
||||||
|
window size has shrunk to zero, there's no point in trying to send
|
||||||
|
anything more. However, exiting the function at that point does not
|
||||||
|
allow any adjusts from the remote side to be received, since
|
||||||
|
libssh2_packet_read (that is called further on in this function) is
|
||||||
|
never called in this case.
|
||||||
|
|
||||||
|
Removing this bit of code fixes the problem. This should not cause
|
||||||
|
busy waiting, since after the libssh2_packet_read, the function
|
||||||
|
correctly returns PACKET_EAGAIN if the window size was not adjusted.
|
||||||
|
*/
|
||||||
if (!channel->session->socket_block &&
|
if (!channel->session->socket_block &&
|
||||||
(channel->local.window_size <= 0)) {
|
(channel->local.window_size <= 0)) {
|
||||||
/* Can't write anything */
|
/* Can't write anything */
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* [13] 9 = packet_type(1) + channelno(4) [ + streamid(4) ] + buflen(4) */
|
/* [13] 9 = packet_type(1) + channelno(4) [ + streamid(4) ] + buflen(4) */
|
||||||
channel->write_packet_len = buflen + (stream_id ? 13 : 9);
|
channel->write_packet_len = buflen + (stream_id ? 13 : 9);
|
||||||
|
@@ -202,7 +202,7 @@ libssh2_publickey_packet_receive(LIBSSH2_PUBLICKEY * pkey,
|
|||||||
pkey->receive_packet_len);
|
pkey->receive_packet_len);
|
||||||
if (rc == PACKET_EAGAIN) {
|
if (rc == PACKET_EAGAIN) {
|
||||||
return PACKET_EAGAIN;
|
return PACKET_EAGAIN;
|
||||||
} else if (rc != pkey->receive_packet_len) {
|
} else if (rc != (int)pkey->receive_packet_len) {
|
||||||
libssh2_error(session, LIBSSH2_ERROR_SOCKET_TIMEOUT,
|
libssh2_error(session, LIBSSH2_ERROR_SOCKET_TIMEOUT,
|
||||||
"Timeout waiting for publickey subsystem response packet",
|
"Timeout waiting for publickey subsystem response packet",
|
||||||
0);
|
0);
|
||||||
@@ -242,13 +242,13 @@ libssh2_publickey_response_id(unsigned char **pdata, int data_len)
|
|||||||
response_len = libssh2_ntohu32(data);
|
response_len = libssh2_ntohu32(data);
|
||||||
data += 4;
|
data += 4;
|
||||||
data_len -= 4;
|
data_len -= 4;
|
||||||
if (data_len < response_len) {
|
if (data_len < (int)response_len) {
|
||||||
/* Malformed response */
|
/* Malformed response */
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
while (codes->name) {
|
while (codes->name) {
|
||||||
if (codes->name_len == response_len &&
|
if ((unsigned long)codes->name_len == response_len &&
|
||||||
strncmp(codes->name, (char *) data, response_len) == 0) {
|
strncmp(codes->name, (char *) data, response_len) == 0) {
|
||||||
*pdata = data + response_len;
|
*pdata = data + response_len;
|
||||||
return codes->code;
|
return codes->code;
|
||||||
|
@@ -135,16 +135,18 @@ libssh2_banner_receive(LIBSSH2_SESSION * session)
|
|||||||
if (errno == EAGAIN) {
|
if (errno == EAGAIN) {
|
||||||
session->banner_TxRx_total_send = banner_len;
|
session->banner_TxRx_total_send = banner_len;
|
||||||
return PACKET_EAGAIN;
|
return PACKET_EAGAIN;
|
||||||
} else {
|
|
||||||
/* Some kinda error */
|
|
||||||
session->banner_TxRx_state = libssh2_NB_state_idle;
|
|
||||||
session->banner_TxRx_total_send = 0;
|
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Some kinda error */
|
||||||
|
session->banner_TxRx_state = libssh2_NB_state_idle;
|
||||||
|
session->banner_TxRx_total_send = 0;
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ret <= 0)
|
if (ret == 0) {
|
||||||
continue;
|
session->socket_state = LIBSSH2_SOCKET_DISCONNECTED;
|
||||||
|
return PACKET_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
if (c == '\0') {
|
if (c == '\0') {
|
||||||
/* NULLs are not allowed in SSH banners */
|
/* NULLs are not allowed in SSH banners */
|
||||||
@@ -514,21 +516,21 @@ libssh2_session_callback_set(LIBSSH2_SESSION * session,
|
|||||||
* socket *must* be populated with an opened and connected socket.
|
* socket *must* be populated with an opened and connected socket.
|
||||||
*/
|
*/
|
||||||
LIBSSH2_API int
|
LIBSSH2_API int
|
||||||
libssh2_session_startup(LIBSSH2_SESSION * session, int socket)
|
libssh2_session_startup(LIBSSH2_SESSION * session, int sock)
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
if (session->startup_state == libssh2_NB_state_idle) {
|
if (session->startup_state == libssh2_NB_state_idle) {
|
||||||
_libssh2_debug(session, LIBSSH2_DBG_TRANS,
|
_libssh2_debug(session, LIBSSH2_DBG_TRANS,
|
||||||
"session_startup for socket %d", socket);
|
"session_startup for socket %d", sock);
|
||||||
/* FIXME: on some platforms (like win32) sockets are unsigned */
|
/* FIXME: on some platforms (like win32) sockets are unsigned */
|
||||||
if (socket < 0) {
|
if (sock < 0) {
|
||||||
/* Did we forget something? */
|
/* Did we forget something? */
|
||||||
libssh2_error(session, LIBSSH2_ERROR_SOCKET_NONE,
|
libssh2_error(session, LIBSSH2_ERROR_SOCKET_NONE,
|
||||||
"Bad socket provided", 0);
|
"Bad socket provided", 0);
|
||||||
return LIBSSH2_ERROR_SOCKET_NONE;
|
return LIBSSH2_ERROR_SOCKET_NONE;
|
||||||
}
|
}
|
||||||
session->socket_fd = socket;
|
session->socket_fd = sock;
|
||||||
|
|
||||||
session->socket_block =
|
session->socket_block =
|
||||||
!_libssh2_get_socket_nonblocking(session->socket_fd);
|
!_libssh2_get_socket_nonblocking(session->socket_fd);
|
||||||
|
@@ -267,7 +267,6 @@ libssh2_packet_read(LIBSSH2_SESSION * session)
|
|||||||
int numdecrypt;
|
int numdecrypt;
|
||||||
unsigned char block[MAX_BLOCKSIZE];
|
unsigned char block[MAX_BLOCKSIZE];
|
||||||
int blocksize;
|
int blocksize;
|
||||||
int minimum;
|
|
||||||
int encrypted = 1;
|
int encrypted = 1;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -293,7 +292,6 @@ libssh2_packet_read(LIBSSH2_SESSION * session)
|
|||||||
blocksize = 5; /* not strictly true, but we can use 5 here to
|
blocksize = 5; /* not strictly true, but we can use 5 here to
|
||||||
make the checks below work fine still */
|
make the checks below work fine still */
|
||||||
}
|
}
|
||||||
minimum = p->total_num ? p->total_num - p->data_num : blocksize;
|
|
||||||
|
|
||||||
/* read/use a whole big chunk into a temporary area stored in
|
/* read/use a whole big chunk into a temporary area stored in
|
||||||
the LIBSSH2_SESSION struct. We will decrypt data from that
|
the LIBSSH2_SESSION struct. We will decrypt data from that
|
||||||
@@ -308,8 +306,8 @@ libssh2_packet_read(LIBSSH2_SESSION * session)
|
|||||||
/* if remainbuf turns negative we have a bad internal error */
|
/* if remainbuf turns negative we have a bad internal error */
|
||||||
assert(remainbuf >= 0);
|
assert(remainbuf >= 0);
|
||||||
|
|
||||||
if (remainbuf < minimum) {
|
if (remainbuf < blocksize) {
|
||||||
/* If we have less than a minimum left, it is too
|
/* If we have less than a blocksize left, it is too
|
||||||
little data to deal with, read more */
|
little data to deal with, read more */
|
||||||
ssize_t nread;
|
ssize_t nread;
|
||||||
|
|
||||||
@@ -330,9 +328,28 @@ libssh2_packet_read(LIBSSH2_SESSION * session)
|
|||||||
PACKETBUFSIZE - remainbuf,
|
PACKETBUFSIZE - remainbuf,
|
||||||
LIBSSH2_SOCKET_RECV_FLAGS(session));
|
LIBSSH2_SOCKET_RECV_FLAGS(session));
|
||||||
if (nread <= 0) {
|
if (nread <= 0) {
|
||||||
/* check if this is due to EAGAIN and return
|
/* check if this is due to EAGAIN and return the special
|
||||||
the special return code if so, error out
|
return code if so, error out normally otherwise */
|
||||||
normally otherwise */
|
#ifdef WIN32
|
||||||
|
switch (WSAGetLastError()) {
|
||||||
|
case WSAEWOULDBLOCK:
|
||||||
|
errno = EAGAIN;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WSAENOTSOCK:
|
||||||
|
errno = EBADF;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WSAENOTCONN:
|
||||||
|
case WSAECONNABORTED:
|
||||||
|
errno = WSAENOTCONN;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WSAEINTR:
|
||||||
|
errno = EINTR;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
#endif /* WIN32 */
|
||||||
if ((nread < 0) && (errno == EAGAIN)) {
|
if ((nread < 0) && (errno == EAGAIN)) {
|
||||||
return PACKET_EAGAIN;
|
return PACKET_EAGAIN;
|
||||||
}
|
}
|
||||||
@@ -350,16 +367,19 @@ libssh2_packet_read(LIBSSH2_SESSION * session)
|
|||||||
/* how much data to deal with from the buffer */
|
/* how much data to deal with from the buffer */
|
||||||
numbytes = remainbuf;
|
numbytes = remainbuf;
|
||||||
|
|
||||||
if (numbytes < blocksize) {
|
|
||||||
/* we can't act on anything less than blocksize */
|
|
||||||
return PACKET_EAGAIN;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!p->total_num) {
|
if (!p->total_num) {
|
||||||
/* No payload package area allocated yet. To know the
|
/* No payload package area allocated yet. To know the
|
||||||
size of this payload, we need to decrypt the first
|
size of this payload, we need to decrypt the first
|
||||||
blocksize data. */
|
blocksize data. */
|
||||||
|
|
||||||
|
if (numbytes < blocksize) {
|
||||||
|
/* we can't act on anything less than blocksize, but this
|
||||||
|
check is only done for the initial block since once we have
|
||||||
|
got the start of a block we can in fact deal with fractions
|
||||||
|
*/
|
||||||
|
return PACKET_EAGAIN;
|
||||||
|
}
|
||||||
|
|
||||||
if (encrypted) {
|
if (encrypted) {
|
||||||
rc = decrypt(session, &p->buf[p->readidx], block, blocksize);
|
rc = decrypt(session, &p->buf[p->readidx], block, blocksize);
|
||||||
if (rc != PACKET_NONE) {
|
if (rc != PACKET_NONE) {
|
||||||
|
@@ -5,7 +5,7 @@
|
|||||||
##
|
##
|
||||||
## Comments to: Guenter Knauf <eflash@gmx.net>
|
## Comments to: Guenter Knauf <eflash@gmx.net>
|
||||||
##
|
##
|
||||||
## $Id: Makefile.win32,v 1.8 2007/07/21 22:59:24 gknauf Exp $
|
## $Id: Makefile.win32,v 1.9 2007/08/18 18:53:26 gknauf Exp $
|
||||||
#
|
#
|
||||||
#########################################################################
|
#########################################################################
|
||||||
|
|
||||||
@@ -67,6 +67,8 @@ else
|
|||||||
endif
|
endif
|
||||||
CP = cp -afv
|
CP = cp -afv
|
||||||
# RM = rm -f
|
# RM = rm -f
|
||||||
|
# Here you can find a native Win32 binary of the original awk:
|
||||||
|
# http://www.gknw.net/development/prgtools/awk.zip
|
||||||
AWK = awk
|
AWK = awk
|
||||||
ZIP = zip -qzr9
|
ZIP = zip -qzr9
|
||||||
|
|
||||||
|
@@ -5,7 +5,7 @@
|
|||||||
##
|
##
|
||||||
## Comments to: Guenter Knauf <eflash@gmx.net>
|
## Comments to: Guenter Knauf <eflash@gmx.net>
|
||||||
##
|
##
|
||||||
## $Id: Makefile.win32,v 1.5 2007/04/21 23:36:51 gknauf Exp $
|
## $Id: Makefile.win32,v 1.6 2007/08/18 18:53:26 gknauf Exp $
|
||||||
#
|
#
|
||||||
#########################################################################
|
#########################################################################
|
||||||
|
|
||||||
@@ -55,6 +55,8 @@ else
|
|||||||
endif
|
endif
|
||||||
CP = cp -afv
|
CP = cp -afv
|
||||||
# RM = rm -f
|
# RM = rm -f
|
||||||
|
# Here you can find a native Win32 binary of the original awk:
|
||||||
|
# http://www.gknw.net/development/prgtools/awk.zip
|
||||||
AWK = awk
|
AWK = awk
|
||||||
ZIP = zip -qzr9
|
ZIP = zip -qzr9
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user