aboutsummaryrefslogtreecommitdiff
path: root/src/testcurl/gauger.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/testcurl/gauger.h')
-rw-r--r--src/testcurl/gauger.h86
1 files changed, 86 insertions, 0 deletions
diff --git a/src/testcurl/gauger.h b/src/testcurl/gauger.h
new file mode 100644
index 00000000..3a0dd220
--- /dev/null
+++ b/src/testcurl/gauger.h
@@ -0,0 +1,86 @@
1/** ---------------------------------------------------------------------------
2 * This software is in the public domain, furnished "as is", without technical
3 * support, and with no warranty, express or implied, as to its usefulness for
4 * any purpose.
5 *
6 * gauger.h
7 * Interface for C programs to log remotely to a gauger server
8 *
9 * Author: Bartlomiej Polot
10 * -------------------------------------------------------------------------*/
11#ifndef __GAUGER_H__
12#define __GAUGER_H__
13
14#ifndef WINDOWS
15
16#include <unistd.h>
17#include <stdio.h>
18#include <sys/wait.h>
19
20#define GAUGER(category, counter, value, unit)\
21{\
22 const char * __gauger_v[10]; \
23 char __gauger_s[32];\
24 pid_t __gauger_p;\
25 if(!(__gauger_p=fork())){\
26 if(!fork()){ \
27 sprintf(__gauger_s,"%Lf", (long double) (value));\
28 __gauger_v[0] = "gauger";\
29 __gauger_v[1] = "-n";\
30 __gauger_v[2] = counter; \
31 __gauger_v[3] = "-d";\
32 __gauger_v[4] = __gauger_s;\
33 __gauger_v[5] = "-u";\
34 __gauger_v[6] = unit; \
35 __gauger_v[7] = "-c";\
36 __gauger_v[8] = category; \
37 __gauger_v[9] = (char *)NULL;\
38 execvp("gauger", (char*const*) __gauger_v); \
39 _exit(1);\
40 }else{\
41 _exit(0);\
42 }\
43 }else{\
44 waitpid(__gauger_p,NULL,0);\
45 }\
46}
47
48#define GAUGER_ID(category, counter, value, unit, id)\
49{\
50 char* __gauger_v[12];\
51 char __gauger_s[32];\
52 pid_t __gauger_p;\
53 if(!(__gauger_p=fork())){\
54 if(!fork()){\
55 sprintf(__gauger_s,"%Lf", (long double) (value));\
56 __gauger_v[0] = "gauger";\
57 __gauger_v[1] = "-n";\
58 __gauger_v[2] = counter;\
59 __gauger_v[3] = "-d";\
60 __gauger_v[4] = __gauger_s;\
61 __gauger_v[5] = "-u";\
62 __gauger_v[6] = unit;\
63 __gauger_v[7] = "-i";\
64 __gauger_v[8] = id;\
65 __gauger_v[9] = "-c";\
66 __gauger_v[10] = category;\
67 __gauger_v[11] = (char *)NULL;\
68 execvp("gauger",__gauger_v);\
69 perror("gauger");\
70 _exit(1);\
71 }else{\
72 _exit(0);\
73 }\
74 }else{\
75 waitpid(__gauger_p,NULL,0);\
76 }\
77}
78
79#else
80
81#define GAUGER_ID(category, counter, value, unit, id) {}
82#define GAUGER(category, counter, value, unit) {}
83
84#endif // WINDOWS
85
86#endif