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:
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