2
0

gauger.h 2.3 KB

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