Subject: Re: Port to VMS; how to get changes into the main code stream?

Re: Port to VMS; how to get changes into the main code stream?

From: Peter Stuge <>
Date: Sat, 6 Mar 2010 03:34:39 +0100

Jose Baars wrote:
> I have made some build procedures, and tested all examples.

Sounds great!

> - Are the _libssh2_xxxx routines (the ones starting with underscore)
> strictly for internal use in libssh2 itself?

Yes. Strictly for internal use.

Everything that should be in the public API is in the public include
files in the source tree: include/libssh2.h,
include/libssh2_publickey.h and include/libssh2_sftp.h.

Everything outside those headers is off limits for applications.

> If they are for internal use only, as I expect, I will not
> make them callable in the shared image library (the VMS dll, for
> anyone still reading this, but without VMS background).

Sounds good!

> - Will there be more functions defined in the libssh2 API?

Yes, new functions can and will be added.

> Will the parameters of functions be subject to change?

There are a number of incompatible API changes coming, but there is
no plan made for them. In Linux and other Unix-like systems dynamic
libraries have a version called soname, and the linker knows which
version of the API each application requires, so it's possible to
have more than one library installed without conflict, and the linker
will always do the right thing.

The API changes remain unplanned because even though there is
versioning, the changes will still create hassle for application
developers, so we try to gather up some fair number of changes and do
them all at once, and we want to do them only seldom, to not annoy
application developers too much.

> In other words: To what extent will libssh2 be upward compatible?

The API will change at some point, and backwards compatibility may
break. I don't know if and how that can be dealt with for VMS?

> SCP is ssh1 so I didn't test that extensively, but it worked.

SCP can run also on SSH 2, it's a separate program running on the
server, and doesn't even care which version SSH it's running on.

SFTP is only SSH 2 though.

> The only example failing is the sftp_rw_nonblock.c, but after
> examining the code that seemed logical, as the non-blocking socket
> simply doesn't have data when it is read, and a select() call like
> in sftp_nonblock.c is not in place.
> To me, it fails by design. Am I wrong there?

I have't looked now but I'm sure you are right. The examples are not
by any means spectacular quality code. All patches are welcome. :)


Received on 2010-03-06