diff options
author | michael <michael@3ae390bd-cb1e-0410-b409-cd5a39f66f1f> | 2009-01-06 06:42:05 +0000 |
---|---|---|
committer | michael <michael@3ae390bd-cb1e-0410-b409-cd5a39f66f1f> | 2009-01-06 06:42:05 +0000 |
commit | 8fc1ceb3e52898e46a0209f1e4a084376f8d46ce (patch) | |
tree | a7e19a64f2f0b59b064153499dbedebd5b9c7ae8 | |
parent | cc0f1aba257bc1344cc9d70b949560120256215e (diff) | |
download | lcd4linux-8fc1ceb3e52898e46a0209f1e4a084376f8d46ce.tar.gz |
initialize fifo on first use
git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@942 3ae390bd-cb1e-0410-b409-cd5a39f66f1f
Diffstat (limited to '')
-rw-r--r-- | plugin_fifo.c | 39 |
1 files changed, 26 insertions, 13 deletions
diff --git a/plugin_fifo.c b/plugin_fifo.c index f8be4c8..3a41e04 100644 --- a/plugin_fifo.c +++ b/plugin_fifo.c @@ -149,11 +149,37 @@ static int openFifo() } +static void startFifo(void) +{ + static int started = 0; + + if (started) + return; + + started = 1; + + configure_fifo(); + fd.path = fifopath; + fd.input = -1; + fd.created = 0; + openFifo(); + + /* ignore broken pipe */ + signal(SIGPIPE, SIG_IGN); + + memset(msg, 0, FIFO_BUFFER_SIZE); + +} + + static void fiforead(RESULT * result) { char buf[FIFO_BUFFER_SIZE]; unsigned int i; int bytes = 1; + + startFifo(); + memset(buf, 0, FIFO_BUFFER_SIZE); strcat(buf, "ERROR"); @@ -184,18 +210,6 @@ static void fiforead(RESULT * result) /* plugin initialization */ int plugin_init_fifo(void) { - configure_fifo(); - fd.path = fifopath; - fd.input = -1; - fd.created = 0; - if (openFifo() < 0) { - return -1; - } - - /* ignore broken pipe */ - signal(SIGPIPE, SIG_IGN); - - memset(msg, 0, FIFO_BUFFER_SIZE); AddFunction("fifo::read", 0, fiforead); return 0; } @@ -203,7 +217,6 @@ int plugin_init_fifo(void) void plugin_exit_fifo(void) { - /* close filedescriptors */ closeFifo(); } |