aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/include/Makefile.am2
-rw-r--r--src/include/gauger.h108
2 files changed, 110 insertions, 0 deletions
diff --git a/src/include/Makefile.am b/src/include/Makefile.am
index 9c3ee9071..1007c1d42 100644
--- a/src/include/Makefile.am
+++ b/src/include/Makefile.am
@@ -23,3 +23,5 @@ talerinclude_HEADERS = \
taler_signatures.h
endif
+
+EXTRA_DIST = gauger.h
diff --git a/src/include/gauger.h b/src/include/gauger.h
new file mode 100644
index 000000000..9fa34b9bb
--- /dev/null
+++ b/src/include/gauger.h
@@ -0,0 +1,108 @@
+/** ---------------------------------------------------------------------------
+ * This software is in the public domain, furnished "as is", without technical
+ * support, and with no warranty, express or implied, as to its usefulness for
+ * any purpose.
+ *
+ * gauger.h
+ * Interface for C programs to log remotely to a gauger server
+ *
+ * Author: Bartlomiej Polot
+ * -------------------------------------------------------------------------*/
+#ifndef __GAUGER_H__
+#define __GAUGER_H__
+
+#ifndef WINDOWS
+
+#include <unistd.h>
+#include <stdio.h>
+#include <sys/wait.h>
+
+#define GAUGER(category, counter, value, unit)\
+{\
+ const char * __gauger_v[10]; \
+ char __gauger_s[32];\
+ pid_t __gauger_p;\
+ if(!(__gauger_p=fork())){\
+ if(!fork()){\
+ sprintf(__gauger_s,"%Lf", (long double) (value));\
+ __gauger_v[0] = "gauger";\
+ __gauger_v[1] = "-n";\
+ __gauger_v[2] = (char *) counter; \
+ __gauger_v[3] = "-d";\
+ __gauger_v[4] = __gauger_s;\
+ __gauger_v[5] = "-u";\
+ __gauger_v[6] = (char *) unit; \
+ __gauger_v[7] = "-c";\
+ __gauger_v[8] = (char *) category; \
+ __gauger_v[9] = (char *) NULL;\
+ execvp("gauger", (char*const*) __gauger_v); \
+ perror("gauger");\
+ _exit(1);\
+ }else{\
+ _exit(0);\
+ }\
+ }else{\
+ waitpid(__gauger_p,NULL,0);\
+ }\
+}
+
+#define GAUGER_ID(category, counter, value, unit, id)\
+{\
+ char* __gauger_v[12];\
+ char __gauger_s[32];\
+ pid_t __gauger_p;\
+ if(!(__gauger_p=fork())){\
+ if(!fork()){\
+ sprintf(__gauger_s,"%Lf", (long double) (value));\
+ __gauger_v[0] = "gauger";\
+ __gauger_v[1] = "-n";\
+ __gauger_v[2] = (char *) counter; \
+ __gauger_v[3] = "-d";\
+ __gauger_v[4] = __gauger_s;\
+ __gauger_v[5] = "-u";\
+ __gauger_v[6] = (char *) unit; \
+ __gauger_v[7] = "-i";\
+ __gauger_v[8] = id;\
+ __gauger_v[9] = "-c";\
+ __gauger_v[10] = (char *) category; \
+ __gauger_v[11] = (char *) NULL;\
+ execvp("gauger",__gauger_v);\
+ perror("gauger");\
+ _exit(1);\
+ }else{\
+ _exit(0);\
+ }\
+ }else{\
+ waitpid(__gauger_p,NULL,0);\
+ }\
+}
+
+#else /* WINDOWS */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <windef.h>
+
+#define GAUGER(category, counter, value, unit)\
+{\
+ char __gauger_commandline[MAX_PATH];\
+ \
+ snprintf (__gauger_commandline, MAX_PATH, "gauger.py -n \"%s\" -d \"%Lf\" -u \"%s\" -c \"%s\"",\
+ counter, (long double) (value), unit, category);\
+ __gauger_commandline[MAX_PATH - 1] = '\0';\
+ system (__gauger_commandline);\
+}
+
+#define GAUGER_ID(category, counter, value, unit, id)\
+{\
+ char __gauger_commandline[MAX_PATH];\
+ \
+ snprintf (__gauger_commandline, MAX_PATH, "gauger.py -n \"%s\" -d \"%Lf\" -u \"%s\" -i \"%s\" -c \"%s\"",\
+ counter, (long double) (value), unit, id, category);\
+ __gauger_commandline[MAX_PATH - 1] = '\0';\
+ system (__gauger_commandline);\
+}
+
+#endif // WINDOWS
+
+#endif