Mercurial > ~mikael > mcabber > hg
diff mcabber/src/utils.c @ 374:bd5638c21834
Improve logging system (traces)
There are now two trace logging levels:
* tracelog_level = 1:
Most messages from the log window are written to disk (LPRINT_LOG)
* tracelog_level =2:
LPRINT_LOG & LPRINT_DEBUG messages are written to disk
The trace file name is set with the "tracelog_file" option.
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Mon, 25 Jul 2005 21:46:35 +0100 |
parents | 33b8e801ffa6 |
children | 2e6c7b1440d1 |
line wrap: on
line diff
--- a/mcabber/src/utils.c Mon Jul 25 19:40:17 2005 +0100 +++ b/mcabber/src/utils.c Mon Jul 25 21:46:35 2005 +0100 @@ -40,7 +40,7 @@ { FILE *fp; - if (!level) { + if (level < 1) { DebugEnabled = 0; FName = NULL; return; @@ -62,34 +62,23 @@ DebugEnabled = level; - fp = fopen(FName, "w"); + fp = fopen(FName, "a"); if (!fp) return; - fprintf(fp, "Debugging mode started...\n" - "-----------------------------------\n"); + fprintf(fp, "New trace log started.\n" + "----------------------\n"); + fchmod(fileno(fp), S_IRUSR|S_IWUSR); fclose(fp); } -void ut_WriteLog(const char *fmt, ...) +void ut_WriteLog(unsigned int flag, const char *data) { - FILE *fp = NULL; - time_t ahora; - va_list ap; - char *buffer = NULL; - - if (DebugEnabled && FName) { - fp = fopen(FName, "a+"); + if (!DebugEnabled || !FName) return; + + if (((DebugEnabled == 2) && (flag & (LPRINT_LOG|LPRINT_DEBUG))) || + ((DebugEnabled == 1) && (flag & LPRINT_LOG))) { + FILE *fp = fopen(FName, "a+"); if (!fp) return; - buffer = (char *) calloc(1, 64); - - ahora = time(NULL); - strftime(buffer, 64, "[%H:%M:%S] ", localtime(&ahora)); - fprintf(fp, "%s", buffer); - - va_start(ap, fmt); - vfprintf(fp, fmt, ap); - va_end(ap); - - free(buffer); + fputs(data, fp); fclose(fp); } } @@ -107,7 +96,7 @@ if (fd == -1) return -1; if (buf.st_uid != geteuid()) { - scr_LogPrint("Wrong file owner [%s]", name); + scr_LogPrint(LPRINT_LOGNORM, "Wrong file owner [%s]", name); return 1; } @@ -115,17 +104,17 @@ buf.st_mode & (S_IROTH | S_IWOTH | S_IXOTH)) { if (setmode) { mode_t newmode = 0; - scr_LogPrint("Bad permissions [%s]", name); + scr_LogPrint(LPRINT_LOGNORM, "Bad permissions [%s]", name); if (S_ISDIR(buf.st_mode)) newmode |= S_IXUSR; newmode |= S_IRUSR | S_IWUSR; if (chmod(name, newmode)) { - scr_LogPrint("WARNING: Failed to correct permissions!"); + scr_LogPrint(LPRINT_LOGNORM, "WARNING: Failed to correct permissions!"); return 1; } - scr_LogPrint("Permissions have been corrected"); + scr_LogPrint(LPRINT_LOGNORM, "Permissions have been corrected"); } else { - scr_LogPrint("WARNING: Bad permissions [%s]", name); + scr_LogPrint(LPRINT_LOGNORM, "WARNING: Bad permissions [%s]", name); return 1; } }