Print the last error when errors occur

This commit is contained in:
Ben Peddell 2015-12-28 06:00:31 +10:00
parent edd4b3c8f1
commit 2b58694e12

View File

@ -265,13 +265,13 @@ rconcmd() {
sub sendpkt { sub sendpkt {
my ($sock, $reqid, $reqtype, $body) = @_; my ($sock, $reqid, $reqtype, $body) = @_;
my $packet = pack("VVV", length($body) + 10, $reqid, $reqtype) . $body . "\0\0"; my $packet = pack("VVV", length($body) + 10, $reqid, $reqtype) . $body . "\0\0";
send($sock, $packet, 0) or die "Error sending command to server"; send($sock, $packet, 0) or die "Error sending command to server: $!";
} }
sub recvpkt { sub recvpkt {
my ($sock) = @_; my ($sock) = @_;
my $data = ""; my $data = "";
recv($sock, $data, 12, 0) or die "Error receiving response from server"; recv($sock, $data, 12, 0) or die "Error receiving response from server: $!";
die "Empty response" if len($data) == 0; die "Empty response" if len($data) == 0;
my ($pktlen, $resid, $restype) = unpack("VVV", $data); my ($pktlen, $resid, $restype) = unpack("VVV", $data);
recv($sock, $data, $pktlen - 8, 0); recv($sock, $data, $pktlen - 8, 0);
@ -293,7 +293,7 @@ rconcmd() {
socket(my $socket, PF_INET, SOCK_STREAM, 0); socket(my $socket, PF_INET, SOCK_STREAM, 0);
setsockopt($socket, SOL_SOCKET, SO_RCVTIMEO, pack("i4", 30, 0, 0, 0)); setsockopt($socket, SOL_SOCKET, SO_RCVTIMEO, pack("i4", 30, 0, 0, 0));
my $sockaddr = pack_sockaddr_in($port, inet_aton($ipaddr)); my $sockaddr = pack_sockaddr_in($port, inet_aton($ipaddr));
connect($socket, $sockaddr) or die "Error connecting to server"; connect($socket, $sockaddr) or die "Error connecting to server: $!";
auth($socket, $password); auth($socket, $password);
sendpkt($socket, 2, 2, $command); sendpkt($socket, 2, 2, $command);
my ($resid, $restype, $rcvbody) = recvpkt($socket); my ($resid, $restype, $rcvbody) = recvpkt($socket);
@ -1225,26 +1225,26 @@ doExtractMod(){
printf "%10d %s " "`stat -c '%s' "$modsrcdir/$f"`" "${f%.z}" printf "%10d %s " "`stat -c '%s' "$modsrcdir/$f"`" "${f%.z}"
perl -M'Compress::Raw::Zlib' -e ' perl -M'Compress::Raw::Zlib' -e '
my $sig; my $sig;
read(STDIN, $sig, 8) or die "Unable to read compressed file"; read(STDIN, $sig, 8) or die "Unable to read compressed file: $!";
if ($sig != "\xC1\x83\x2A\x9E\x00\x00\x00\x00"){ if ($sig != "\xC1\x83\x2A\x9E\x00\x00\x00\x00"){
die "Bad file magic"; die "Bad file magic";
} }
my $data; my $data;
read(STDIN, $data, 24) or die "Unable to read compressed file"; read(STDIN, $data, 24) or die "Unable to read compressed file: $!";
my ($chunksizelo, $chunksizehi, my ($chunksizelo, $chunksizehi,
$comprtotlo, $comprtothi, $comprtotlo, $comprtothi,
$uncomtotlo, $uncomtothi) = unpack("(LLLLLL)<", $data); $uncomtotlo, $uncomtothi) = unpack("(LLLLLL)<", $data);
my @chunks = (); my @chunks = ();
my $comprused = 0; my $comprused = 0;
while ($comprused < $comprtotlo) { while ($comprused < $comprtotlo) {
read(STDIN, $data, 16) or die "Unable to read compressed file"; read(STDIN, $data, 16) or die "Unable to read compressed file: $!";
my ($comprsizelo, $comprsizehi, my ($comprsizelo, $comprsizehi,
$uncomsizelo, $uncomsizehi) = unpack("(LLLL)<", $data); $uncomsizelo, $uncomsizehi) = unpack("(LLLL)<", $data);
push @chunks, $comprsizelo; push @chunks, $comprsizelo;
$comprused += $comprsizelo; $comprused += $comprsizelo;
} }
foreach my $comprsize (@chunks) { foreach my $comprsize (@chunks) {
read(STDIN, $data, $comprsize) or die "File read failed"; read(STDIN, $data, $comprsize) or die "File read failed: $!";
my ($inflate, $status) = new Compress::Raw::Zlib::Inflate(); my ($inflate, $status) = new Compress::Raw::Zlib::Inflate();
my $output; my $output;
$status = $inflate->inflate($data, $output, 1); $status = $inflate->inflate($data, $output, 1);