ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Convert-BER-XS/XS.pm
(Generate patch)

Comparing Convert-BER-XS/XS.pm (file contents):
Revision 1.57 by root, Thu Apr 25 22:30:21 2019 UTC vs.
Revision 1.58 by root, Sat Apr 27 14:54:40 2019 UTC

473$SNMP_PROFILE->set (ASN_APPLICATION, SNMP_UNSIGNED32, BER_TYPE_INT); 473$SNMP_PROFILE->set (ASN_APPLICATION, SNMP_UNSIGNED32, BER_TYPE_INT);
474$SNMP_PROFILE->set (ASN_APPLICATION, SNMP_TIMETICKS , BER_TYPE_INT); 474$SNMP_PROFILE->set (ASN_APPLICATION, SNMP_TIMETICKS , BER_TYPE_INT);
475 475
476# decodes REAL values according to ECMA-63 476# decodes REAL values according to ECMA-63
477# this is pretty strict, except it doesn't catch -0. 477# this is pretty strict, except it doesn't catch -0.
478# I don't have access to ISO 6093 (or BS 6727, or ANSI X.3-42)), so this is all guesswork.
478sub _decode_real_decimal { 479sub _decode_real_decimal {
479 my ($format, $val) = @_; 480 my ($format, $val) = @_;
480 481
481 $val =~ y/,/./; 482 $val =~ y/,/./; # probably not in ISO-6093
482 483
483 if ($format == 1) { 484 if ($format == 1) {
484 $val =~ /^ \ * [+-]? [0-9]+ \z/x 485 $val =~ /^ \ * [+-]? [0-9]+ \z/x
485 or Carp::croak "BER_TYPE_REAL NR1 value not in NR1 format ($val) (X.690 8.5.8, ECMA-63)"; 486 or Carp::croak "BER_TYPE_REAL NR1 value not in NR1 format ($val) (X.690 8.5.8)";
486 } elsif ($format == 2) { 487 } elsif ($format == 2) {
487 $val =~ /^ \ * [+-]? (?: [0-9]+\.[0-9]* | [0-9]*\.[0-9]+ ) \z/x 488 $val =~ /^ \ * [+-]? (?: [0-9]+\.[0-9]* | [0-9]*\.[0-9]+ ) \z/x
488 or Carp::croak "BER_TYPE_REAL NR2 value not in NR2 format ($val) (X.690 8.5.8, ECMA-63)"; 489 or Carp::croak "BER_TYPE_REAL NR2 value not in NR2 format ($val) (X.690 8.5.8)";
489 } elsif ($format == 3) { 490 } elsif ($format == 3) {
490 $val =~ /^ \ * [+-] (?: [0-9]+\.[0-9]* | [0-9]*\.[0-9]+ ) E [+-][0-9]+ \z/x 491 $val =~ /^ \ * [+-] (?: [0-9]+\.[0-9]* | [0-9]*\.[0-9]+ ) [eE] [+-]? [0-9]+ \z/x
491 or Carp::croak "BER_TYPE_REAL NR3 value not in NR3 format ($val) (X.690 8.5.8, ECMA-63)"; 492 or Carp::croak "BER_TYPE_REAL NR3 value not in NR3 format ($val) (X.690 8.5.8)";
492 } else { 493 } else {
493 Carp::croak "BER_TYPE_REAL illegal decimal numerical representation format $format"; 494 Carp::croak "BER_TYPE_REAL illegal decimal numerical representation format $format";
494 } 495 }
495 496
496 $val 497 $val

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines