comparison util.c @ 541:44f67ec5e945

Improve logging facilities. Private chats in query windows are now logged separately. A log file directory can be set in configuration. Room log files are always of format room_%d.ext. Log file extension can be set, default is ".log".
author Matti Hamalainen <ccr@tnsp.org>
date Sun, 11 Nov 2012 18:32:42 +0200
parents 8a52651bb88d
children 97a49a6cc959
comparison
equal deleted inserted replaced
540:658c188101a6 541:44f67ec5e945
713 void nn_strtuple_free(nn_strtuple_t *tuple) 713 void nn_strtuple_free(nn_strtuple_t *tuple)
714 { 714 {
715 th_free(tuple->str); 715 th_free(tuple->str);
716 th_free(tuple); 716 th_free(tuple);
717 } 717 }
718
719
720 #define VPUTCH(CH) th_vputch(&bufData, &bufSize, &bufLen, CH)
721 #define VPUTS(STR) th_vputs(&bufData, &bufSize, &bufLen, STR)
722
723 char *nn_log_parse_filename(const char *fmt, int id)
724 {
725 size_t bufSize = strlen(fmt) + TH_BUFGROW, bufLen = 0, pos = 0;
726 char *bufData = th_malloc(bufSize);
727 char *copy = th_strdup(fmt);
728
729 while (fmt[pos])
730 {
731 if (fmt[pos] == '%')
732 {
733 char tmpBuf[64];
734 size_t start = pos++;
735
736 if (fmt[pos] == '-')
737 pos++;
738
739 while (isdigit(fmt[pos])) pos++;
740
741 switch (fmt[pos])
742 {
743 case 'i':
744 case 'd':
745 copy[pos + 1] = 0;
746 snprintf(tmpBuf, sizeof(tmpBuf), &copy[start], id);
747 VPUTS(tmpBuf);
748 break;
749
750 case 's':
751 copy[pos + 1] = 0;
752 // snprintf(tmpBuf, sizeof(tmpBuf), &copy[start], );
753 VPUTS(tmpBuf);
754 break;
755
756 case '%':
757 VPUTCH('%');
758 break;
759
760 default:
761 goto error;
762 }
763 }
764 else
765 VPUTCH(fmt[pos]);
766 pos++;
767 }
768
769 error:
770 VPUTCH(0);
771 th_free(copy);
772 return bufData;
773 }