--- deliantra/Deliantra-Client/DC/DB.pm 2007/07/29 19:32:29 1.14 +++ deliantra/Deliantra-Client/DC/DB.pm 2007/08/06 02:11:45 1.15 @@ -61,6 +61,10 @@ CFPlus::DB::Server::req (prefetch_file => @_); } +sub logprint($$$) { + CFPlus::DB::Server::req (logprint => @_); +} + our $tilemap; sub get_tile_id_sync($) { @@ -296,6 +300,28 @@ 1 } +our %LOG_FH; + +sub do_logprint { + my ($path, $line) = @_; + + $LOG_FH{$path} ||= do { + open my $fh, ">>:utf8", $path + or warn "Couldn't open logfile $path: $!"; + + $fh->autoflush (1); + + $fh + }; + + my ($sec, $min, $hour, $mday, $mon, $year) = localtime time; + + my $ts = sprintf "%04d-%02d-%02d %02d:%02d:%02d", + $year + 1900, $mon + 1, $mday, $hour, $min, $sec; + + print { $LOG_FH{$path} } "$ts $line\n" +} + sub run { ($FH, my $fh) = CFPlus::socketpipe; @@ -305,7 +331,9 @@ my $pid = fork; if (defined $pid && !$pid) { + local $SIG{QUIT}; local $SIG{__DIE__}; + local $SIG{__WARN__}; eval { close $FH;