Added compile-vs-runtime library version checks
This commit is contained in:
parent
c2dd9675d6
commit
4f73b850c5
|
@ -11,6 +11,8 @@ void on_key(termkey_t *tk, termkey_key *key)
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
|
TERMKEY_CHECK_VERSION;
|
||||||
|
|
||||||
termkey_t *tk = termkey_new(0, 0);
|
termkey_t *tk = termkey_new(0, 0);
|
||||||
|
|
||||||
if(!tk) {
|
if(!tk) {
|
||||||
|
|
2
demo.c
2
demo.c
|
@ -3,6 +3,8 @@
|
||||||
#include "termkey.h"
|
#include "termkey.h"
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
|
TERMKEY_CHECK_VERSION;
|
||||||
|
|
||||||
char buffer[50];
|
char buffer[50];
|
||||||
termkey_t *tk = termkey_new(0, 0);
|
termkey_t *tk = termkey_new(0, 0);
|
||||||
|
|
||||||
|
|
17
termkey.c
17
termkey.c
|
@ -8,6 +8,23 @@
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
|
void termkey_check_version(int major, int minor)
|
||||||
|
{
|
||||||
|
if(major != TERMKEY_VERSION_MAJOR) {
|
||||||
|
fprintf(stderr, "libtermkey major version mismatch; %d (wants) != %d (library)\n",
|
||||||
|
major, TERMKEY_VERSION_MAJOR);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(minor > TERMKEY_VERSION_MINOR) {
|
||||||
|
fprintf(stderr, "libtermkey minor version mismatch; %d (wants) > %d (library)\n",
|
||||||
|
minor, TERMKEY_VERSION_MINOR);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Happy
|
||||||
|
}
|
||||||
|
|
||||||
static struct termkey_driver *drivers[] = {
|
static struct termkey_driver *drivers[] = {
|
||||||
&termkey_driver_ti,
|
&termkey_driver_ti,
|
||||||
&termkey_driver_csi,
|
&termkey_driver_csi,
|
||||||
|
|
|
@ -7,6 +7,9 @@
|
||||||
#define TERMKEY_VERSION_MAJOR @@VERSION_MAJOR@@
|
#define TERMKEY_VERSION_MAJOR @@VERSION_MAJOR@@
|
||||||
#define TERMKEY_VERSION_MINOR @@VERSION_MINOR@@
|
#define TERMKEY_VERSION_MINOR @@VERSION_MINOR@@
|
||||||
|
|
||||||
|
#define TERMKEY_CHECK_VERSION \
|
||||||
|
termkey_check_version(TERMKEY_VERSION_MAJOR, TERMKEY_VERSION_MINOR)
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
TERMKEY_SYM_UNKNOWN = -1,
|
TERMKEY_SYM_UNKNOWN = -1,
|
||||||
TERMKEY_SYM_NONE = 0,
|
TERMKEY_SYM_NONE = 0,
|
||||||
|
@ -128,6 +131,8 @@ enum {
|
||||||
TERMKEY_FLAG_NOTERMIOS = 1 << 4, // Do not make initial termios calls on construction
|
TERMKEY_FLAG_NOTERMIOS = 1 << 4, // Do not make initial termios calls on construction
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void termkey_check_version(int major, int minor);
|
||||||
|
|
||||||
termkey_t *termkey_new(int fd, int flags);
|
termkey_t *termkey_new(int fd, int flags);
|
||||||
void termkey_free(termkey_t *tk);
|
void termkey_free(termkey_t *tk);
|
||||||
void termkey_destroy(termkey_t *tk);
|
void termkey_destroy(termkey_t *tk);
|
||||||
|
|
Loading…
Reference in New Issue