ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/Deliantra-Client/bin/deliantra
(Generate patch)

Comparing deliantra/Deliantra-Client/bin/deliantra (file contents):
Revision 1.66 by root, Mon Sep 1 09:12:08 2008 UTC vs.
Revision 1.67 by root, Mon Sep 1 10:00:29 2008 UTC

97 97
98# need to do it again because that pile of garbage called PAR nukes it before main 98# need to do it again because that pile of garbage called PAR nukes it before main
99unshift @INC, $ENV{PAR_TEMP} 99unshift @INC, $ENV{PAR_TEMP}
100 if %PAR::LibCache; 100 if %PAR::LibCache;
101 101
102use Time::HiRes 'time';
103use EV; 102use EV;
103BEGIN { *time = \&EV::time }
104
104use List::Util qw(max min); 105use List::Util qw(max min);
105 106
106use Deliantra; 107use Deliantra;
107use Deliantra::Protocol::Constants; 108use Deliantra::Protocol::Constants;
108 109
113use Compress::LZF; 114use Compress::LZF;
114use JSON::XS; 115use JSON::XS;
115 116
116use DC; 117use DC;
117 118
118#############################################################################
119
120our $CONN;
121
122# write a crash message blockingly to the socket, if possible
123# this is a bit too complicated for my tastes, but it was easy.
124sub crash($;$) { 119sub crash($;$) {
125 my ($msg, $backtrace) = @_; 120 # nop during compiletime
126
127 return unless $CONN;
128
129 my $fh = $CONN->{fh}
130 or return;
131
132 my $buf = delete $CONN->{wbuf};
133
134 $buf .= pack "n/a*", "exti " . JSON::XS::encode_json [clientlog => undef, substr $msg, 0, 8000];
135
136 AnyEvent::Util::fh_nonblocking $fh, 0;
137
138 syswrite $fh, $buf;
139 AnyEvent::Util::fh_nonblocking $fh, 1;
140
141 $msg =~ s/\s+$//;
142
143 # backtrace as second step, in case it crashes, too
144 crash (Carp::longmess "$msg\nbacktrace, for client version $DC::VERSION, generated")
145 if $backtrace;
146} 121}
147
148#############################################################################
149 122
150BEGIN { 123BEGIN {
151 $SIG{__DIE__} = sub { 124 $SIG{__DIE__} = sub {
152 return if $^S; 125 return if $^S;
153 crash ("CRASH/DIE: $_[0]" => 1); 126 crash ("CRASH/DIE: $_[0]" => 1);
202our $FONTSIZE; 175our $FONTSIZE;
203 176
204our $FONT_PROP; 177our $FONT_PROP;
205our $FONT_FIXED; 178our $FONT_FIXED;
206 179
180our $CONN;
181
207our $MAP; 182our $MAP;
208our $MAPMAP; 183our $MAPMAP;
209our $MAPWIDGET; 184our $MAPWIDGET;
210our $COMPLETER; 185our $COMPLETER;
211our $BUTTONBAR; 186our $BUTTONBAR;
252our $DEBUG_STATUS; 227our $DEBUG_STATUS;
253 228
254our $INV; 229our $INV;
255our $INVR; 230our $INVR;
256our $INVR_HB; 231our $INVR_HB;
232
233#############################################################################
234
235# write a crash message blockingly to the socket, if possible
236# this is a bit too complicated for my tastes, but it was easy.
237*crash = sub($;$) {
238 my ($msg, $backtrace) = @_;
239
240 return unless $CONN;
241
242 my $fh = $CONN->{fh}
243 or return;
244
245 my $buf = delete $CONN->{wbuf};
246
247 $buf .= pack "n/a*", "exti " . JSON::XS::encode_json [clientlog => undef, substr $msg, 0, 8000];
248
249 AnyEvent::Util::fh_nonblocking $fh, 0;
250
251 syswrite $fh, $buf;
252 AnyEvent::Util::fh_nonblocking $fh, 1;
253
254 $msg =~ s/\s+$//;
255
256 # backtrace as second step, in case it crashes, too
257 crash (Carp::longmess "$msg\nbacktrace, for client version $DC::VERSION, generated")
258 if $backtrace;
259};
257 260
258############################################################################# 261#############################################################################
259 262
260sub status { 263sub status {
261 $STATUSBOX->add (DC::asxml $_[0], pri => -10, group => "status", timeout => 10, fg => [1, 1, 0, 1]); 264 $STATUSBOX->add (DC::asxml $_[0], pri => -10, group => "status", timeout => 10, fg => [1, 1, 0, 1]);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines