X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=Serial.pm;h=fdfb9e055b9e609f07686e36c16ef14cbfd38b3d;hb=104d1371435741ced5e3fe8f78f352865505133c;hp=26b9c2e49697092ed0bf0823c8e836e3faf5df97;hpb=9a9679bb16f6676d568db58d46ac0bbe85da2a4c;p=dweather.git diff --git a/Serial.pm b/Serial.pm index 26b9c2e..fdfb9e0 100644 --- a/Serial.pm +++ b/Serial.pm @@ -31,7 +31,7 @@ sub new # get my attributes $$self->{ORIGTERM} = POSIX::Termios->new(); - my $term = $$self->{TERM} = POSIX::Termios->new(); + my $term = POSIX::Termios->new(); $$self->{ORIGTERM}->getattr(fileno($self)); $term->getattr(fileno($self)); my ($speed) = grep {/^\d+$/} @_; @@ -65,6 +65,8 @@ sub new $term->setcflag($cflag); $term->setlflag($lflag); $term->setoflag($oflag); $term->setiflag($iflag); $term->setattr(fileno($self), TCSANOW); + $$self->{TERM} = $term; + return $self; } @@ -79,13 +81,13 @@ sub setattr { my $self = shift; my $attr = shift || $$self->{TERM}; - $attr->setattr(fileno($self), &POSIX::TCSANOW); + $attr->setattr(fileno($self), &POSIX::TCSANOW) if fileno($self); } sub close { my $self = shift; - $self->setattr(delete $$self->{ORIGTERM}); + $self->setattr(delete $$self->{ORIGTERM}) if fileno($self) && $$self->{ORIGTERM}; $self->SUPER::close; }