#include <glib.h>
#include <sys/types.h>
#include <sys/time.h>
#include <ctype.h>
#include <cstdio>
#include <string.h>
#include <stdlib.h>
#include <merc.h>
#include <recycle.h>
#include <time.h>
extern char strArea[MAX_INPUT_LENGTH];
extern FILE * fpArea;
/*
* Append a string to a file.
*/
void append_file( CHAR_DATA *ch, char *file, char *str )
{
FILE *fp;
if ( IS_NPC(ch) || str[0] == '\0' )
return;
fclose( fpReserve );
if ( ( fp = fopen( file, "a" ) ) == NULL )
{
bug( file, 0 );
send_to_char( "Could not open the file!\n\r", ch );
}
else
{
fprintf( fp, "[%5d] %s: %s\n",
ch->in_room ? ch->in_room->vnum : 0, ch->name->str, str );
fclose( fp );
}
fpReserve = fopen( NULL_FILE, "r" );
return;
}
void logchan(char *string, CHAR_DATA *ch, OBJ_DATA *obj,
long flag, long flag_skip, int min_level)
{
DESCRIPTOR_DATA *d;
GSList *desc_list;
for ( desc_list = descriptor_list; desc_list != NULL; desc_list = g_slist_next(desc_list) )
{
d = (DESCRIPTOR_DATA*)desc_list->data;
if (d->connected == CON_PLAYING
&& d->character != NULL
&& !IS_NPC(d->character)
&& IS_IMMORTAL(d->character)
&& IS_SET(d->character->pcdata->wiznet,WIZ_ON)
&& (!flag || IS_SET(d->character->pcdata->wiznet,flag))
&& (!flag_skip || !IS_SET(d->character->pcdata->wiznet,flag_skip))
&& get_trust(d->character) >= min_level
&& d->character != ch)
{
if (IS_SET(d->character->pcdata->wiznet,WIZ_PREFIX))
send_to_char("--> ",d->character);
act(string,d->character,obj,ch,TO_CHAR);
}
}
return;
}
/*
* Writes a string to the log.
*/
void log_string( const char *str )
{
char *strtime;
char logout [MAX_STRING_LENGTH];
strtime = ctime( ¤t_time );
strtime[strlen(strtime)-1] = '\0';
fprintf( stderr, "%s :: %s\n", strtime, str );
strcpy ( logout, str );
//logchan( logout );
return;
}
/*
* Break point for errors that are in glib..
* so I can track them down.
*/
void glib_crit_handler(const gchar *log_domain,GLogLevelFlags log_level, const gchar *message, gpointer user_data)
{
DESCRIPTOR_DATA *d;
GSList *desc_list;
for ( desc_list = descriptor_list; desc_list != NULL; desc_list = g_slist_next(desc_list) )
{
d = (DESCRIPTOR_DATA*)desc_list->data;
if (d->connected == CON_PLAYING
&& d->character != NULL
&& !IS_NPC(d->character)
&& IS_IMMORTAL(d->character)
&& IS_SET(d->character->pcdata->wiznet,WIZ_ON)
&& IS_SET(d->character->pcdata->wiznet,WIZ_GLIB)
&& get_trust(d->character) >= LEVEL_IMPLEMENTOR)
{
if (IS_SET(d->character->pcdata->wiznet,WIZ_PREFIX))
send_to_char("--> ",d->character);
act(message,d->character,NULL,NULL,TO_CHAR);
}
}
return;
return;
}
void my_log_handler(const gchar *log_domain,GLogLevelFlags log_level, const gchar *message, gpointer user_data)
{
DESCRIPTOR_DATA *d;
GSList *desc_list;
for ( desc_list = descriptor_list; desc_list != NULL; desc_list = g_slist_next(desc_list) )
{
d = (DESCRIPTOR_DATA*)desc_list->data;
if (d->connected == CON_PLAYING
&& d->character != NULL
&& !IS_NPC(d->character)
&& IS_IMMORTAL(d->character)
&& IS_SET(d->character->pcdata->wiznet,WIZ_ON)
&& IS_SET(d->character->pcdata->wiznet,WIZ_GLIB)
&& get_trust(d->character) >= LEVEL_IMPLEMENTOR)
{
if (IS_SET(d->character->pcdata->wiznet,WIZ_PREFIX))
send_to_char("--> ",d->character);
act(message,d->character,NULL,NULL,TO_CHAR);
}
}
return;
}
/*
* Reports a bug.
*/
void bug( const char *str, int param )
{
char buf[MAX_STRING_LENGTH];
FILE *fp;
char *strtime;
str_cpy( buf, "[*****] BUG: " );
sprintf( buf + strlen(buf), str, param );
fclose( fpReserve );
if ( ( fp = fopen( BUG_FILE, "a" ) ) != NULL )
{
strtime = ctime( ¤t_time );
strtime[strlen(strtime)-1] = '\0';
fprintf( fp, "%s : %s Last_Proc_Logged:%d\n", strtime, buf,mudsetting->last_proc_logged ) ;
fclose( fp );
}
fpReserve = fopen( NULL_FILE, "r" );
logchan(buf, NULL, NULL,WIZ_DEBUG,0,LEVEL_IMPLEMENTOR);
return;
}
/* New log files for every day! */
void log_string2( const char *str )
{
char *strtime;
//char logfile[20];
char buf[10];
char temp[20];
time_t tm;
struct tm now;
FILE *log_file;
char logout [MAX_STRING_LENGTH];
buf[0] = '\0';
temp[0] = '\0';
//log_file = NULL;
time(&tm);
now = *localtime(&tm);
sprintf(buf,"%02d_%02d_%02d",now.tm_mon+1,now.tm_mday,now.tm_year);
sprintf( temp, "../log/" );
strcat( temp, buf );
strcat( temp, ".log" );
if ((log_file = fopen( temp, "a" )) == NULL){
return;
}
strtime = ctime( ¤t_time );
strtime[strlen(strtime)-1] = '\0';
fprintf( log_file, "%s :: %s\n", strtime, str );
fclose( log_file );
strcpy ( logout, str );
//logchan( logout );
return;
}