|
|
1.1 ! root 1: /* ! 2: Hatari - log.c ! 3: ! 4: This file is distributed under the GNU Public License, version 2 or at ! 5: your option any later version. Read the file gpl.txt for details. ! 6: ! 7: Logger functions. ! 8: ! 9: When Hatari runs, it can output information, debug, warning and error texts ! 10: to the error log file and/or displays them in alert dialog boxes. ! 11: */ ! 12: char Log_rcsid[] = "Hatari $Id: log.c,v 1.2 2005/06/05 14:19:39 thothy Exp $"; ! 13: ! 14: #include <stdio.h> ! 15: #include <stdarg.h> ! 16: #include <errno.h> ! 17: ! 18: #include "main.h" ! 19: #include "configuration.h" ! 20: #include "dialog.h" ! 21: #include "log.h" ! 22: #include "screen.h" ! 23: ! 24: ! 25: static FILE *hLogFile = NULL; ! 26: ! 27: ! 28: /*-----------------------------------------------------------------------*/ ! 29: /* ! 30: Initialize the logging functions (open the log file etc.). ! 31: */ ! 32: void Log_Init(void) ! 33: { ! 34: /* First check for "stdout" and "stderr" which are special */ ! 35: if (!strcmp(ConfigureParams.Log.sLogFileName, "stdout")) ! 36: { ! 37: hLogFile = stdout; ! 38: } ! 39: else if (!strcmp(ConfigureParams.Log.sLogFileName, "stderr")) ! 40: { ! 41: hLogFile = stderr; ! 42: } ! 43: else ! 44: { ! 45: /* Open a normal log file */ ! 46: hLogFile = fopen(ConfigureParams.Log.sLogFileName, "w"); ! 47: if (!hLogFile) ! 48: fprintf(stderr, "Can't open log file %s: %s\n", ! 49: ConfigureParams.Log.sLogFileName, strerror(errno)); ! 50: } ! 51: } ! 52: ! 53: ! 54: /*-----------------------------------------------------------------------*/ ! 55: /* ! 56: Un-Initialize - close error log file etc. ! 57: */ ! 58: void Log_UnInit(void) ! 59: { ! 60: if (hLogFile && hLogFile != stdout && hLogFile != stderr) ! 61: { ! 62: fclose(hLogFile); ! 63: } ! 64: hLogFile = NULL; ! 65: } ! 66: ! 67: ! 68: /*-----------------------------------------------------------------------*/ ! 69: /* ! 70: Output string to log file ! 71: */ ! 72: void Log_Printf(LOGTYPE nType, const char *psFormat, ...) ! 73: { ! 74: va_list argptr; ! 75: ! 76: if (hLogFile && (int)nType <= ConfigureParams.Log.nTextLogLevel) ! 77: { ! 78: va_start(argptr, psFormat); ! 79: vfprintf(hLogFile, psFormat, argptr); ! 80: va_end(argptr); ! 81: } ! 82: } ! 83: ! 84: ! 85: /*-----------------------------------------------------------------------*/ ! 86: /* ! 87: Show logging alert dialog box and output string to log file ! 88: */ ! 89: void Log_AlertDlg(LOGTYPE nType, const char *psFormat, ...) ! 90: { ! 91: va_list argptr; ! 92: ! 93: /* Output to log file: */ ! 94: if (hLogFile && (int)nType <= ConfigureParams.Log.nTextLogLevel) ! 95: { ! 96: va_start(argptr, psFormat); ! 97: vfprintf(hLogFile, psFormat, argptr); ! 98: va_end(argptr); ! 99: /* Add a new-line if necessary: */ ! 100: if (psFormat[strlen(psFormat)-1] != '\n') ! 101: fputs("\n", hLogFile); ! 102: } ! 103: ! 104: /* Show alert dialog box: */ ! 105: if (sdlscrn && (int)nType <= ConfigureParams.Log.nAlertDlgLogLevel) ! 106: { ! 107: char *psTmpBuf; ! 108: psTmpBuf = malloc(2048); ! 109: if (!psTmpBuf) ! 110: { ! 111: perror("Log_AlertDlg"); ! 112: return; ! 113: } ! 114: va_start(argptr, psFormat); ! 115: vsnprintf(psTmpBuf, 2048, psFormat, argptr); ! 116: va_end(argptr); ! 117: DlgAlert_Notice(psTmpBuf); ! 118: free(psTmpBuf); ! 119: } ! 120: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.