Diff between 8ae41453da9f511b65967e1c6ff5ae9cb1bb4864 and 9d2d03d3cd284964fe87fa6f86e63dbb3140ae13

Changed Files

File Additions Deletions Status
profiles/input/suspend-dummy.c +16 -0 modified

Full Patch

diff --git a/profiles/input/suspend-dummy.c b/profiles/input/suspend-dummy.c
index 33b790a..43384c0 100644
--- a/profiles/input/suspend-dummy.c
+++ b/profiles/input/suspend-dummy.c
@@ -119,6 +119,22 @@ int suspend_init(suspend_event suspend, resume_event resume)
 
 	if (mkfifo(HOG_SUSPEND_FIFO, S_IRWXU) < 0) {
 		int err = -errno;
+
+		if (err == -EEXIST) {
+			DBG("FIFO (%s) already exists, trying to remove",
+							HOG_SUSPEND_FIFO);
+
+			/* remove pre-existing FIFO and retry */
+			if (remove(HOG_SUSPEND_FIFO) < 0) {
+				err = -errno;
+				error("Failed to remove FIFO (%s): %s (%d)",
+					HOG_SUSPEND_FIFO, strerror(-err), -err);
+				return err;
+			}
+
+			return suspend_init(suspend, resume);
+		}
+
 		error("Can't create FIFO (%s): %s (%d)", HOG_SUSPEND_FIFO,
 							strerror(-err), -err);
 		return err;