mirror of
https://github.com/scp-fs2open/fs2open.github.com.git
synced 2026-11-07 08:15:59 -10:00
FSO doesn't appear to use this any longer. And even when it was enabled the requirements made it largely useless anyway. Removing to clean up cfile a bit and so we don't have to keep maintaining it.
141 lines
3.1 KiB
C++
141 lines
3.1 KiB
C++
/*
|
|
* Copyright (C) Volition, Inc. 1999. All rights reserved.
|
|
*
|
|
* All source code herein is the property of Volition, Inc. You may not sell
|
|
* or otherwise commercially exploit the source or things you created based on the
|
|
* source.
|
|
*
|
|
*/
|
|
|
|
|
|
|
|
|
|
#include <cstdarg>
|
|
|
|
#include "cfile/cfile.h"
|
|
#include "globalincs/globals.h"
|
|
#include "parse/generic_log.h"
|
|
#include "parse/parselo.h"
|
|
|
|
|
|
// ----------------------------------------------------------------------------------------------------
|
|
// MULTI LOGFILE DEFINES/VARS
|
|
//
|
|
|
|
// how often we'll write an update to the logfile (in seconds)
|
|
#define MULTI_LOGFILE_UPDATE_TIME 2520 // every 42 minutes
|
|
/*
|
|
// outfile itself
|
|
CFILE *log_file[];
|
|
*/
|
|
|
|
#define MAX_LOGFILES 2
|
|
|
|
typedef struct logfile {
|
|
char filename[NAME_LENGTH];
|
|
CFILE *log_file;
|
|
} logfile;
|
|
|
|
logfile logfiles[MAX_LOGFILES] = {
|
|
// Filename, then the CFILE (which should usually be set to NULL)
|
|
{"multi.log" ,NULL},
|
|
{"event.log" ,NULL},
|
|
};
|
|
|
|
// ----------------------------------------------------------------------------------------------------
|
|
// LOGFILE FUNCTIONS
|
|
//
|
|
|
|
// initialize the logfile
|
|
bool logfile_init(int logfile_type)
|
|
{
|
|
if((logfile_type < 0) || (logfile_type >= MAX_LOGFILES)) {
|
|
Warning(LOCATION, "Attempt to write illegal logfile number %d", logfile_type);
|
|
return false;
|
|
}
|
|
|
|
// attempt to open the file
|
|
logfiles[logfile_type].log_file = cfopen(logfiles[logfile_type].filename, "wt", CF_TYPE_DATA);
|
|
|
|
if(logfiles[logfile_type].log_file == NULL){
|
|
nprintf(("Network","Error opening %s for writing!!\n",logfiles[logfile_type].filename));
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
// close down the logfile
|
|
void logfile_close(int logfile_type)
|
|
{
|
|
// if we have a valid file, write a trailer and close
|
|
if(logfiles[logfile_type].log_file != NULL){
|
|
|
|
cfclose(logfiles[logfile_type].log_file);
|
|
logfiles[logfile_type].log_file = NULL;
|
|
}
|
|
}
|
|
|
|
// printf function itself called by the ml_printf macro
|
|
void log_printf(int logfile_type, const char *format, ...)
|
|
{
|
|
SCP_string temp;
|
|
va_list args;
|
|
|
|
if (format == NULL) {
|
|
return;
|
|
}
|
|
|
|
// if we don't have a valid logfile do nothing
|
|
if (logfiles[logfile_type].log_file == NULL) {
|
|
return;
|
|
}
|
|
|
|
// format the text
|
|
va_start(args, format);
|
|
vsprintf(temp, format, args);
|
|
va_end(args);
|
|
|
|
// log the string
|
|
log_string(logfile_type, temp.c_str());
|
|
}
|
|
|
|
// string print function
|
|
void log_string(int logfile_type, const char *string, int add_time)
|
|
{
|
|
SCP_string tmp;
|
|
char time_str[128];
|
|
time_t timer;
|
|
|
|
// if we don't have a valid logfile do nothing
|
|
if(logfiles[logfile_type].log_file == NULL){
|
|
return;
|
|
}
|
|
|
|
// if the passed string is NULL, do nothing
|
|
if(string == NULL){
|
|
return;
|
|
}
|
|
|
|
// maybe add the time
|
|
if(add_time){
|
|
timer = time(NULL);
|
|
|
|
strftime(time_str, 128, "%m/%d %H:%M:%S~ ", localtime(&timer));
|
|
tmp = time_str;
|
|
tmp += string;
|
|
} else{
|
|
tmp = string;
|
|
}
|
|
|
|
tmp += "\n";
|
|
|
|
// now print it to the logfile if necessary
|
|
cfputs(tmp.c_str(), logfiles[logfile_type].log_file);
|
|
cflush(logfiles[logfile_type].log_file);
|
|
|
|
#if defined(LOGFILE_ECHO_TO_DEBUG)
|
|
mprintf(("Log file type %d %s\n",logfile_type, tmp.c_str()));
|
|
#endif
|
|
}
|