log_local.c 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #include "log_local.h"
  2. int log_local(char *log_fn, char *msg)
  3. {
  4. FILE *log_fp;
  5. if (log_fn)
  6. log_fp = fopen(log_fn, "a+");
  7. else
  8. log_fp = fopen(LOG_LOCAL_DEFAULT_LOGFILE, "a+");
  9. if (!log_fp)
  10. return -1;
  11. fprintf(log_fp, msg);
  12. fclose(log_fp);
  13. return 0;
  14. }
  15. int log_local_message_record(char *log_fn, char *prefix, struct message_record *msg)
  16. {
  17. int i;
  18. static char *buf = NULL;
  19. if (!buf)
  20. buf = malloc(sizeof(char)*8*8192);
  21. memset(buf, 0, sizeof(char)*8*8192);
  22. sprintf(buf, "%s: header usec_time: %lli,", prefix ? prefix : " ", msg->header.usec_time);
  23. if (log_local(log_fn, buf)<0)
  24. return -1;
  25. sprintf(buf, "%s: header mailbox_name: %s,", prefix ? prefix : " ", msg->header.mailbox_name);
  26. if (log_local(log_fn, buf)<0)
  27. return -1;
  28. sprintf(buf, "%s: header payload_length: %i,", prefix ? prefix : " ", msg->header.payload_length);
  29. if (log_local(log_fn, buf)<0)
  30. return -1;
  31. sprintf(buf, "%s: header sender(pid_t): %i,", prefix ? prefix : " ", (int)msg->header.sender);
  32. if (log_local(log_fn, buf)<0)
  33. return -1;
  34. sprintf(buf, "%s: header from_fd: %i,", prefix ? prefix : " ", (int)msg->header.from_fd);
  35. if (log_local(log_fn, buf)<0)
  36. return -1;
  37. sprintf(buf, "%s: payload(ascii): ", prefix ? prefix : " ");
  38. if (log_local(log_fn, buf)<0)
  39. return -1;
  40. buf[0] = '\0';
  41. for (i=0; i < msg->header.payload_length; i++)
  42. buf[i] = ( isprint(msg->payload[i]) ? msg->payload[i] : '.' );
  43. buf[i] = '\n';
  44. if (log_local(log_fn, buf)<0)
  45. return -1;
  46. sprintf(buf, "%s: payload(hex): ", prefix ? prefix : " ");
  47. if (log_local(log_fn, buf)<0)
  48. return -1;
  49. buf[0] = '\0';
  50. for (i=0; i < msg->header.payload_length; i++)
  51. {
  52. buf[3*i] = ' ';
  53. sprintf(buf + 3*i + 1, "%02x", (unsigned char)(msg->payload[i]) );
  54. }
  55. buf[3*i] = '\n';
  56. if (log_local(log_fn, buf)<0)
  57. return -1;
  58. return 0;
  59. }