/usr/share/icheck/perl5/CParse/Parser/Token/Character.pm is in icheck 0.9.7-6.3+b1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | package CParse::Parser::Token::Character;
use 5.6.0;
use strict;
use warnings;
use CParse::Char;
use CParse::String qw/escape unescape/;
sub new
{
my $this = shift;
my $class = ref($this) || $this;
my $str = shift;
my $line = shift;
my $pos = shift;
my $wide;
if ($str =~ s/^L//)
{
$wide = 1;
}
else
{
$wide = 0;
}
$str =~ /^L?'(.*)'$/ or die;
my $char = unescape($1);
if (length $char == 0)
{
die "Empty character constants not supported";
}
if (length $char > 1)
{
die "Multi-character constants not supported";
}
my $self = {value => $char,
wide => $wide,
line => $line,
pos => $pos,
};
bless $self, $class;
return $self;
}
sub dump_c
{
my $self = shift;
my $value = escape($self->{value});
return $self->{wide} ? "L'$value'" : "'$value'";
}
sub process
{
my $self = shift;
return new CParse::Char $self->{value}, $self->{wide};
}
1;
|