On Mon, 29 Jul 2013, Guenter wrote:

perhaps something as simple like this would do already?

LIBSSH2_API
uint32_t libssh2_buildinfo()
{
   uint32_t buildinfo = 0;
#if defined(LIBSSH2_WINDOWSCRYPT)  /* build with Windows native Crypt API */
   buildinfo |= 0x00000004;
#elif defined(LIBSSH2_LIBGCRYPT)   /* build with libgcrypt */
   buildinfo |= 0x00000002;
#else                              /* must be build with OpenSSL */
   buildinfo |= 0x00000001;
#endif
#if defined(LIBSSH2_HAVE_ZLIB)     /* build with Zlib support */
   buildinfo |= 0x00010000;
#endif
   return buildinfo;
}

Yeah. Perhaps with two version strings added, one for the crypto lib and one for the zlib?

struct libssh2_build {
  unsigned int featuremask;
  char *cryptolib; /* name/version perhaps ? */
  char *zlib;
};

struct libssh2_build *libssh2_buildinfo(void);

... I can also imagine making it slightly more future-proof with a generation counter in the struct:

struct libssh2_build {
  int age; /* generation number of this struct, 1 for now */
  unsigned int featuremask;
  char *cryptolib;
  char *zlib;
};

... that way we can add stuff to the end of the struct in a future if we bump the age counter and document it properly.

--

 / daniel.haxx.se
_______________________________________________
libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel

Reply via email to