gauger.h 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  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. #ifndef WINDOWS
  14. #include <unistd.h>
  15. #include <stdio.h>
  16. #include <sys/wait.h>
  17. #define GAUGER(category, counter, value, unit)\
  18. {\
  19. char* __gauger_v[10];\
  20. char __gauger_s[32];\
  21. pid_t __gauger_p;\
  22. if(!(__gauger_p=fork())){\
  23. close (1); \
  24. close (2); \
  25. if(!fork()){\
  26. sprintf(__gauger_s,"%Lf", (long double) (value));\
  27. __gauger_v[0] = "gauger";\
  28. __gauger_v[1] = "-n";\
  29. __gauger_v[2] = (char*) (counter); \
  30. __gauger_v[3] = "-d";\
  31. __gauger_v[4] = __gauger_s;\
  32. __gauger_v[5] = "-u";\
  33. __gauger_v[6] = (char*) (unit); \
  34. __gauger_v[7] = "-c";\
  35. __gauger_v[8] = (char*) (category); \
  36. __gauger_v[9] = (char*) NULL;\
  37. execvp("gauger",__gauger_v);\
  38. _exit(1);\
  39. }else{\
  40. _exit(0);\
  41. }\
  42. }else{\
  43. waitpid(__gauger_p,NULL,0);\
  44. }\
  45. }
  46. #define GAUGER_ID(category, counter, value, unit, id)\
  47. {\
  48. char* __gauger_v[12];\
  49. char __gauger_s[32];\
  50. pid_t __gauger_p;\
  51. if(!(__gauger_p=fork())){\
  52. close (1); \
  53. close (2); \
  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] = (char*) (counter); \
  59. __gauger_v[3] = "-d";\
  60. __gauger_v[4] = __gauger_s;\
  61. __gauger_v[5] = "-u";\
  62. __gauger_v[6] = (char*) (unit); \
  63. __gauger_v[7] = "-i";\
  64. __gauger_v[8] = id;\
  65. __gauger_v[9] = "-c";\
  66. __gauger_v[10] = (char *) (category); \
  67. __gauger_v[11] = (char *) NULL;\
  68. execvp("gauger",__gauger_v);\
  69. _exit(1);\
  70. }else{\
  71. _exit(0);\
  72. }\
  73. }else{\
  74. waitpid(__gauger_p, NULL, 0);\
  75. }\
  76. }
  77. #else /* WINDOWS */
  78. #include <stdlib.h>
  79. #include <stdio.h>
  80. #include <windef.h>
  81. #define GAUGER(category, counter, value, unit)\
  82. {\
  83. char __gauger_commandline[MAX_PATH];\
  84. \
  85. snprintf (__gauger_commandline, MAX_PATH, "gauger.py -n \"%s\" -d \"%Lf\" -u \"%s\" -c \"%s\"",\
  86. (counter), (long double) (value), (unit), (category)); \
  87. __gauger_commandline[MAX_PATH - 1] = '\0';\
  88. system (__gauger_commandline);\
  89. }
  90. #define GAUGER_ID(category, counter, value, unit, id)\
  91. {\
  92. char __gauger_commandline[MAX_PATH];\
  93. \
  94. snprintf (__gauger_commandline, MAX_PATH, "gauger.py -n \"%s\" -d \"%Lf\" -u \"%s\" -i \"%s\" -c \"%s\"",\
  95. (counter), (long double) (value), (unit), (id), (category)); \
  96. __gauger_commandline[MAX_PATH - 1] = '\0';\
  97. system (__gauger_commandline);\
  98. }
  99. #endif // WINDOWS
  100. #endif