Run-time version information is now available

Run-time version information is available as exported four integers:
- const int      nl_ver_num = LIBNL_VER_NUM;
- const int      nl_ver_maj = LIBNL_VER_MAJ;
- const int      nl_ver_min = LIBNL_VER_MIN;
- const int      nl_ver_mic = LIBNL_VER_MIC;

The purpose of this is to get version of compiled library as run time.
Use cases:
- To know exact version of the library in Python's ctypes module,
  Say, to find out if nl_cache_mngr_alloc() allow sk=NULL

- To make sure that the version of the loaded library corresponds to the
  version of headers (for the paranoid). Say, to check:

  if (LIBNL_VER_NUM != nl_ver_num)
      exit(1);
This commit is contained in:
Коренберг Марк (дома) 2012-08-29 22:55:14 +06:00
parent d10d9633a5
commit 582a32433c
3 changed files with 48 additions and 2 deletions

View File

@ -1,5 +1,5 @@
/*
* netlink/version.h Compile Time Versioning Information
* netlink/version.h Versioning Information
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@ -12,6 +12,8 @@
#ifndef NETLINK_VERSION_H_
#define NETLINK_VERSION_H_
/* Compile Time Versioning Information */
#define LIBNL_STRING "@PACKAGE_STRING@"
#define LIBNL_VERSION "@PACKAGE_VERSION@"
@ -25,4 +27,11 @@
#define LIBNL_REVISION @LT_REVISION@
#define LIBNL_AGE @LT_AGE@
/* Run-time version information */
extern const int nl_ver_num;
extern const int nl_ver_maj;
extern const int nl_ver_min;
extern const int nl_ver_mic;
#endif

View File

@ -17,7 +17,8 @@ lib_LTLIBRARIES = \
libnl_3_la_SOURCES = \
addr.c attr.c cache.c cache_mngr.c cache_mngt.c data.c \
error.c handlers.c msg.c nl.c object.c socket.c utils.c
error.c handlers.c msg.c nl.c object.c socket.c utils.c \
version.c
libnl_genl_3_la_LIBADD = libnl-3.la
libnl_genl_3_la_SOURCES = \

36
lib/version.c Normal file
View File

@ -0,0 +1,36 @@
/*
* lib/version.c Run-time version information
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation version 2.1
* of the License.
*
* Copyright (c) 2003-2012 Thomas Graf <tgraf@suug.ch>
*/
/**
* @ingroup core
* @defgroup utils Utilities
*
* Run-time version information
*
* @{
*/
/**
* @name Run-time version information
* @{
*/
#include <netlink/version.h>
const int nl_ver_num = LIBNL_VER_NUM;
const int nl_ver_maj = LIBNL_VER_MAJ;
const int nl_ver_min = LIBNL_VER_MIN;
const int nl_ver_mic = LIBNL_VER_MIC;
/** @} */
/** @} */