| /** --------------------------------------------------------------------------- |
| * 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] = counter; \ |
| __gauger_v[3] = "-d";\ |
| __gauger_v[4] = __gauger_s;\ |
| __gauger_v[5] = "-u";\ |
| __gauger_v[6] = unit; \ |
| __gauger_v[7] = "-c";\ |
| __gauger_v[8] = category; \ |
| __gauger_v[9] = (char *)NULL;\ |
| execvp("gauger", (char*const*) __gauger_v); \ |
| _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] = counter;\ |
| __gauger_v[3] = "-d";\ |
| __gauger_v[4] = __gauger_s;\ |
| __gauger_v[5] = "-u";\ |
| __gauger_v[6] = unit;\ |
| __gauger_v[7] = "-i";\ |
| __gauger_v[8] = id;\ |
| __gauger_v[9] = "-c";\ |
| __gauger_v[10] = category;\ |
| __gauger_v[11] = (char *)NULL;\ |
| execvp("gauger",__gauger_v);\ |
| perror("gauger");\ |
| _exit(1);\ |
| }else{\ |
| _exit(0);\ |
| }\ |
| }else{\ |
| waitpid(__gauger_p,NULL,0);\ |
| }\ |
| } |
| |
| #else |
| |
| #define GAUGER_ID(category, counter, value, unit, id) {} |
| #define GAUGER(category, counter, value, unit) {} |
| |
| #endif // WINDOWS |
| |
| #endif |