On Sat, Dec 22, 2012 at 1:36 PM, Marcel Holtmann <marcel@xxxxxxxxxxxx> wrote: > Hi Joao Paulo, > >> If bluetoothd crashes the exit routine of the suspend plugin will not be >> executed, leaving the suspend FIFO behind and preventing the plugin load >> on subsequent executions. This commit checks for pre-existence of the >> suspend FIFO and tries to remove and re-create it. >> --- >> profiles/input/suspend-dummy.c | 16 ++++++++++++++++ >> 1 file changed, 16 insertions(+) >> >> 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) { > > you are looking for unlink() to use here. > What's the problem with remove()? From the manpage it's part of stdio.h and calls unlink() for files, and rmdir() for directories. >From my understanding if someone else created a directory on the FIFO path, unlink() will return with EISDIR and we would need to handle this error as well. -- João Paulo Rechi Vita Openbossa Labs - INdT -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html