logo

oasis

Own branch of Oasis Linux (upstream: <https://git.sr.ht/~mcf/oasis/>) git clone https://anongit.hacktivis.me/git/oasis.git
commit: 70e6a1409d8b62415831a344aff20c530e628723
parent 5c83a38b4de256a94cb1941e8ac53d632dddd356
Author: Michael Forney <mforney@mforney.org>
Date:   Sun, 16 Jun 2019 17:19:49 -0700

libevdev: Fix a few portability issues

Diffstat:

M.gitmodules1+
Mpkg/libevdev/eventnames.awk5++---
Apkg/libevdev/patch/0001-Avoid-statement-expressions.patch77+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apkg/libevdev/patch/0002-Avoid-initializer-index-range.patch38++++++++++++++++++++++++++++++++++++++
Apkg/libevdev/patch/0003-Only-use-GCC-pragma-on-GCC.patch34++++++++++++++++++++++++++++++++++
Apkg/libevdev/patch/0004-Only-use-__builtin_expect-on-GNU-compatible-compiler.patch28++++++++++++++++++++++++++++
Mpkg/libevdev/ver2+-
7 files changed, 181 insertions(+), 4 deletions(-)

diff --git a/.gitmodules b/.gitmodules @@ -96,6 +96,7 @@ [submodule "pkg/libevdev/src"] path = pkg/libevdev/src url = https://anongit.freedesktop.org/git/libevdev.git + ignore = all [submodule "pkg/libevent/src"] path = pkg/libevent/src url = https://github.com/libevent/libevent diff --git a/pkg/libevdev/eventnames.awk b/pkg/libevdev/eventnames.awk @@ -78,12 +78,11 @@ function print_map() { print "#if __clang__" print "#pragma clang diagnostic push" print "#pragma clang diagnostic ignored \"-Winitializer-overrides\"" - print "#else" + print "#elif __GNUC__" print "#pragma GCC diagnostic push" print "#pragma GCC diagnostic ignored \"-Woverride-init\"" print "#endif" print "static const int ev_max[EV_MAX + 1] = {" - print " [0 ... EV_MAX] = -1," for (i = 1; i <= numprefixes; ++i) { prefix = prefixes[i] if (prefix in skip) @@ -93,7 +92,7 @@ function print_map() { print "};" print "#if __clang__" print "#pragma clang diagnostic pop /* \"-Winitializer-overrides\" */" - print "#else" + print "#elif __GNUC__" print "#pragma GCC diagnostic pop /* \"-Woverride-init\" */" print "#endif" print "" diff --git a/pkg/libevdev/patch/0001-Avoid-statement-expressions.patch b/pkg/libevdev/patch/0001-Avoid-statement-expressions.patch @@ -0,0 +1,77 @@ +From 2502b02e69ad84e1e8e96fa1683968e72bbd0501 Mon Sep 17 00:00:00 2001 +From: Michael Forney <mforney@mforney.org> +Date: Sun, 16 Jun 2019 17:05:30 -0700 +Subject: [PATCH] Avoid statement expressions + +--- + libevdev/libevdev-int.h | 3 ++- + libevdev/libevdev-util.h | 13 ------------- + libevdev/libevdev.c | 7 ++++++- + 3 files changed, 8 insertions(+), 15 deletions(-) + +diff --git a/libevdev/libevdev-int.h b/libevdev/libevdev-int.h +index e1c7ec5..b92d8d5 100644 +--- a/libevdev/libevdev-int.h ++++ b/libevdev/libevdev-int.h +@@ -198,7 +198,8 @@ queue_shift_multiple(struct libevdev *dev, size_t n, struct input_event *ev) + return 0; + + remaining = dev->queue_next; +- n = min(n, remaining); ++ if (remaining < n) ++ n = remaining; + remaining -= n; + + if (ev) +diff --git a/libevdev/libevdev-util.h b/libevdev/libevdev-util.h +index c6e1197..e8b6769 100644 +--- a/libevdev/libevdev-util.h ++++ b/libevdev/libevdev-util.h +@@ -32,19 +32,6 @@ + #define ARRAY_LENGTH(a) (sizeof(a) / (sizeof((a)[0]))) + #define unlikely(x) (__builtin_expect(!!(x),0)) + +-#undef min +-#undef max +-#define min(a,b) \ +- ({ __typeof__ (a) _a = (a); \ +- __typeof__ (b) _b = (b); \ +- _a > _b ? _b : _a; \ +- }) +-#define max(a,b) \ +- ({ __typeof__ (a) _a = (a); \ +- __typeof__ (b) _b = (b); \ +- _a > _b ? _a : _b; \ +- }) +- + static inline bool + startswith(const char *str, size_t len, const char *prefix, size_t plen) + { +diff --git a/libevdev/libevdev.c b/libevdev/libevdev.c +index c5798b4..e5abe91 100644 +--- a/libevdev/libevdev.c ++++ b/libevdev/libevdev.c +@@ -67,6 +67,7 @@ init_event_queue(struct libevdev *dev) + int nevents = 1; /* terminating SYN_REPORT */ + int nslots; + unsigned int type, code; ++ size_t size; + + /* count the number of axes, keys, etc. to get a better idea at how + many events per EV_SYN we could possibly get. That's the max we +@@ -94,7 +95,11 @@ init_event_queue(struct libevdev *dev) + nevents += num_mt_axes * (nslots - 1); + } + +- return queue_alloc(dev, max(MIN_QUEUE_SIZE, nevents * 2)); ++ size = nevents * 2; ++ if (size < MIN_QUEUE_SIZE) ++ size = MIN_QUEUE_SIZE; ++ ++ return queue_alloc(dev, size); + } + + static void +-- +2.20.1 + diff --git a/pkg/libevdev/patch/0002-Avoid-initializer-index-range.patch b/pkg/libevdev/patch/0002-Avoid-initializer-index-range.patch @@ -0,0 +1,38 @@ +From 3ff74cb7e1f62fe95b77f74a5428bc4c787627b7 Mon Sep 17 00:00:00 2001 +From: Michael Forney <mforney@mforney.org> +Date: Sun, 16 Jun 2019 17:14:18 -0700 +Subject: [PATCH] Avoid initializer index range + +--- + libevdev/libevdev.c | 2 +- + libevdev/make-event-names.py | 1 - + 2 files changed, 1 insertion(+), 2 deletions(-) + +diff --git a/libevdev/libevdev.c b/libevdev/libevdev.c +index e5abe91..1dc71ed 100644 +--- a/libevdev/libevdev.c ++++ b/libevdev/libevdev.c +@@ -1639,7 +1639,7 @@ libevdev_property_get_name(unsigned int prop) + LIBEVDEV_EXPORT int + libevdev_event_type_get_max(unsigned int type) + { +- if (type > EV_MAX) ++ if (type > EV_MAX || !ev_max[type]) + return -1; + + return ev_max[type]; +diff --git a/libevdev/make-event-names.py b/libevdev/make-event-names.py +index 716c1d7..de3a725 100755 +--- a/libevdev/make-event-names.py ++++ b/libevdev/make-event-names.py +@@ -94,7 +94,6 @@ def print_map(bits): + print("#pragma GCC diagnostic ignored \"-Woverride-init\"") + print("#endif") + print("static const int ev_max[EV_MAX + 1] = {") +- print(" [0 ... EV_MAX] = -1,") + for prefix in prefixes: + if prefix in ["BTN_", "EV_", "INPUT_PROP_", "MT_TOOL_"]: + continue +-- +2.20.1 + diff --git a/pkg/libevdev/patch/0003-Only-use-GCC-pragma-on-GCC.patch b/pkg/libevdev/patch/0003-Only-use-GCC-pragma-on-GCC.patch @@ -0,0 +1,34 @@ +From 296ede81584f7490196e29a95a8b2655efcc121e Mon Sep 17 00:00:00 2001 +From: Michael Forney <mforney@mforney.org> +Date: Sun, 16 Jun 2019 17:18:00 -0700 +Subject: [PATCH] Only use GCC pragma on GCC + +--- + libevdev/make-event-names.py | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/libevdev/make-event-names.py b/libevdev/make-event-names.py +index de3a725..9612440 100755 +--- a/libevdev/make-event-names.py ++++ b/libevdev/make-event-names.py +@@ -89,7 +89,7 @@ def print_map(bits): + print("#if __clang__") + print("#pragma clang diagnostic push") + print("#pragma clang diagnostic ignored \"-Winitializer-overrides\"") +- print("#else") ++ print("#elif __GNUC__") + print("#pragma GCC diagnostic push") + print("#pragma GCC diagnostic ignored \"-Woverride-init\"") + print("#endif") +@@ -101,7 +101,7 @@ def print_map(bits): + print("};") + print("#if __clang__") + print("#pragma clang diagnostic pop /* \"-Winitializer-overrides\" */") +- print("#else") ++ print("#elif __GNUC__") + print("#pragma GCC diagnostic pop /* \"-Woverride-init\" */") + print("#endif"); + print("") +-- +2.20.1 + diff --git a/pkg/libevdev/patch/0004-Only-use-__builtin_expect-on-GNU-compatible-compiler.patch b/pkg/libevdev/patch/0004-Only-use-__builtin_expect-on-GNU-compatible-compiler.patch @@ -0,0 +1,28 @@ +From be5f47aa16b42f1867d832e89b510088538b4c32 Mon Sep 17 00:00:00 2001 +From: Michael Forney <mforney@mforney.org> +Date: Sun, 16 Jun 2019 17:18:21 -0700 +Subject: [PATCH] Only use __builtin_expect on GNU-compatible compilers + +--- + libevdev/libevdev-util.h | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/libevdev/libevdev-util.h b/libevdev/libevdev-util.h +index e8b6769..c7f90b9 100644 +--- a/libevdev/libevdev-util.h ++++ b/libevdev/libevdev-util.h +@@ -30,7 +30,11 @@ + #define LONG_BITS (sizeof(long) * 8) + #define NLONGS(x) (((x) + LONG_BITS - 1) / LONG_BITS) + #define ARRAY_LENGTH(a) (sizeof(a) / (sizeof((a)[0]))) ++#ifdef __GNUC__ + #define unlikely(x) (__builtin_expect(!!(x),0)) ++#else ++#define unlikely(x) (x) ++#endif + + static inline bool + startswith(const char *str, size_t len, const char *prefix, size_t plen) +-- +2.20.1 + diff --git a/pkg/libevdev/ver b/pkg/libevdev/ver @@ -1 +1 @@ -1.7.0 r0 +1.7.0 r1