Andrew Geissler | 78b7279 | 2022-06-14 06:47:25 -0500 | [diff] [blame] | 1 | From 69adf9e32f5b11e15c0cbe17f9331c77fed65bf8 Mon Sep 17 00:00:00 2001 |
| 2 | From: Khem Raj <raj.khem@gmail.com> |
| 3 | Date: Sat, 28 May 2022 15:50:50 -0700 |
| 4 | Subject: [PATCH] Deal with 64bit time_t default on 32bit architectures |
| 5 | |
| 6 | Deal with Y2K38 concerns related to Linux input events on more recent |
| 7 | kernels and libcs on 32-bit systems |
| 8 | |
| 9 | Upstream-Status: Pending |
| 10 | Signed-off-by: Khem Raj <raj.khem@gmail.com> |
| 11 | --- |
| 12 | libsuinput/src/suinput.c | 11 ++++++++++- |
| 13 | 1 file changed, 10 insertions(+), 1 deletion(-) |
| 14 | |
| 15 | diff --git a/libsuinput/src/suinput.c b/libsuinput/src/suinput.c |
| 16 | index 8d5fb71..13ff16a 100644 |
| 17 | --- a/libsuinput/src/suinput.c |
| 18 | +++ b/libsuinput/src/suinput.c |
| 19 | @@ -45,11 +45,20 @@ int suinput_emit(int uinput_fd, uint16_t ev_type, uint16_t ev_code, |
| 20 | struct input_event event; |
| 21 | |
| 22 | memset(&event, 0, sizeof(event)); |
| 23 | - gettimeofday(&event.time, 0); |
| 24 | event.type = ev_type; |
| 25 | event.code = ev_code; |
| 26 | event.value = ev_value; |
| 27 | |
| 28 | +/* attempt to deal with 64-bit time keeping on recent 32-bit systems */ |
| 29 | +#if (__BITS_PER_LONG != 32 || !defined(__USE_TIME_BITS64)) |
| 30 | + gettimeofday(&event.time, 0); |
| 31 | +#else |
| 32 | + struct timeval now; |
| 33 | + memset(&now, 0, sizeof(now)); |
| 34 | + gettimeofday(&now, 0); |
| 35 | + event.input_event_sec = now.tv_sec; |
| 36 | + event.input_event_usec = now.tv_usec; |
| 37 | +#endif |
| 38 | return suinput_write_event(uinput_fd, &event); |
| 39 | } |
| 40 | |
| 41 | -- |
| 42 | 2.36.1 |
| 43 | |