Hello community, here is the log from the commit of package perl-IO-Multiplex for openSUSE:Factory checked in at Tue Feb 22 14:23:12 CET 2011. -------- --- perl-IO-Multiplex/perl-IO-Multiplex.changes 2010-12-01 14:47:16.000000000 +0100 +++ /mounts/work_src_done/STABLE/perl-IO-Multiplex/perl-IO-Multiplex.changes 2011-02-22 10:59:52.000000000 +0100 @@ -1,0 +2,15 @@ +Tue Feb 22 09:50:34 UTC 2011 - vcizek@novell.com + +- update to 1.11 + - Avoid warning while adding pipe + rt.cpan.org#60068 [Khedin] and #16259 + - Add EWOULDBLOCK and non-blocking mode for windows, + rt.cpan.org#23982 [junk@penilecolada.com] + - Typo "closeing", rt.cpan.org#21085 [D Steinbrunner] + - avoid shutdown after close, + rt.cpan.org#5715 [Lars Jensen] and #5885 + - use length of outbuf, not exists to see if it is + empty. [Ersun Warncke] + - turn "use warnings" on + +------------------------------------------------------------------- calling whatdependson for head-i586 Old: ---- IO-Multiplex-1.10.tar.bz2 New: ---- IO-Multiplex-1.11.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ perl-IO-Multiplex.spec ++++++ --- /var/tmp/diff_new_pack.Nk5HqM/_old 2011-02-22 14:22:32.000000000 +0100 +++ /var/tmp/diff_new_pack.Nk5HqM/_new 2011-02-22 14:22:32.000000000 +0100 @@ -1,7 +1,7 @@ # -# spec file for package perl-IO-Multiplex (Version 1.10) +# spec file for package perl-IO-Multiplex # -# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -24,8 +24,8 @@ Group: Development/Libraries/Perl AutoReqProv: on Summary: Manage IO on many file handles -Version: 1.10 -Release: 10 +Version: 1.11 +Release: 1 Source: IO-Multiplex-%{version}.tar.bz2 BuildRoot: %{_tmppath}/%{name}-%{version}-build %{perl_requires} ++++++ IO-Multiplex-1.10.tar.bz2 -> IO-Multiplex-1.11.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/IO-Multiplex-1.10/Changes new/IO-Multiplex-1.11/Changes --- old/IO-Multiplex-1.10/Changes 2008-09-15 10:18:37.000000000 +0200 +++ new/IO-Multiplex-1.11/Changes 2011-02-02 17:06:31.000000000 +0100 @@ -1,5 +1,17 @@ Revision history for Perl extension IO::Multiplex. +1.11 Wed Feb 2 17:05:08 CET 2011 + - Avoid warning while adding pipe + rt.cpan.org#60068 [Khedin] and #16259 + - Add EWOULDBLOCK and non-blocking mode for windows, + rt.cpan.org#23982 [junk@penilecolada.com] + - Typo "closeing", rt.cpan.org#21085 [D Steinbrunner] + - avoid shutdown after close, + rt.cpan.org#5715 [Lars Jensen] and #5885 + - use length of outbuf, not exists to see if it is + empty. [Ersun Warncke] + - turn "use warnings" on + 1.10 Mon Sep 15 2008 - Update Copyright and License. - Buttwag around minor Windows deficiencies. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/IO-Multiplex-1.10/MANIFEST new/IO-Multiplex-1.11/MANIFEST --- old/IO-Multiplex-1.10/MANIFEST 2008-09-15 10:31:47.000000000 +0200 +++ new/IO-Multiplex-1.11/MANIFEST 2011-02-02 17:40:43.000000000 +0100 @@ -1,12 +1,12 @@ Changes -README -TODO MANIFEST +META.yml Makefile.PL -lib/IO/Multiplex.pm +README +TODO contrib/portfw +lib/IO/Multiplex.pm t/100_load.t -t/110_test.t t/110_ntest.t +t/110_test.t t/200_udp.t -META.yml Module meta-data (added by MakeMaker) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/IO-Multiplex-1.10/META.yml new/IO-Multiplex-1.11/META.yml --- old/IO-Multiplex-1.10/META.yml 2008-09-15 10:31:47.000000000 +0200 +++ new/IO-Multiplex-1.11/META.yml 2011-02-02 17:41:25.000000000 +0100 @@ -1,11 +1,21 @@ -# http://module-build.sourceforge.net/META-spec.html -#XXXXXXX This is a prototype!!! It will change in the future!!! XXXXX# -name: IO-Multiplex -version: 1.10 -version_from: lib/IO/Multiplex.pm -installdirs: site +--- #YAML:1.0 +name: IO-Multiplex +version: 1.11 +abstract: Manage IO on many file handles +author: [] +license: unknown +distribution_type: module +configure_requires: + ExtUtils::MakeMaker: 0 +build_requires: + ExtUtils::MakeMaker: 0 requires: - IO::Socket: 0 - -distribution_type: module -generated_by: ExtUtils::MakeMaker version 6.30 + IO::Socket: 0 +no_index: + directory: + - t + - inc +generated_by: ExtUtils::MakeMaker version 6.56 +meta-spec: + url: http://module-build.sourceforge.net/META-spec-v1.4.html + version: 1.4 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/IO-Multiplex-1.10/lib/IO/Multiplex.pm new/IO-Multiplex-1.11/lib/IO/Multiplex.pm --- old/IO-Multiplex-1.10/lib/IO/Multiplex.pm 2008-09-15 10:17:50.000000000 +0200 +++ new/IO-Multiplex-1.11/lib/IO/Multiplex.pm 2011-02-02 17:41:16.000000000 +0100 @@ -1,5 +1,10 @@ package IO::Multiplex; +use strict; +use warnings; + +our $VERSION = '1.11'; + =head1 NAME IO::Multiplex - Manage IO on many file handles @@ -15,13 +20,11 @@ $mux->listen($server_socket); $mux->loop; - sub mux_input { - ... - } + sub mux_input { ... } CIO::Multiplex is designed to take the effort out of managing -multiple file handles. It is essentially a really fancy front end to -the C<select> system call. In addition to maintaining the C<select> +multiple file handles. It is essentially a really fancy front end to +the C<select> system call. In addition to maintaining the C<select> loop, it buffers all input and output to/from the file handles. It can also accept incoming connections on one or more listen sockets. @@ -261,29 +264,28 @@ =cut -use strict; use POSIX qw(errno_h BUFSIZ); -use vars qw($VERSION); use Socket; use FileHandle qw(autoflush); use IO::Handle; use Fcntl; use Carp qw(carp); -use constant IsWin => ($^O =~ /Win32/i); +use constant IsWin => ($^O eq 'MSWin32'); -$VERSION = '1.10'; BEGIN { eval { # Can optionally use Hi Res timers if available require Time::HiRes; - Time::HiRes->import ('time'); + Time::HiRes->import('time'); } }; # This is what you want. Trust me. $SIG{PIPE} = 'IGNORE'; +if(IsWin) { *EWOULDBLOCK = sub {10035} } + =head2 new Construct a new CIO::Multiplex object. @@ -326,6 +328,7 @@ $self->add($fh); $self->{_fhs}{"$fh"}{listen} = 1; + $fh; } =head2 add @@ -349,8 +352,11 @@ nonblock($fh); autoflush($fh, 1); fd_set($self->{_readers}, $fh, 1); - $self->{_fhs}{"$fh"}{udp_true} = - (SOCK_DGRAM == unpack("i", scalar getsockopt($fh,Socket::SOL_SOCKET(),Socket::SO_TYPE()))); + + my $sockopt = getsockopt $fh, SOL_SOCKET, SO_TYPE; + $self->{_fhs}{"$fh"}{udp_true} = 1 + if defined $sockopt && SOCK_DGRAM == unpack "i", $sockopt; + $self->{_fhs}{"$fh"}{inbuffer} = ''; $self->{_fhs}{"$fh"}{outbuffer} = ''; $self->{_fhs}{"$fh"}{fileno} = fileno($fh); @@ -666,12 +672,12 @@ if $obj && $obj->can("mux_eof"); if (exists $self->{_fhs}{"$fh"}) { - delete $self->{_fhs}{"$fh"}{inbuffer}; + $self->{_fhs}{"$fh"}{inbuffer} = ''; # The mux_eof handler could have responded # with a shutdown for writing. $self->close($fh) - unless exists $self->{_fhs}{"$fh"} && - exists $self->{_fhs}{"$fh"}{outbuffer}; + unless exists $self->{_fhs}{"$fh"} + && length $self->{_fhs}{"$fh"}{outbuffer}; } next; } @@ -708,19 +714,20 @@ next; } substr($self->{_fhs}{"$fh"}{outbuffer}, 0, $rv) = ''; - unless ($self->{_fhs}{"$fh"}{outbuffer}) { + unless (length $self->{_fhs}{"$fh"}{outbuffer}) { # Mark us as not writable if there's nothing more to # write fd_set($self->{_writers}, $fh, 0); $obj->mux_outbuffer_empty($self, $fh) if ($obj && $obj->can("mux_outbuffer_empty")); - if ($self->{_fhs}{"$fh"}{shutdown}) { + if ( $self->{_fhs}{"$fh"} + && $self->{_fhs}{"$fh"}{shutdown}) { # If we've been marked for shutdown after write # do it. shutdown($fh, 1); - delete $self->{_fhs}{"$fh"}{outbuffer}; - unless (exists $self->{_fhs}{"$fh"}{inbuffer}) { + $self->{_fhs}{"$fh"}{outbuffer} = ''; + unless (length $self->{_fhs}{"$fh"}{inbuffer}) { # We'd previously been shutdown for reading # also, so close out completely $self->close($fh); @@ -879,16 +886,16 @@ if ($which == 1 || $which == 2) { # Shutdown for writing. Only do this now if there is no pending # data. - if ($self->{_fhs}{"$fh"}{outbuffer}) { + if(length $self->{_fhs}{"$fh"}{outbuffer}) { $self->{_fhs}{"$fh"}{shutdown} = 1; } else { shutdown($fh, 1); - delete $self->{_fhs}{"$fh"}{outbuffer}; + $self->{_fhs}{"$fh"}{outbuffer} = ''; } } # Delete the descriptor if it's totally gone. - unless (exists $self->{_fhs}{"$fh"}{inbuffer} || - exists $self->{_fhs}{"$fh"}{outbuffer}) { + unless (length $self->{_fhs}{"$fh"}{inbuffer} || + length $self->{_fhs}{"$fh"}{outbuffer}) { $self->close($fh); } } @@ -909,8 +916,8 @@ return unless exists $self->{_fhs}{"$fh"}; my $obj = $self->{_fhs}{"$fh"}{object} || $self->{_object}; - warn "closeing with read buffer" if $self->{_fhs}{"$fh"}{inbuffer}; - warn "closeing with write buffer" if $self->{_fhs}{"$fh"}{outbuffer}; + warn "closing with read buffer" if length $self->{_fhs}{"$fh"}{inbuffer}; + warn "closing with write buffer" if length $self->{_fhs}{"$fh"}{outbuffer}; fd_set($self->{_readers}, $fh, 0); fd_set($self->{_writers}, $fh, 0); @@ -928,13 +935,17 @@ # get a partial write in those circumstances, which is what we want. sub nonblock -{ - return 1 if IsWin; - my $fh = shift; - my $flags = fcntl($fh, F_GETFL, 0) - or die "fcntl F_GETFL: $!\n"; - fcntl($fh, F_SETFL, $flags | O_NONBLOCK) - or die "fcntl F_SETFL $!\n"; +{ my $fh = shift; + + if(IsWin) + { ioctl($fh, 0x8004667e, 1); + } + else + { my $flags = fcntl($fh, F_GETFL, 0) + or die "fcntl F_GETFL: $!\n"; + fcntl($fh, F_SETFL, $flags | O_NONBLOCK) + or die "fcntl F_SETFL $!\n"; + } } sub fd_set diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/IO-Multiplex-1.10/t/200_udp.t new/IO-Multiplex-1.11/t/200_udp.t --- old/IO-Multiplex-1.10/t/200_udp.t 2003-07-31 23:20:27.000000000 +0200 +++ new/IO-Multiplex-1.11/t/200_udp.t 2011-02-02 12:28:23.000000000 +0100 @@ -20,6 +20,8 @@ use IO::Multiplex; use POSIX qw(ENOTCONN EDESTADDRREQ); +if($^O eq 'MSWin32') { *ENOTCONN = sub(){10057} } + $| = 1; plan tests => 15; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org