Index: acpid-2.0.23/tempfailure.h
===================================================================
--- /dev/null
+++ acpid-2.0.23/tempfailure.h
@@ -0,0 +1,8 @@
+#ifndef TEMP_FAILURE_RETRY
+#define TEMP_FAILURE_RETRY(expression) \
+  (__extension__                                                              \
+    ({ long int __result;                                                     \
+       do __result = (long int) (expression);                                 \
+       while (__result == -1L && errno == EINTR);                             \
+       __result; }))
+#endif
Index: acpid-2.0.23/acpi_listen.c
===================================================================
--- acpid-2.0.23.orig/acpi_listen.c
+++ acpid-2.0.23/acpi_listen.c
@@ -39,6 +39,8 @@
 #include "acpid.h"
 #include "ud_socket.h"
 
+#include "tempfailure.h"
+
 static int handle_cmdline(int *argc, char ***argv);
 static char *read_line(int fd);
 
Index: acpid-2.0.23/acpid.c
===================================================================
--- acpid-2.0.23.orig/acpid.c
+++ acpid-2.0.23/acpid.c
@@ -41,6 +41,7 @@
 #include "input_layer.h"
 #include "inotify_handler.h"
 #include "netlink.h"
+#include "tempfailure.h"
 
 static int handle_cmdline(int *argc, char ***argv);
 static void close_fds(void);
Index: acpid-2.0.23/event.c
===================================================================
--- acpid-2.0.23.orig/event.c
+++ acpid-2.0.23/event.c
@@ -40,6 +40,9 @@
 #include "sock.h"
 #include "ud_socket.h"
 #include "event.h"
+
+#include "tempfailure.h"
+
 /*
  * What is a rule?  It's polymorphic, pretty much.
  */
Index: acpid-2.0.23/input_layer.c
===================================================================
--- acpid-2.0.23.orig/input_layer.c
+++ acpid-2.0.23/input_layer.c
@@ -47,6 +47,8 @@
 
 #define DIM(a)  (sizeof(a) / sizeof(a[0]))
 
+#include "tempfailure.h"
+
 struct evtab_entry {
 	struct input_event event;
 	const char *str;
Index: acpid-2.0.23/kacpimon/libnetlink.c
===================================================================
--- acpid-2.0.23.orig/kacpimon/libnetlink.c
+++ acpid-2.0.23/kacpimon/libnetlink.c
@@ -26,6 +26,8 @@
 
 #include "libnetlink.h"
 
+#include "../tempfailure.h"
+
 void rtnl_close(struct rtnl_handle *rth)
 {
 	if (rth->fd >= 0) {
Index: acpid-2.0.23/netlink.c
===================================================================
--- acpid-2.0.23.orig/netlink.c
+++ acpid-2.0.23/netlink.c
@@ -46,6 +46,7 @@
 #include "connection_list.h"
 
 #include "netlink.h"
+#include "tempfailure.h"
 
 static void
 format_netlink(struct nlmsghdr *msg)
Index: acpid-2.0.23/proc.c
===================================================================
--- acpid-2.0.23.orig/proc.c
+++ acpid-2.0.23/proc.c
@@ -34,6 +34,8 @@
 
 #include "proc.h"
 
+#include "tempfailure.h"
+
 const char *eventfile = ACPID_EVENTFILE;
 
 static char *read_line(int fd);
Index: acpid-2.0.23/ud_socket.c
===================================================================
--- acpid-2.0.23.orig/ud_socket.c
+++ acpid-2.0.23/ud_socket.c
@@ -22,6 +22,8 @@
 #include "log.h"
 #include "ud_socket.h"
 
+#include "tempfailure.h"
+
 int
 ud_create_socket(const char *name, mode_t socketmode)
 {
Index: acpid-2.0.23/libnetlink.c
===================================================================
--- acpid-2.0.23.orig/libnetlink.c
+++ acpid-2.0.23/libnetlink.c
@@ -26,6 +26,8 @@
 
 #include "libnetlink.h"
 
+#include "tempfailure.h"
+
 void rtnl_close(struct rtnl_handle *rth)
 {
 	if (rth->fd >= 0) {
