]> git.webhop.me Git - lcd4linux.git/commitdiff
clean up
authormichux <michux@3ae390bd-cb1e-0410-b409-cd5a39f66f1f>
Sat, 12 Apr 2008 16:23:52 +0000 (16:23 +0000)
committermichux <michux@3ae390bd-cb1e-0410-b409-cd5a39f66f1f>
Sat, 12 Apr 2008 16:23:52 +0000 (16:23 +0000)
git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@871 3ae390bd-cb1e-0410-b409-cd5a39f66f1f

plugin_fifo.c

index 12a937431ad758daebfea1e81224a63ab08d0a9a..fc3f77f430ba1314513fc60291a5a7f3e4671496 100644 (file)
-/* $Id$\r
- * $URL$\r
- *\r
- * plugin template\r
- *\r
- * Copyright (C) 2008 Michael Vogt <michu@neophob.com>\r
- * Copyright (C) 2004, 2005, 2006, 2007, 2008 The LCD4Linux Team <lcd4linux-devel@users.sourceforge.net>\r
- *\r
- * This file is part of LCD4Linux.\r
- *\r
- * LCD4Linux is free software; you can redistribute it and/or modify\r
- * it under the terms of the GNU General Public License as published by\r
- * the Free Software Foundation; either version 2, or (at your option)\r
- * any later version.\r
- *\r
- * LCD4Linux is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
- * GNU General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License\r
- * along with this program; if not, write to the Free Software\r
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\r
- *\r
- */  \r
-    \r
-/* \r
- * Quick fifo hack for lcd4linux\r
- * \r
- * most code is ripped ...\r
- *\r
- */ \r
-    \r\r
-/* define the include files you need */ \r
-#include "config.h"\r
-    \r
-#include <stdlib.h>\r
-#include <string.h>\r
-#include <ctype.h>\r
-#include <errno.h>\r
-#include <unistd.h>\r
-#include <fcntl.h>\r
-#include <sys/stat.h>\r
-    \r
-/* these should always be included */ \r
-#include "debug.h"\r
-#include "plugin.h"\r
-#include "cfg.h"\r
-    \r
-#ifdef WITH_DMALLOC\r
-#include <dmalloc.h>\r
-#endif /* \r */
-    \r
-#define FIFO_BUFFER_SIZE 80\r
-    \rtypedef struct _FifoData {
-    \rchar *path;
-    \r int input;
-    \r int created;
-\r \r} FifoData;
-\r\rstatic char Section[] = "Plugin:FIFO";
-\r\rstatic FifoData fd;
-\rstatic char msg[FIFO_BUFFER_SIZE];
-\rstatic char fifopath[1024];
-\r\rstatic void configure_fifo(void) \r
+/* $Id$
+ * $URL$
+ *
+ * plugin template
+ *
+ * Copyright (C) 2008 Michael Vogt <michu@neophob.com>
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008 The LCD4Linux Team <lcd4linux-devel@users.sourceforge.net>
+ *
+ * This file is part of LCD4Linux.
+ *
+ * LCD4Linux is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * LCD4Linux is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ */
+
+/* 
+ * Quick fifo hack for lcd4linux
+ * 
+ * most code is ripped ...
+ *
+ */
+
+/* define the include files you need */
+#include "config.h"
+
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <errno.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+
+/* these should always be included */
+#include "debug.h"
+#include "plugin.h"
+#include "cfg.h"
+
+#ifdef WITH_DMALLOC
+#include <dmalloc.h>
+#endif
+
+#define FIFO_BUFFER_SIZE 80
+
+typedef struct _FifoData {
+    char *path;
+    int input;
+    int created;
+} FifoData;
+
+static char Section[] = "Plugin:FIFO";
+static FifoData fd;
+static char msg[FIFO_BUFFER_SIZE];
+static char fifopath[1024];
+
+
+static void configure_fifo(void)
 {
-    \rchar *s;
-    \rs = cfg_get(Section, "fifopath", "/tmp/lcd4linux.fifo");
-    \rif (*s == '\0') {
-       \rinfo("[FIFO] empty '%s.fifopath' entry from %s, assuming '/tmp/lcd4linux.fifo'", Section, cfg_source());
-       \rstrcpy(fifopath, "/tmp/lcd4linux.fifo");
-    \r} else
-       \rstrcpy(fifopath, s);
-    \r\rfree(s);
-\r}
-\r\r\rstatic void removeFifo() \r
+    char *s;
+    s = cfg_get(Section, "fifopath", "/tmp/lcd4linux.fifo");
+    if (*s == '\0') {
+       info("[FIFO] empty '%s.fifopath' entry from %s, assuming '/tmp/lcd4linux.fifo'", Section, cfg_source());
+       strcpy(fifopath, "/tmp/lcd4linux.fifo");
+    } else
+       strcpy(fifopath, s);
+    free(s);
+}
+
+
+static void removeFifo()
 {
-    \rdebug("Removing FIFO \"%s\"\n", fd.path);
-    \r\rif (unlink(fd.path) < 0) {
-       \rerror("Could not remove FIFO \"%s\": %s\n", fd.path, strerror(errno));
-       \rreturn;
-    \r}
-    \r\rfd.created = 0;
-\r}
-\r\rstatic void closeFifo() \r
+    debug("Removing FIFO \"%s\"\n", fd.path);
+    if (unlink(fd.path) < 0) {
+       error("Could not remove FIFO \"%s\": %s\n", fd.path, strerror(errno));
+       return;
+    }
+    fd.created = 0;
+}
+
+
+static void closeFifo()
 {
-    \rstruct stat st;
-    \r\rif (fd.input >= 0) {
-       \rclose(fd.input);
-       \rfd.input = -1;
-    \r}
-    \r\rif (fd.created && (stat(fd.path, &st) == 0))
-       \rremoveFifo(fd);
-\r}
-\r\rstatic int makeFifo() \r
+    struct stat st;
+    if (fd.input >= 0) {
+       close(fd.input);
+       fd.input = -1;
+    }
+    if (fd.created && (stat(fd.path, &st) == 0))
+       removeFifo(fd);
+}
+
+static int makeFifo()
 {
-    \rif (mkfifo(fd.path, 0666) < 0) {
-       \rerror("Couldn't create FIFO \"%s\": %s\n", fd.path, strerror(errno));
-       \rreturn -1;
-    \r}
-    \r\rfd.created = 1;
-    \r\rreturn 0;
-\r}
-\r\r\rstatic int checkFifo() \r
+    if (mkfifo(fd.path, 0666) < 0) {
+       error("Couldn't create FIFO \"%s\": %s\n", fd.path, strerror(errno));
+       return -1;
+    }
+    fd.created = 1;
+    return 0;
+}
+
+
+static int checkFifo()
 {
-    \rstruct stat st;
-    \rif (stat(fd.path, &st) < 0) {
-       \rif (errno == ENOENT) {
-           \r
-               /* Path doesn't exist */ \r
-               return makeFifo(fd);
-       \r}
-       \r\rerror("Failed to stat FIFO \"%s\": %s\n", fd.path, strerror(errno));
-       \rreturn -1;
-    \r}
-    \r\rif (!S_ISFIFO(st.st_mode)) {
-       \rerror("\"%s\" already exists, but is not a FIFO\n", fd.path);
-       \rreturn -1;
-    \r}
-    \r\rreturn 0;
-\r}
-\r\rstatic int openFifo() \r
+    struct stat st;
+    if (stat(fd.path, &st) < 0) {
+       if (errno == ENOENT) {
+
+           /* Path doesn't exist */
+           return makeFifo(fd);
+       }
+       error("Failed to stat FIFO \"%s\": %s\n", fd.path, strerror(errno));
+       return -1;
+    }
+    if (!S_ISFIFO(st.st_mode)) {
+       error("\"%s\" already exists, but is not a FIFO\n", fd.path);
+       return -1;
+    }
+    return 0;
+}
+
+
+static int openFifo()
 {
-    \rif (checkFifo() < 0)
-       \rreturn -1;
-    \r\rfd.input = open(fd.path, O_RDONLY | O_NONBLOCK);
-    \rif (fd.input < 0) {
-       \rerror("Could not open FIFO \"%s\" for reading: %s\n", fd.path, strerror(errno));
-       \rcloseFifo();
-       \rreturn -1;
-    \r}
-    \r\rreturn 0;
-\r}
-\r\rstatic void fiforead(RESULT * result) \r
+    if (checkFifo() < 0)
+       return -1;
+    fd.input = open(fd.path, O_RDONLY | O_NONBLOCK);
+    if (fd.input < 0) {
+       error("Could not open FIFO \"%s\" for reading: %s\n", fd.path, strerror(errno));
+       closeFifo();
+       return -1;
+    }
+    return 0;
+}
+
+
+static void fiforead(RESULT * result)
 {
-    \rchar buf[FIFO_BUFFER_SIZE];
-    \rint i, bytes = 1;
-    \rmemset(buf, 0, FIFO_BUFFER_SIZE);
-    \r\rstrcat(buf, "ERROR");
-    \rif (checkFifo() == 0) {
-       \rmemset(buf, 0, FIFO_BUFFER_SIZE);
-       \rwhile (bytes > 0 && errno != EINTR)
-           \rbytes = read(fd.input, buf, FIFO_BUFFER_SIZE);
-       \r\rif (bytes < 0) {
-           \rerror("[FIFO] Error %i: %s\n", errno, strerror(errno));
-       \r} else {
-           \r\rif (strlen(buf) > 0) {
-               \rstrcpy(msg, buf);
-           \r}
-           \r\rfor (i = 0; i < strlen(buf); i++) {
-               \rif (msg[i] < 0x20)
-                   \rmsg[i] = ' ';
-           \r}
-       \r}
-    \r}
-    \r\r
-       /* store result */ \r
-       SetResult(&result, R_STRING, msg);
-\r}
-
-\r\r
-/* plugin initialization */ \r
-int plugin_init_fifo(void) \r
+    char buf[FIFO_BUFFER_SIZE];
+    int i, bytes = 1;
+    memset(buf, 0, FIFO_BUFFER_SIZE);
+    strcat(buf, "ERROR");
+    if (checkFifo() == 0) {
+       memset(buf, 0, FIFO_BUFFER_SIZE);
+       while (bytes > 0 && errno != EINTR)
+           bytes = read(fd.input, buf, FIFO_BUFFER_SIZE);
+       if (bytes < 0) {
+           error("[FIFO] Error %i: %s\n", errno, strerror(errno));
+       } else {
+           if (strlen(buf) > 0) {
+               strcpy(msg, buf);
+           }
+           for (i = 0; i < strlen(buf); i++) {
+               if (msg[i] < 0x20)
+                   msg[i] = ' ';
+           }
+       }
+    }
+
+    /* store result */
+    SetResult(&result, R_STRING, msg);
+}
+
+
+/* plugin initialization */
+int plugin_init_fifo(void)
 {
-    \rconfigure_fifo();
-    \r\rfd.path = fifopath;
-    \rfd.input = -1;
-    \rfd.created = 0;
-    \r\rif (openFifo() < 0) {
-       \rreturn -1;
-    \r}
-    \r\rmemset(msg, 0, FIFO_BUFFER_SIZE);
-    \rAddFunction("fifo::read", 0, fiforead);
-    \r\rreturn 0;
-\r}
-\r\rvoid plugin_exit_fifo(void) \r
+    configure_fifo();
+    fd.path = fifopath;
+    fd.input = -1;
+    fd.created = 0;
+    if (openFifo() < 0) {
+       return -1;
+    }
+    memset(msg, 0, FIFO_BUFFER_SIZE);
+    AddFunction("fifo::read", 0, fiforead);
+    return 0;
+}
+
+
+void plugin_exit_fifo(void)
 {
-    \r
-       /* close filedescriptors */ \r
-       closeFifo();
-\r\r
+
+    /* close filedescriptors */
+    closeFifo();
+}