aboutsummaryrefslogtreecommitdiffstats
path: root/plugin_uptime.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugin_uptime.c')
-rw-r--r--plugin_uptime.c315
1 files changed, 162 insertions, 153 deletions
diff --git a/plugin_uptime.c b/plugin_uptime.c
index 90969d4..f15d86b 100644
--- a/plugin_uptime.c
+++ b/plugin_uptime.c
@@ -1,4 +1,4 @@
-/* $Id: plugin_uptime.c,v 1.5 2005/01/18 06:30:23 reinelt Exp $
+/* $Id: plugin_uptime.c,v 1.6 2005/05/08 04:32:45 reinelt Exp $
*
* plugin for uptime
*
@@ -23,6 +23,9 @@
*
*
* $Log: plugin_uptime.c,v $
+ * Revision 1.6 2005/05/08 04:32:45 reinelt
+ * CodingStyle added and applied
+ *
* Revision 1.5 2005/01/18 06:30:23 reinelt
* added (C) to all copyright statements
*
@@ -73,182 +76,188 @@
static int fd = -2;
-static char *itoa(char* buffer, const size_t size, unsigned int value)
+static char *itoa(char *buffer, const size_t size, unsigned int value)
{
- char *p;
-
- /* sanity checks */
- if (buffer==NULL || size<2) return (NULL);
-
- /* p points to last char */
- p = buffer+size-1;
-
- /* set terminating zero */
- *p='\0';
-
- do {
- *--p = value%10 + '0';
- value = value/10;
- } while (value!=0 && p>buffer);
-
- return p;
-}
-
-
-char *struptime (const unsigned int uptime, const char *format)
+ char *p;
+
+ /* sanity checks */
+ if (buffer == NULL || size < 2)
+ return (NULL);
+
+ /* p points to last char */
+ p = buffer + size - 1;
+
+ /* set terminating zero */
+ *p = '\0';
+
+ do {
+ *--p = value % 10 + '0';
+ value = value / 10;
+ } while (value != 0 && p > buffer);
+
+ return p;
+}
+
+
+char *struptime(const unsigned int uptime, const char *format)
{
- static char string[256];
- const char *src;
- char *dst;
- int len, size;
-
- src = format;
- dst = string;
- len = 0;
-
- /* leave room for terminating zero */
- size = sizeof(string) - 1;
-
- while (len < size) {
-
- if (*src == '%') {
- src++;
-
- if (strchr ("sSmMhHd", *src) != NULL) {
- char buffer[12], *s;
- unsigned int value = 0;
- int leading_zero = 0;
- switch (*src++) {
- case 's':
- value = uptime;
- break;
- case 'S':
- value = uptime % 60;
- leading_zero = 1;
- break;
- case 'm':
- value = uptime / 60;
- break;
- case 'M':
- value = (uptime / 60) % 60;
- leading_zero = 1;
- break;
- case 'h':
- value = uptime / 60 / 60;
- break;
- case 'H':
- value = (uptime / 60 / 60) % 24;
- leading_zero = 1;
- break;
- case 'd':
- value = uptime / 60 / 60 / 24;
- break;
- }
-
- if (leading_zero && value < 10) {
- len++;
- *dst++ = '0';
- }
+ static char string[256];
+ const char *src;
+ char *dst;
+ int len, size;
- s = itoa (buffer, sizeof(buffer), value);
- while (len < size && *s != '\0') {
- len++;
- *dst++ = *s++;
- }
+ src = format;
+ dst = string;
+ len = 0;
- } else if (*src == '%') {
- len++;
- *dst++ = '%';
+ /* leave room for terminating zero */
+ size = sizeof(string) - 1;
- } else {
- len += 2;
- *dst++ = '%';
- *dst++ = *src++;
- }
+ while (len < size) {
- } else {
- len++;
- *dst++ = *src;
- if (*src++ == '\0') break;
+ if (*src == '%') {
+ src++;
+
+ if (strchr("sSmMhHd", *src) != NULL) {
+ char buffer[12], *s;
+ unsigned int value = 0;
+ int leading_zero = 0;
+ switch (*src++) {
+ case 's':
+ value = uptime;
+ break;
+ case 'S':
+ value = uptime % 60;
+ leading_zero = 1;
+ break;
+ case 'm':
+ value = uptime / 60;
+ break;
+ case 'M':
+ value = (uptime / 60) % 60;
+ leading_zero = 1;
+ break;
+ case 'h':
+ value = uptime / 60 / 60;
+ break;
+ case 'H':
+ value = (uptime / 60 / 60) % 24;
+ leading_zero = 1;
+ break;
+ case 'd':
+ value = uptime / 60 / 60 / 24;
+ break;
+ }
+
+ if (leading_zero && value < 10) {
+ len++;
+ *dst++ = '0';
+ }
+
+ s = itoa(buffer, sizeof(buffer), value);
+ while (len < size && *s != '\0') {
+ len++;
+ *dst++ = *s++;
+ }
+
+ } else if (*src == '%') {
+ len++;
+ *dst++ = '%';
+
+ } else {
+ len += 2;
+ *dst++ = '%';
+ *dst++ = *src++;
+ }
+
+ } else {
+ len++;
+ *dst++ = *src;
+ if (*src++ == '\0')
+ break;
+ }
}
- }
-
- /* enforce terminating zero */
- if (len >= size && *(dst-1) != '\0') {
- len++;
- *dst = '\0';
- }
-
- return string;
+
+ /* enforce terminating zero */
+ if (len >= size && *(dst - 1) != '\0') {
+ len++;
+ *dst = '\0';
+ }
+
+ return string;
}
-double getuptime (void)
+double getuptime(void)
{
- char buffer[36];
- int i;
-
- if (fd == -2) fd = open ("/proc/uptime", O_RDONLY);
- if (fd < 0) return -1;
+ char buffer[36];
+ int i;
- lseek(fd, 0, SEEK_SET);
+ if (fd == -2)
+ fd = open("/proc/uptime", O_RDONLY);
+ if (fd < 0)
+ return -1;
- i = read (fd, buffer, sizeof(buffer) - 1);
- if (i < 0) return -1;
+ lseek(fd, 0, SEEK_SET);
- buffer[i-1] = '\0';
-
- /* ignore the 2nd value from /proc/uptime */
- return strtod(buffer, NULL);
+ i = read(fd, buffer, sizeof(buffer) - 1);
+ if (i < 0)
+ return -1;
+
+ buffer[i - 1] = '\0';
+
+ /* ignore the 2nd value from /proc/uptime */
+ return strtod(buffer, NULL);
}
-static void my_uptime (RESULT *result, const int argc, RESULT *argv[])
+static void my_uptime(RESULT * result, const int argc, RESULT * argv[])
{
- int age;
- static double uptime = 0.0;
- static struct timeval last_value;
- struct timeval now;
-
- if (argc>1) {
- error ("uptime(): wrong number of parameters");
- SetResult(&result, R_STRING, "");
- return;
- }
-
- gettimeofday(&now,NULL);
-
- age = (now.tv_sec - last_value.tv_sec)*1000 + (now.tv_usec - last_value.tv_usec)/1000;
- /* reread every 100 msec only */
- if (fd == -2 || age == 0 || age > 100) {
- uptime = getuptime();
- if (uptime < 0.0) {
- error ("parse(/proc/uptime) failed!");
- SetResult(&result, R_STRING, "");
- return;
+ int age;
+ static double uptime = 0.0;
+ static struct timeval last_value;
+ struct timeval now;
+
+ if (argc > 1) {
+ error("uptime(): wrong number of parameters");
+ SetResult(&result, R_STRING, "");
+ return;
}
- last_value = now;
- }
-
- if (argc == 0) {
- SetResult (&result, R_NUMBER, &uptime);
- } else {
- SetResult (&result, R_STRING, struptime(uptime, R2S(argv[0])));
- }
-
- return;
-
+ gettimeofday(&now, NULL);
+
+ age = (now.tv_sec - last_value.tv_sec) * 1000 + (now.tv_usec - last_value.tv_usec) / 1000;
+ /* reread every 100 msec only */
+ if (fd == -2 || age == 0 || age > 100) {
+ uptime = getuptime();
+ if (uptime < 0.0) {
+ error("parse(/proc/uptime) failed!");
+ SetResult(&result, R_STRING, "");
+ return;
+ }
+
+ last_value = now;
+ }
+
+ if (argc == 0) {
+ SetResult(&result, R_NUMBER, &uptime);
+ } else {
+ SetResult(&result, R_STRING, struptime(uptime, R2S(argv[0])));
+ }
+
+ return;
+
}
-int plugin_init_uptime (void)
+int plugin_init_uptime(void)
{
- AddFunction ("uptime", -1, my_uptime);
- return 0;
+ AddFunction("uptime", -1, my_uptime);
+ return 0;
}
-void plugin_exit_uptime(void)
+void plugin_exit_uptime(void)
{
- if (fd > 0) close(fd);
- fd = -2;
+ if (fd > 0)
+ close(fd);
+ fd = -2;
}