check
[oweals/gnunet.git] / src / include / gauger.h
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     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-cli.py";\
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-cli.py",__gauger_v);\
39             perror("gauger");\
40             _exit(1);\
41         }else{\
42             _exit(0);\
43         }\
44     }else{\
45         waitpid(__gauger_p,NULL,0);\
46     }\
47 }
48
49 #define GAUGER_ID(category, counter, value, unit, id)\
50 {\
51     char* __gauger_v[12];\
52     char __gauger_s[32];\
53     pid_t __gauger_p;\
54     if(!(__gauger_p=fork())){\
55         if(!fork()){\
56             sprintf(__gauger_s,"%Lf", (long double) (value));\
57             __gauger_v[0] = "gauger-cli.py";\
58             __gauger_v[1] = "-n";\
59             __gauger_v[2] = counter;\
60             __gauger_v[3] = "-d";\
61             __gauger_v[4] = __gauger_s;\
62             __gauger_v[5] = "-u";\
63             __gauger_v[6] = unit;\
64             __gauger_v[7] = "-i";\
65             __gauger_v[8] = id;\
66             __gauger_v[9] = "-c";\
67             __gauger_v[10] = category;\
68             __gauger_v[11] = (char *)NULL;\
69             execvp("gauger-cli.py",__gauger_v);\
70             perror("gauger");\
71             _exit(1);\
72         }else{\
73             _exit(0);\
74         }\
75     }else{\
76         waitpid(__gauger_p,NULL,0);\
77     }\
78 }
79
80 #else
81
82 #define GAUGER_ID(category, counter, value, unit, id) {}
83 #define GAUGER(category, counter, value, unit) {}
84
85 #endif // WINDOWS
86
87 #endif