summaryrefslogtreecommitdiffstats
path: root/oncology/dpfhack_display/lcd4linux/.svn/text-base/plugin_isdn.c.svn-base
diff options
context:
space:
mode:
authorroot <root@krebs>2011-08-20 23:33:40 +0200
committerroot <root@krebs>2011-08-20 23:33:40 +0200
commit6b2cd5bb85d257f432923e22178c0559fe9656aa (patch)
tree46f16983868954dd5aec208cdbcfc8466d87eef3 /oncology/dpfhack_display/lcd4linux/.svn/text-base/plugin_isdn.c.svn-base
parenta130ff747711005511c33f4c0714550f32e707f2 (diff)
lcd4linux: removed trash
Diffstat (limited to 'oncology/dpfhack_display/lcd4linux/.svn/text-base/plugin_isdn.c.svn-base')
-rw-r--r--oncology/dpfhack_display/lcd4linux/.svn/text-base/plugin_isdn.c.svn-base254
1 files changed, 0 insertions, 254 deletions
diff --git a/oncology/dpfhack_display/lcd4linux/.svn/text-base/plugin_isdn.c.svn-base b/oncology/dpfhack_display/lcd4linux/.svn/text-base/plugin_isdn.c.svn-base
deleted file mode 100644
index f117f047..00000000
--- a/oncology/dpfhack_display/lcd4linux/.svn/text-base/plugin_isdn.c.svn-base
+++ /dev/null
@@ -1,254 +0,0 @@
-/* $Id$
- * $URL$
- *
- * plugin for ISDN subsystem
- *
- * Copyright (C) 2003 Michael Reinelt <michael@reinelt.co.at>
- * Copyright (C) 2004 The LCD4Linux Team <lcd4linux-devel@users.sourceforge.net>
- *
- * Based on the old isdn client (isdn.c) which is
- * Copyright (C) 1999, 2000 Michael Reinelt <michael@reinelt.co.at>
- *
- * 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.
- *
- */
-
-/*
- * exported functions:
- *
- * int plugin_init_isdn (void)
- * adds functions to access ISDN information
- *
- */
-
-
-#include "config.h"
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <sys/ioctl.h>
-#include <sys/types.h>
-
-#ifdef HAVE_LINUX_ISDN_H
-#include <linux/isdn.h>
-#else
-#warning isdn.h not found. CPS support deactivated.
-#endif
-
-#include "debug.h"
-#include "plugin.h"
-#include "qprintf.h"
-#include "hash.h"
-
-
-typedef struct {
- unsigned long in;
- unsigned long out;
-} CPS;
-
-
-static HASH ISDN_INFO;
-static HASH ISDN_CPS;
-
-
-static void hash_put_info(const char *name, const int channel, const char *val)
-{
- char key[16];
-
- qprintf(key, sizeof(key), "%s[%d]", name, channel);
- hash_put(&ISDN_INFO, key, val);
-}
-
-static int parse_isdninfo(void)
-{
- int age;
- FILE *stream;
- long flags;
-
- /* reread every 10 msec only */
- age = hash_age(&ISDN_INFO, NULL);
- if (age > 0 && age <= 10)
- return 0;
-
- /* open file */
- stream = fopen("/dev/isdninfo", "r");
- if (stream == NULL) {
- error("open(/dev/isdninfo) failed: %s", strerror(errno));
- return -1;
- }
-
- /* get flags */
- flags = fcntl(fileno(stream), F_GETFL);
- if (flags < 0) {
- error("fcntl(/dev/isdninfo, F_GETFL) failed: %s", strerror(errno));
- return -1;
- }
-
- /* set O_NONBLOCK */
- if (fcntl(fileno(stream), F_SETFL, flags | O_NONBLOCK) < 0) {
- error("fcntl(/dev/isdninfo, F_SETFL, O_NONBLOCK) failed: %s", strerror(errno));
- return -1;
- }
-
- while (!feof(stream)) {
- char buffer[4096];
- char *beg, *end;
- if (fgets(buffer, sizeof(buffer), stream) == NULL)
- break;
- beg = strchr(buffer, ':');
- if (beg != NULL) {
- char delim[] = " \t\n";
- int i = 0;
- *beg++ = '\0';
- while (*beg && strchr(delim, *beg))
- beg++;
- while (beg && *beg) {
- if ((end = strpbrk(beg, delim)))
- *end = '\0';
- hash_put_info(buffer, i, beg);
- beg = end ? end + 1 : NULL;
- while (*beg && strchr(delim, *beg))
- beg++;
- i++;
- }
- } else {
- error("Huh? no colon found in <%s>", buffer);
- }
- }
-
- fclose(stream);
-
- return 0;
-}
-
-
-static void my_isdn_info(RESULT * result, RESULT * arg1, RESULT * arg2)
-{
- char key[16], *val;
-
- if (parse_isdninfo() < 0) {
- SetResult(&result, R_STRING, "");
- return;
- }
-
- qprintf(key, sizeof(key), "%s[%d]", R2S(arg1), (int) R2N(arg2));
- val = hash_get(&ISDN_INFO, key, NULL);
- if (val == NULL)
- val = "";
- SetResult(&result, R_STRING, val);
-}
-
-
-#ifdef HAVE_LINUX_ISDN_H
-
-static void hash_put_cps(const int channel, const CPS * cps)
-{
- char key[16], val[16];
-
- qprintf(key, sizeof(key), channel < 0 ? "i" : "i%d", channel);
- qprintf(val, sizeof(val), "%u", cps->in);
- hash_put_delta(&ISDN_CPS, key, val);
-
- qprintf(key, sizeof(key), channel < 0 ? "o" : "o%d", channel);
- qprintf(val, sizeof(val), "%u", cps->out);
- hash_put_delta(&ISDN_CPS, key, val);
-}
-
-
-static int get_cps(void)
-{
- int age, i;
- static int fd = -2;
- CPS cps[ISDN_MAX_CHANNELS];
- CPS sum;
-
- /* reread every 10 msec only */
- age = hash_age(&ISDN_CPS, NULL);
- if (age > 0 && age <= 10)
- return 0;
-
- if (fd == -1)
- return -1;
-
- if (fd == -2) {
- fd = open("/dev/isdninfo", O_RDONLY | O_NDELAY);
- if (fd == -1) {
- error("open(/dev/isdninfo) failed: %s", strerror(errno));
- return -1;
- }
- }
-
- if (ioctl(fd, IIOCGETCPS, &cps)) {
- error("ioctl(IIOCGETCPS) failed: %s", strerror(errno));
- fd = -1;
- return -1;
- }
-
- sum.in = 0;
- sum.out = 0;
- for (i = 0; i < ISDN_MAX_CHANNELS; i++) {
- sum.in += cps[i].in;
- sum.out += cps[i].out;
- hash_put_cps(i, &cps[i]);
- }
- hash_put_cps(-1, &sum);
-
- return 0;
-}
-
-
-static void my_isdn_cps(RESULT * result, RESULT * arg1, RESULT * arg2)
-{
- double value;
-
- if (get_cps() < 0) {
- SetResult(&result, R_STRING, "");
- return;
- }
-
- value = hash_get_delta(&ISDN_CPS, R2S(arg1), NULL, R2N(arg2));
- SetResult(&result, R_NUMBER, &value);
-
-}
-
-#endif
-
-
-int plugin_init_isdn(void)
-{
- hash_create(&ISDN_INFO);
- hash_create(&ISDN_CPS);
-
- AddFunction("isdn::info", 2, my_isdn_info);
-
-#ifdef HAVE_LINUX_ISDN_H
- AddFunction("isdn::cps", 2, my_isdn_cps);
-#endif
-
- return 0;
-}
-
-
-void plugin_exit_isdn(void)
-{
- hash_destroy(&ISDN_INFO);
- hash_destroy(&ISDN_CPS);
-}