libctf: library version enforcement

This old Solaris standard allows callers to specify that they are
expecting one particular API and/or CTF file format from the library.

libctf/
	* ctf-impl.h (_libctf_version): New declaration.
	* ctf-subr.c (_libctf_version): Define it.
	(ctf_version): New.

include/
	* ctf-api.h (ctf_version): New.
This commit is contained in:
Nick Alcock 2019-04-24 11:26:42 +01:00
parent c499eb6896
commit 6c33b742ce
5 changed files with 39 additions and 0 deletions

View file

@ -27,6 +27,7 @@
#include <unistd.h>
static size_t _PAGESIZE _libctf_unused_;
int _libctf_version = CTF_VERSION; /* Library client version. */
int _libctf_debug = 0; /* Debugging messages enabled. */
_libctf_malloc_ void *
@ -190,6 +191,32 @@ ctf_strerror (int err)
return (const char *) (strerror (err));
}
/* Set the CTF library client version to the specified version. If version is
zero, we just return the default library version number. */
int
ctf_version (int version)
{
if (version < 0)
{
errno = EINVAL;
return -1;
}
if (version > 0)
{
/* Dynamic version switching is not presently supported. */
if (version != CTF_VERSION)
{
errno = ENOTSUP;
return -1;
}
ctf_dprintf ("ctf_version: client using version %d\n", version);
_libctf_version = version;
}
return _libctf_version;
}
void
libctf_init_debug (void)
{