ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent/lib/AnyEvent/Strict.pm
(Generate patch)

Comparing AnyEvent/lib/AnyEvent/Strict.pm (file contents):
Revision 1.7 by root, Tue Jan 13 22:37:18 2009 UTC vs.
Revision 1.16 by root, Thu Jul 9 22:37:53 2009 UTC

3AnyEvent::Strict - force strict mode on for the whole process 3AnyEvent::Strict - force strict mode on for the whole process
4 4
5=head1 SYNOPSIS 5=head1 SYNOPSIS
6 6
7 use AnyEvent::Strict; 7 use AnyEvent::Strict;
8 # struct mode now switched on 8 # strict mode now switched on
9 9
10=head1 DESCRIPTION 10=head1 DESCRIPTION
11 11
12This module implements AnyEvent's strict mode. 12This module implements AnyEvent's strict mode.
13 13
21 21
22=cut 22=cut
23 23
24package AnyEvent::Strict; 24package AnyEvent::Strict;
25 25
26no warnings; # *sigh*
27use strict qw(vars subs);
28
26use Carp qw(croak); 29use Carp qw(croak);
30use Fcntl ();
27 31
28use AnyEvent (); 32use AnyEvent ();
33use AnyEvent::Util ();
34
35our @ISA;
29 36
30AnyEvent::post_detect { 37AnyEvent::post_detect {
31 # assume the first ISA member is the implementation 38 # assume the first ISA member is the implementation
32 # # and link us in before it in the chain. 39 # # and link us in before it in the chain.
33 my $MODEL = shift @AnyEvent::ISA; 40 my $MODEL = shift @AnyEvent::ISA;
41 48
42 ref $arg{cb} 49 ref $arg{cb}
43 or croak "AnyEvent->io called with illegal cb argument '$arg{cb}'"; 50 or croak "AnyEvent->io called with illegal cb argument '$arg{cb}'";
44 delete $arg{cb}; 51 delete $arg{cb};
45 52
46 defined fileno $arg{fh}
47 or croak "AnyEvent->io called with illegal fh argument '$arg{fh}'";
48 delete $arg{fh};
49
50 $arg{poll} =~ /^[rw]$/ 53 $arg{poll} =~ /^[rw]$/
51 or croak "AnyEvent->io called with illegal poll argument '$arg{poll}'"; 54 or croak "AnyEvent->io called with illegal poll argument '$arg{poll}'";
55
56 if (defined fileno $arg{fh} or ref $arg{fh} or $arg{fh} !~ /^\s*\d+\s*$/) {
57 defined fileno $arg{fh}
58 or croak "AnyEvent->io called with illegal fh argument '$arg{fh}'";
59 } else {
60 $arg{fh} = AnyEvent::_dupfh $arg{poll}, $arg{fh};
61 }
62
63 -f $arg{fh}
64 and croak "AnyEvent->io called with fh argument pointing to a file";
65
52 delete $arg{poll}; 66 delete $arg{poll};
67 delete $arg{fh};
53 68
54 croak "AnyEvent->io called with unsupported parameter(s) " . join ", ", keys %arg 69 croak "AnyEvent->io called with unsupported parameter(s) " . join ", ", keys %arg
55 if keys %arg; 70 if keys %arg;
56 71
57 $class->SUPER::io (@_) 72 $class->SUPER::io (@_)
85 100
86 ref $arg{cb} 101 ref $arg{cb}
87 or croak "AnyEvent->signal called with illegal cb argument '$arg{cb}'"; 102 or croak "AnyEvent->signal called with illegal cb argument '$arg{cb}'";
88 delete $arg{cb}; 103 delete $arg{cb};
89 104
90 eval "require POSIX; 0 < &POSIX::SIG$arg{signal}" 105 defined AnyEvent::Util::sig2num $arg{signal}
91 or croak "AnyEvent->signal called with illegal signal name '$arg{signal}'"; 106 or croak "AnyEvent->signal called with illegal signal name '$arg{signal}'";
92 delete $arg{signal}; 107 delete $arg{signal};
93 108
94 croak "AnyEvent->signal called with unsupported parameter(s) " . join ", ", keys %arg 109 croak "AnyEvent->signal called with unsupported parameter(s) " . join ", ", keys %arg
95 if keys %arg; 110 if keys %arg;
100sub child { 115sub child {
101 my $class = shift; 116 my $class = shift;
102 my %arg = @_; 117 my %arg = @_;
103 118
104 ref $arg{cb} 119 ref $arg{cb}
105 or croak "AnyEvent->signal called with illegal cb argument '$arg{cb}'"; 120 or croak "AnyEvent->child called with illegal cb argument '$arg{cb}'";
106 delete $arg{cb}; 121 delete $arg{cb};
107 122
108 $arg{pid} =~ /^-?\d+$/ 123 $arg{pid} =~ /^-?\d+$/
109 or croak "AnyEvent->signal called with illegal pid value '$arg{pid}'"; 124 or croak "AnyEvent->child called with malformed pid value '$arg{pid}'";
110 delete $arg{pid}; 125 delete $arg{pid};
111 126
112 croak "AnyEvent->signal called with unsupported parameter(s) " . join ", ", keys %arg 127 croak "AnyEvent->child called with unsupported parameter(s) " . join ", ", keys %arg
113 if keys %arg; 128 if keys %arg;
114 129
115 $class->SUPER::child (@_) 130 $class->SUPER::child (@_)
131}
132
133sub idle {
134 my $class = shift;
135 my %arg = @_;
136
137 ref $arg{cb}
138 or croak "AnyEvent->idle called with illegal cb argument '$arg{cb}'";
139 delete $arg{cb};
140
141 croak "AnyEvent->idle called with unsupported parameter(s) " . join ", ", keys %arg
142 if keys %arg;
143
144 $class->SUPER::idle (@_)
116} 145}
117 146
118sub condvar { 147sub condvar {
119 my $class = shift; 148 my $class = shift;
120 my %arg = @_; 149 my %arg = @_;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines