After little investigation I've noticed that the patched version still
has the "size" bug which affects 2.6.27-rc1+. This is the fixed
version:

--
The bit / absbit is defined the same way as in kernel. {EV|ABS}_CNT is
only exported in recent kernels.

Signed-off-by: Sebastian Siewior <[EMAIL PROTECTED]>
---
 plugins/input-raw.c |   24 ++++++++++++++++--------
 1 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/plugins/input-raw.c b/plugins/input-raw.c
index 6b01fd8..0539473 100644
--- a/plugins/input-raw.c
+++ b/plugins/input-raw.c
@@ -49,25 +49,33 @@ struct tslib_input {
        int     grab_events;
 };
 
+#define BITS_PER_LONG  (sizeof(long) * 8)
+#ifndef EV_CNT
+#define EV_CNT (EV_MAX+1)
+#endif
+#ifndef ABS_CNT
+#define ABS_CNT        (ABS_MAX+1)
+#endif
+
 static int check_fd(struct tslib_input *i)
 {
        struct tsdev *ts = i->module.dev;
        int version;
-       u_int32_t bit;
-       u_int64_t absbit;
+       unsigned long bit[EV_CNT / BITS_PER_LONG + 1];
+       unsigned long absbit[ABS_MAX / BITS_PER_LONG + 1];
 
        if (! ((ioctl(ts->fd, EVIOCGVERSION, &version) >= 0) &&
                (version == EV_VERSION) &&
-               (ioctl(ts->fd, EVIOCGBIT(0, sizeof(bit) * 8), &bit) >= 0) &&
-               (bit & (1 << EV_ABS)) &&
-               (ioctl(ts->fd, EVIOCGBIT(EV_ABS, sizeof(absbit) * 8), &absbit) 
>= 0) &&
-               (absbit & (1 << ABS_X)) &&
-               (absbit & (1 << ABS_Y)) && (absbit & (1 << ABS_PRESSURE)))) {
+               (ioctl(ts->fd, EVIOCGBIT(0, sizeof(bit)), bit) >= 0) &&
+               (bit[0] & (1 << EV_ABS)) &&
+               (ioctl(ts->fd, EVIOCGBIT(EV_ABS, sizeof(absbit)), absbit) >= 0) 
&&
+               (absbit[0] & (1 << ABS_X)) &&
+               (absbit[0] & (1 << ABS_Y)) && (absbit[0] & (1 << 
ABS_PRESSURE)))) {
                fprintf(stderr, "selected device is not a touchscreen I 
understand\n");
                return -1;
        }
 
-       if (bit & (1 << EV_SYN))
+       if (bit[0] & (1 << EV_SYN))
                i->using_syn = 1;
        
        if (i->grab_events == GRAB_EVENTS_WANTED) {
-- 
1.5.6.5




-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to