ctype is required
[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 #include <unistd.h>
15 #include <stdio.h>
16 #include <sys/wait.h>
17
18 #define GAUGER(category, counter, value, unit)\
19 {\
20     char* __gauger_v[10];\
21     char __gauger_s[32];\
22     pid_t __gauger_p;\
23     if(!(__gauger_p=fork())){\
24         if(!fork()){\
25             sprintf(__gauger_s,"%Lf", (long double) (value));\
26             __gauger_v[0] = "gauger-cli.py";\
27             __gauger_v[1] = "-n";\
28             __gauger_v[2] = counter;\
29             __gauger_v[3] = "-d";\
30             __gauger_v[4] = __gauger_s;\
31             __gauger_v[5] = "-u";\
32             __gauger_v[6] = unit;\
33             __gauger_v[7] = "-c";\
34             __gauger_v[8] = category;\
35             __gauger_v[9] = (char *)NULL;\
36             execvp("gauger-cli.py",__gauger_v);\
37             perror("gauger");\
38             _exit(1);\
39         }else{\
40             _exit(0);\
41         }\
42     }else{\
43         waitpid(__gauger_p,NULL,0);\
44     }\
45 }
46
47 #define GAUGER_ID(category, counter, value, unit, id)\
48 {\
49     char* __gauger_v[12];\
50     char __gauger_s[32];\
51     pid_t __gauger_p;\
52     if(!(__gauger_p=fork())){\
53         if(!fork()){\
54             sprintf(__gauger_s,"%Lf", (long double) (value));\
55             __gauger_v[0] = "gauger-cli.py";\
56             __gauger_v[1] = "-n";\
57             __gauger_v[2] = counter;\
58             __gauger_v[3] = "-d";\
59             __gauger_v[4] = __gauger_s;\
60             __gauger_v[5] = "-u";\
61             __gauger_v[6] = unit;\
62             __gauger_v[7] = "-i";\
63             __gauger_v[8] = id;\
64             __gauger_v[9] = "-c";\
65             __gauger_v[10] = category;\
66             __gauger_v[11] = (char *)NULL;\
67             execvp("gauger-cli.py",__gauger_v);\
68             perror("gauger");\
69             _exit(1);\
70         }else{\
71             _exit(0);\
72         }\
73     }else{\
74         waitpid(__gauger_p,NULL,0);\
75     }\
76 }
77
78 #endif