ps_status.h
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:2k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. /*-------------------------------------------------------------------------
  2.  *
  3.  * ps_status.h
  4.  *
  5.  * Defines macros to show backend status on the ps status line.
  6.  * Unfortunately this is system dpendent.
  7.  *
  8.  *-------------------------------------------------------------------------
  9.  */
  10. #ifndef PS_STATUS_H
  11. #define PS_STATUS_H
  12. #ifdef linux
  13. #include <stdio.h>
  14. #include <string.h>
  15. #include "utils/trace.h"
  16. extern char *ps_status_buffer;
  17. #define PS_DEFINE_BUFFER 
  18. char *ps_status_buffer = NULL
  19. #define PS_INIT_STATUS(argc, argv, execname, username, hostname, dbname) 
  20. int i; 
  21. for (i = 0; i < (argc); i++) { 
  22. memset((argv)[i], 0, strlen((argv)[i])); 
  23. ps_status_buffer = (argv)[0]; 
  24. sprintf(ps_status_buffer, "%s %s %s %s ", execname, username, hostname, dbname); 
  25. ps_status_buffer += strlen(ps_status_buffer); 
  26. ps_status_buffer[0] = ''; 
  27. }
  28. #define PS_CLEAR_STATUS() 
  29. { if (ps_status_buffer) memset(ps_status_buffer, 0, strlen(ps_status_buffer)); }
  30. #define PS_SET_STATUS(status) 
  31. if (ps_status_buffer) 
  32. PS_CLEAR_STATUS(); 
  33. strcpy(ps_status_buffer, status); 
  34. }
  35. #define PS_STATUS (ps_status_buffer ? ps_status_buffer : "")
  36. #else /* !linux */
  37. extern const char **ps_status;
  38. #define PS_DEFINE_BUFFER 
  39. const char **ps_status = NULL
  40. #define PS_INIT_STATUS(argc, argv, execname, username, hostname, dbname) 
  41. int i; 
  42. Assert(argc >= 5); 
  43. argv[0] = execname; 
  44. argv[1] = hostname; 
  45. argv[2] = username; 
  46. argv[3] = dbname; 
  47. ps_status = (const char **)&argv[4]; 
  48. for (i = 4; i < argc; i++) 
  49. argv[i] = "";  /* blank them */ 
  50. }
  51. #define PS_CLEAR_STATUS() 
  52. { if (ps_status) *ps_status = ""; }
  53. #define PS_SET_STATUS(status) 
  54. { if (ps_status) *ps_status = (status); }
  55. #define PS_STATUS (ps_status ? *ps_status : "")
  56. #endif
  57. #ifdef DONT_HAVE_PS_STATUS
  58. #define PS_DEFINE_BUFFER
  59. #define PS_INIT_STATUS(argc, argv, execname, username, hostname, dbname)
  60. #define PS_CLEAR_STATUS()
  61. #define PS_SET_STATUS(status) { if ((status)); }
  62. #define PS_STATUS ""
  63. #endif  /* !linux */
  64. #endif  /* PS_STATUS_H */