summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backends/native/meta-launcher.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/backends/native/meta-launcher.c b/src/backends/native/meta-launcher.c
index 4a9a7276e..90b4b98ba 100644
--- a/src/backends/native/meta-launcher.c
+++ b/src/backends/native/meta-launcher.c
@@ -188,9 +188,22 @@ on_evdev_device_open (const char *path,
/* Allow readonly access to sysfs */
if (g_str_has_prefix (path, "/sys/"))
{
- fd = open (path, flags);
- if (fd >= 0)
- g_hash_table_add (self->sysfs_fds, GINT_TO_POINTER (fd));
+ do
+ {
+ fd = open (path, flags);
+ }
+ while (fd < 0 && errno == EINTR);
+
+ if (fd < 0)
+ {
+ g_set_error (error,
+ G_FILE_ERROR,
+ g_file_error_from_errno (errno),
+ "Could not open /sys file: %s: %m", path);
+ return -1;
+ }
+
+ g_hash_table_add (self->sysfs_fds, GINT_TO_POINTER (fd));
return fd;
}