hxtools/sadmin/vcsaview

41 lines
777 B
Perl
Executable File

#!/usr/bin/perl
# SPDX-License-Identifier: MIT
# SPDX-FileCopyrightText: 2004-2007 Jan Engelhardt
#
# vcsaview - show Linux vt contents
use strict;
undef $/;
my $data = join("", <>);
my $height = ord(substr($data, 0, 1));
my $width = ord(substr($data, 1, 1));
for (my $y = 0; $y < $height; ++$y) {
for (my $x = 0; $x < $width; ++$x) {
my $p = 4 + 2 * ($y * $width + $x);
print &attr2color(substr($data, $p+1, 1)),
substr($data, $p, 1);
}
print "\n";
}
sub asc2ans ()
{
my $i = shift @_;
return ($i &~ 5) | (($i & 1) ? 4 : 0) | (($i & 4) ? 1 : 0);
}
sub attr2color ()
{
my $char = ord shift @_;
print "\e[0;";
if ($char & 0x08) {
print "1;";
}
print "4", &asc2ans(($char & 0x70) >> 4), ";";
print "3", &asc2ans(($char & 0x07)), "m";
return;
}