This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
[perl #123495] Stop gmtime(nan) from crashing
[perl5.git] / t / lib / warnings / pp_sys
1   pp_sys.c      AOK
2
3   untie attempted while %d inner references still exist [pp_untie]
4     sub TIESCALAR { bless [] } ; tie $a, 'main'; untie $a ;
5
6   fileno() on unopened filehandle abc           [pp_fileno]
7     $a = "abc"; fileno($a)
8
9   binmode() on unopened filehandle abc          [pp_binmode]
10     $a = "abc"; fileno($a)
11
12   printf() on unopened filehandle abc           [pp_prtf]
13     $a = "abc"; printf $a "fred"
14
15   Filehandle %s opened only for input           [pp_leavewrite]
16     format STDIN =
17     .
18     write STDIN;
19
20   write() on closed filehandle %s               [pp_leavewrite]
21     format STDIN =
22     .
23     close STDIN;
24     write STDIN ;
25
26   page overflow                                 [pp_leavewrite]
27
28   printf() on unopened filehandle abc           [pp_prtf]
29     $a = "abc"; printf $a "fred"
30
31   Filehandle %s opened only for input           [pp_prtf]
32     $a = "abc"; 
33     printf $a "fred"
34
35   printf() on closed filehandle %s              [pp_prtf]
36     close STDIN ;
37     printf STDIN "fred"
38
39   syswrite() on closed filehandle %s            [pp_send]
40     close STDIN; 
41     syswrite STDIN, "fred", 1;
42
43   send() on closed socket %s                    [pp_send]
44     close STDIN; 
45     send STDIN, "fred", 1
46
47   bind() on closed socket %s                    [pp_bind]
48     close STDIN; 
49     bind STDIN, "fred" ;
50
51
52   connect() on closed socket %s                 [pp_connect]
53     close STDIN; 
54     connect STDIN, "fred" ;
55
56   listen() on closed socket %s                  [pp_listen]
57     close STDIN; 
58     listen STDIN, 2;
59
60   accept() on closed socket %s                  [pp_accept]
61     close STDIN; 
62     accept "fred", STDIN ;
63
64   shutdown() on closed socket %s                [pp_shutdown]
65     close STDIN; 
66     shutdown STDIN, 0;
67
68   setsockopt() on closed socket %s              [pp_ssockopt]
69   getsockopt() on closed socket %s              [pp_ssockopt]
70     close STDIN; 
71     setsockopt STDIN, 1,2,3;
72     getsockopt STDIN, 1,2;
73
74   getsockname() on closed socket %s             [pp_getpeername]
75   getpeername() on closed socket %s             [pp_getpeername]
76     close STDIN; 
77     getsockname STDIN;
78     getpeername STDIN;
79
80   flock() on closed socket %s                   [pp_flock]
81   flock() on closed socket                      [pp_flock]
82     close STDIN;
83     flock STDIN, 8;
84     flock $a, 8;
85
86   warn(warn_nl, "stat");                        [pp_stat]
87
88   -T on closed filehandle %s
89   stat() on closed filehandle %s
90         close STDIN ; -T STDIN ; stat(STDIN) ;
91
92   warn(warn_nl, "open");                        [pp_fttext]
93     -T "abc\ndef" ;
94
95   Filehandle %s opened only for output          [pp_sysread]
96         my $file = "./xcv" ;
97         open(F, ">$file") ; 
98         my $a = sysread(F, $a,10) ;
99
100   lstat on filehandle %s                        [pp_lstat]
101
102   getc() on unopened filehandle                 [pp_getc]
103
104   getc() on closed filehandle                   [pp_getc]
105
106   Non-string passed as bitmask                  [pp_sselect]
107
108   %s too large                                  [pp_gmtime]
109
110   %s failed                                     [pp_gmtime]
111
112 __END__
113 # pp_sys.c [pp_untie]
114 use warnings 'untie' ;
115 sub TIESCALAR { bless [] } ; 
116 $b = tie $a, 'main'; 
117 untie $a ;
118 no warnings 'untie' ;
119 $c = tie $d, 'main'; 
120 untie $d ;
121 EXPECT
122 untie attempted while 1 inner references still exist at - line 5.
123 ########
124 # pp_sys.c [pp_leavewrite]
125 use warnings 'io' ;
126 format STDIN =
127 .
128 write STDIN;
129 no warnings 'io' ;
130 write STDIN;
131 EXPECT
132 Filehandle STDIN opened only for input at - line 5.
133 ########
134 # pp_sys.c [pp_leavewrite]
135 use warnings 'closed' ;
136 format STDIN =
137 .
138 format FOO =
139 .
140 close STDIN;
141 write STDIN;
142 write FOO;
143 opendir STDIN, ".";
144 write STDIN;
145 closedir STDIN;
146 opendir FOO, ".";
147 write FOO;
148 closedir FOO;
149 no warnings 'closed' ;
150 write STDIN;
151 write FOO;
152 opendir STDIN, ".";
153 opendir FOO, ".";
154 write STDIN;
155 write FOO;
156 EXPECT
157 write() on closed filehandle STDIN at - line 8.
158 write() on closed filehandle STDIN at - line 11.
159         (Are you trying to call write() on dirhandle STDIN?)
160 ########
161 # pp_sys.c [pp_leavewrite]
162 use warnings 'unopened';
163 format STDIN =
164 .
165 format FOO =
166 .
167 close STDIN;
168 write STDIN;
169 write FOO;
170 opendir STDIN, ".";
171 write STDIN;
172 closedir STDIN;
173 opendir FOO, ".";
174 write FOO;
175 closedir FOO;
176 no warnings 'unopened';
177 write STDIN;
178 write FOO;
179 opendir STDIN, ".";
180 opendir FOO, ".";
181 write STDIN;
182 write FOO;
183 EXPECT
184 write() on unopened filehandle FOO at - line 9.
185 write() on unopened filehandle FOO at - line 14.
186         (Are you trying to call write() on dirhandle FOO?)
187 ########
188 # pp_sys.c [pp_leavewrite]
189 use warnings 'io' ;
190 format STDOUT_TOP =
191 abc
192 .
193 format STDOUT =
194 def
195 ghi
196 .
197 $= = 1 ;
198 $- =1 ;
199 open STDOUT, ">".($^O eq 'VMS'? 'NL:' : '/dev/null') ;
200 write ;
201 no warnings 'io' ;
202 write ;
203 EXPECT
204 page overflow at - line 13.
205 ########
206 # pp_sys.c [pp_prtf]
207 use warnings 'unopened' ;
208 $a = "abc"; 
209 printf $a "fred";
210 no warnings 'unopened' ;
211 printf $a "fred";
212 EXPECT
213 printf() on unopened filehandle abc at - line 4.
214 ########
215 # pp_sys.c [pp_prtf]
216 use warnings 'closed' ;
217 close STDIN ;
218 printf STDIN "fred";
219 opendir STDIN, ".";
220 printf STDIN "fred";
221 closedir STDIN;
222 no warnings 'closed' ;
223 printf STDIN "fred";
224 opendir STDIN, ".";
225 printf STDIN "fred";
226 EXPECT
227 printf() on closed filehandle STDIN at - line 4.
228 printf() on closed filehandle STDIN at - line 6.
229         (Are you trying to call printf() on dirhandle STDIN?)
230 ########
231 # pp_sys.c [pp_prtf]
232 use warnings 'io' ;
233 printf STDIN "fred";
234 no warnings 'io' ;
235 printf STDIN "fred";
236 EXPECT
237 Filehandle STDIN opened only for input at - line 3.
238 ########
239 # pp_sys.c [pp_send]
240 use warnings 'io' ;
241 syswrite STDIN, "fred";
242 no warnings 'io' ;
243 syswrite STDIN, "fred";
244 EXPECT
245 Filehandle STDIN opened only for input at - line 3.
246 ########
247 # pp_sys.c [pp_send]
248 use warnings 'closed' ;
249 close STDIN; 
250 syswrite STDIN, "fred", 1;
251 opendir STDIN, ".";
252 syswrite STDIN, "fred", 1;
253 closedir STDIN;
254 no warnings 'closed' ;
255 syswrite STDIN, "fred", 1;
256 opendir STDIN, ".";
257 syswrite STDIN, "fred", 1;
258 EXPECT
259 syswrite() on closed filehandle STDIN at - line 4.
260 syswrite() on closed filehandle STDIN at - line 6.
261         (Are you trying to call syswrite() on dirhandle STDIN?)
262 ########
263 # pp_sys.c [pp_flock]
264 use Config; 
265 BEGIN { 
266   if ( !$Config{d_flock} &&
267        !$Config{d_fcntl_can_lock} &&
268        !$Config{d_lockf} ) {
269     print <<EOM ;
270 SKIPPED
271 # flock not present
272 EOM
273     exit ;
274   } 
275 }
276 use warnings qw(unopened closed);
277 close STDIN;
278 flock STDIN, 8;
279 opendir STDIN, ".";
280 flock STDIN, 8;
281 flock FOO, 8;
282 flock $a, 8;
283 no warnings qw(unopened closed);
284 flock STDIN, 8;
285 opendir STDIN, ".";
286 flock STDIN, 8;
287 flock FOO, 8;
288 flock $a, 8;
289 EXPECT
290 flock() on closed filehandle STDIN at - line 16.
291 flock() on closed filehandle STDIN at - line 18.
292         (Are you trying to call flock() on dirhandle STDIN?)
293 flock() on unopened filehandle FOO at - line 19.
294 flock() on unopened filehandle at - line 20.
295 ########
296 # pp_sys.c [pp_prtf pp_send pp_bind pp_connect pp_listen pp_accept pp_shutdown pp_ssockopt ppp_getpeername]
297 use warnings 'closed';
298 use Config; 
299 BEGIN { 
300   if ( $^O ne 'VMS' and ! $Config{d_socket}) {
301     print <<EOM ;
302 SKIPPED
303 # send not present
304 # bind not present
305 # connect not present
306 # accept not present
307 # shutdown not present
308 # setsockopt not present
309 # getsockopt not present
310 # getsockname not present
311 # getpeername not present
312 EOM
313     exit ;
314   } 
315 }
316 close STDIN; 
317 send STDIN, "fred", 1;
318 bind STDIN, "fred" ;
319 connect STDIN, "fred" ;
320 listen STDIN, 2;
321 accept "fred", STDIN;
322 shutdown STDIN, 0;
323 setsockopt STDIN, 1,2,3;
324 getsockopt STDIN, 1,2;
325 getsockname STDIN;
326 getpeername STDIN;
327 opendir STDIN, ".";
328 send STDIN, "fred", 1;
329 bind STDIN, "fred" ;
330 connect STDIN, "fred" ;
331 listen STDIN, 2;
332 accept "fred", STDIN;
333 shutdown STDIN, 0;
334 setsockopt STDIN, 1,2,3;
335 getsockopt STDIN, 1,2;
336 getsockname STDIN;
337 getpeername STDIN;
338 closedir STDIN;
339 send FOO, "fred", 1;
340 bind FOO, "fred" ;
341 connect FOO, "fred" ;
342 listen FOO, 2;
343 accept "fred", FOO;
344 shutdown FOO, 0;
345 setsockopt FOO, 1,2,3;
346 getsockopt FOO, 1,2;
347 getsockname FOO;
348 getpeername FOO;
349 opendir FOO, ".";
350 send FOO, "fred", 1;
351 bind FOO, "fred" ;
352 connect FOO, "fred" ;
353 listen FOO, 2;
354 accept "fred", FOO;
355 shutdown FOO, 0;
356 setsockopt FOO, 1,2,3;
357 getsockopt FOO, 1,2;
358 getsockname FOO;
359 getpeername FOO;
360 closedir FOO;
361 no warnings 'closed';
362 send STDIN, "fred", 1;
363 bind STDIN, "fred" ;
364 connect STDIN, "fred" ;
365 listen STDIN, 2;
366 accept STDIN, "fred" ;
367 shutdown STDIN, 0;
368 setsockopt STDIN, 1,2,3;
369 getsockopt STDIN, 1,2;
370 getsockname STDIN;
371 getpeername STDIN;
372 opendir STDIN, ".";
373 send STDIN, "fred", 1;
374 bind STDIN, "fred" ;
375 connect STDIN, "fred" ;
376 listen STDIN, 2;
377 accept "fred", STDIN;
378 shutdown STDIN, 0;
379 setsockopt STDIN, 1,2,3;
380 getsockopt STDIN, 1,2;
381 getsockname STDIN;
382 getpeername STDIN;
383 send FOO, "fred", 1;
384 bind FOO, "fred" ;
385 connect FOO, "fred" ;
386 listen FOO, 2;
387 accept FOO, "fred" ;
388 shutdown FOO, 0;
389 setsockopt FOO, 1,2,3;
390 getsockopt FOO, 1,2;
391 getsockname FOO;
392 getpeername FOO;
393 opendir FOO, ".";
394 send FOO, "fred", 1;
395 bind FOO, "fred" ;
396 connect FOO, "fred" ;
397 listen FOO, 2;
398 accept "fred", FOO;
399 shutdown FOO, 0;
400 setsockopt FOO, 1,2,3;
401 getsockopt FOO, 1,2;
402 getsockname FOO;
403 getpeername FOO;
404 EXPECT
405 send() on closed socket STDIN at - line 22.
406 bind() on closed socket STDIN at - line 23.
407 connect() on closed socket STDIN at - line 24.
408 listen() on closed socket STDIN at - line 25.
409 accept() on closed socket STDIN at - line 26.
410 shutdown() on closed socket STDIN at - line 27.
411 setsockopt() on closed socket STDIN at - line 28.
412 getsockopt() on closed socket STDIN at - line 29.
413 getsockname() on closed socket STDIN at - line 30.
414 getpeername() on closed socket STDIN at - line 31.
415 send() on closed socket STDIN at - line 33.
416         (Are you trying to call send() on dirhandle STDIN?)
417 bind() on closed socket STDIN at - line 34.
418         (Are you trying to call bind() on dirhandle STDIN?)
419 connect() on closed socket STDIN at - line 35.
420         (Are you trying to call connect() on dirhandle STDIN?)
421 listen() on closed socket STDIN at - line 36.
422         (Are you trying to call listen() on dirhandle STDIN?)
423 accept() on closed socket STDIN at - line 37.
424         (Are you trying to call accept() on dirhandle STDIN?)
425 shutdown() on closed socket STDIN at - line 38.
426         (Are you trying to call shutdown() on dirhandle STDIN?)
427 setsockopt() on closed socket STDIN at - line 39.
428         (Are you trying to call setsockopt() on dirhandle STDIN?)
429 getsockopt() on closed socket STDIN at - line 40.
430         (Are you trying to call getsockopt() on dirhandle STDIN?)
431 getsockname() on closed socket STDIN at - line 41.
432         (Are you trying to call getsockname() on dirhandle STDIN?)
433 getpeername() on closed socket STDIN at - line 42.
434         (Are you trying to call getpeername() on dirhandle STDIN?)
435 ########
436 # pp_sys.c [pp_prtf pp_send pp_bind pp_connect pp_listen pp_accept pp_shutdown pp_ssockopt ppp_getpeername]
437 use warnings 'unopened';
438 use Config; 
439 BEGIN { 
440   if ( $^O ne 'VMS' and ! $Config{d_socket}) {
441     print <<EOM ;
442 SKIPPED
443 # send not present
444 # bind not present
445 # connect not present
446 # accept not present
447 # shutdown not present
448 # setsockopt not present
449 # getsockopt not present
450 # getsockname not present
451 # getpeername not present
452 EOM
453     exit ;
454   } 
455 }
456 close STDIN; 
457 send STDIN, "fred", 1;
458 bind STDIN, "fred" ;
459 connect STDIN, "fred" ;
460 listen STDIN, 2;
461 accept "fred", STDIN;
462 shutdown STDIN, 0;
463 setsockopt STDIN, 1,2,3;
464 getsockopt STDIN, 1,2;
465 getsockname STDIN;
466 getpeername STDIN;
467 opendir STDIN, ".";
468 send STDIN, "fred", 1;
469 bind STDIN, "fred" ;
470 connect STDIN, "fred" ;
471 listen STDIN, 2;
472 accept "fred", STDIN;
473 shutdown STDIN, 0;
474 setsockopt STDIN, 1,2,3;
475 getsockopt STDIN, 1,2;
476 getsockname STDIN;
477 getpeername STDIN;
478 closedir STDIN;
479 send FOO, "fred", 1;
480 bind FOO, "fred" ;
481 connect FOO, "fred" ;
482 listen FOO, 2;
483 accept "fred", FOO;
484 shutdown FOO, 0;
485 setsockopt FOO, 1,2,3;
486 getsockopt FOO, 1,2;
487 getsockname FOO;
488 getpeername FOO;
489 opendir FOO, ".";
490 send FOO, "fred", 1;
491 bind FOO, "fred" ;
492 connect FOO, "fred" ;
493 listen FOO, 2;
494 accept "fred", FOO;
495 shutdown FOO, 0;
496 setsockopt FOO, 1,2,3;
497 getsockopt FOO, 1,2;
498 getsockname FOO;
499 getpeername FOO;
500 closedir FOO;
501 no warnings 'unopened';
502 send STDIN, "fred", 1;
503 bind STDIN, "fred" ;
504 connect STDIN, "fred" ;
505 listen STDIN, 2;
506 accept STDIN, "fred" ;
507 shutdown STDIN, 0;
508 setsockopt STDIN, 1,2,3;
509 getsockopt STDIN, 1,2;
510 getsockname STDIN;
511 getpeername STDIN;
512 opendir STDIN, ".";
513 send STDIN, "fred", 1;
514 bind STDIN, "fred" ;
515 connect STDIN, "fred" ;
516 listen STDIN, 2;
517 accept "fred", STDIN;
518 shutdown STDIN, 0;
519 setsockopt STDIN, 1,2,3;
520 getsockopt STDIN, 1,2;
521 getsockname STDIN;
522 getpeername STDIN;
523 send FOO, "fred", 1;
524 bind FOO, "fred" ;
525 connect FOO, "fred" ;
526 listen FOO, 2;
527 accept FOO, "fred" ;
528 shutdown FOO, 0;
529 setsockopt FOO, 1,2,3;
530 getsockopt FOO, 1,2;
531 getsockname FOO;
532 getpeername FOO;
533 opendir FOO, ".";
534 send FOO, "fred", 1;
535 bind FOO, "fred" ;
536 connect FOO, "fred" ;
537 listen FOO, 2;
538 accept "fred", FOO;
539 shutdown FOO, 0;
540 setsockopt FOO, 1,2,3;
541 getsockopt FOO, 1,2;
542 getsockname FOO;
543 getpeername FOO;
544 EXPECT
545 send() on unopened socket FOO at - line 44.
546 bind() on unopened socket FOO at - line 45.
547 connect() on unopened socket FOO at - line 46.
548 listen() on unopened socket FOO at - line 47.
549 accept() on unopened socket FOO at - line 48.
550 shutdown() on unopened socket FOO at - line 49.
551 setsockopt() on unopened socket FOO at - line 50.
552 getsockopt() on unopened socket FOO at - line 51.
553 getsockname() on unopened socket FOO at - line 52.
554 getpeername() on unopened socket FOO at - line 53.
555 send() on unopened socket FOO at - line 55.
556         (Are you trying to call send() on dirhandle FOO?)
557 bind() on unopened socket FOO at - line 56.
558         (Are you trying to call bind() on dirhandle FOO?)
559 connect() on unopened socket FOO at - line 57.
560         (Are you trying to call connect() on dirhandle FOO?)
561 listen() on unopened socket FOO at - line 58.
562         (Are you trying to call listen() on dirhandle FOO?)
563 accept() on unopened socket FOO at - line 59.
564         (Are you trying to call accept() on dirhandle FOO?)
565 shutdown() on unopened socket FOO at - line 60.
566         (Are you trying to call shutdown() on dirhandle FOO?)
567 setsockopt() on unopened socket FOO at - line 61.
568         (Are you trying to call setsockopt() on dirhandle FOO?)
569 getsockopt() on unopened socket FOO at - line 62.
570         (Are you trying to call getsockopt() on dirhandle FOO?)
571 getsockname() on unopened socket FOO at - line 63.
572         (Are you trying to call getsockname() on dirhandle FOO?)
573 getpeername() on unopened socket FOO at - line 64.
574         (Are you trying to call getpeername() on dirhandle FOO?)
575 ########
576 # pp_sys.c [pp_stat]
577 use warnings 'newline' ;
578 stat "abc\ndef";
579 stat "abcdef\n";
580 stat "abcdef\n\0";
581 no warnings 'newline' ;
582 stat "abc\ndef";
583 stat "abcdef\n";
584 stat "abcdef\n\0";
585 EXPECT
586 Unsuccessful stat on filename containing newline at - line 4.
587 Unsuccessful stat on filename containing newline at - line 5.
588 ########
589 # pp_sys.c [pp_fttext]
590 use warnings qw(unopened closed) ;
591 close STDIN ; 
592 -T STDIN ;
593 stat(STDIN) ;
594 -T HOCUS;
595 stat(POCUS);
596 stat "../test.pl";
597 stat *foo;
598 no warnings qw(unopened closed) ;
599 -T STDIN ;
600 stat(STDIN);
601 -T HOCUS;
602 stat(POCUS);
603 stat "../test.pl";
604 stat *foo;
605 EXPECT
606 -T on closed filehandle STDIN at - line 4.
607 stat() on closed filehandle STDIN at - line 5.
608 -T on unopened filehandle HOCUS at - line 6.
609 stat() on unopened filehandle POCUS at - line 7.
610 stat() on unopened filehandle foo at - line 9.
611 ########
612 # pp_sys.c [pp_fttext]
613 use warnings 'newline' ;
614 -T "abc\ndef" ;
615 -T "abcdef\n" ;
616 -T "abcdef\n\0" ;
617 no warnings 'newline' ;
618 -T "abc\ndef" ;
619 -T "abcdef\n" ;
620 -T "abcdef\n\0" ;
621 EXPECT
622 Unsuccessful open on filename containing newline at - line 4.
623 Unsuccessful open on filename containing newline at - line 5.
624 ########
625 # pp_sys.c [pp_sysread]
626 use warnings 'io' ;
627 if ($^O eq 'dos') {
628     print <<EOM ;
629 SKIPPED
630 # skipped on dos
631 EOM
632     exit ;
633 }
634 my $file = "./xcv" ;
635 open(F, ">$file") ; 
636 my $a = sysread(F, $a,10) ;
637 no warnings 'io' ;
638 my $a = sysread(F, $a,10) ;
639 close F ;
640 use warnings 'io' ;
641 sysread(F, $a, 10);
642 read(F, $a, 10);
643 sysread(NONEXISTENT, $a, 10);
644 read(NONEXISTENT, $a, 10);
645 unlink $file ;
646 EXPECT
647 Filehandle F opened only for output at - line 12.
648 sysread() on closed filehandle F at - line 17.
649 read() on closed filehandle F at - line 18.
650 sysread() on unopened filehandle NONEXISTENT at - line 19.
651 read() on unopened filehandle NONEXISTENT at - line 20.
652 ########
653 # pp_sys.c [pp_binmode]
654 use warnings 'unopened' ;
655 binmode(BLARG);
656 $a = "BLERG";binmode($a);
657 EXPECT
658 binmode() on unopened filehandle BLARG at - line 3.
659 binmode() on unopened filehandle at - line 4.
660 ########
661 # pp_sys.c [pp_lstat]
662 use warnings 'io';
663 open FH, "../harness" or die "# $!";
664 lstat FH;
665 lstat *FH;
666 lstat \*FH;
667 open my $fh, $0 or die "# $!";
668 lstat $fh;
669 lstat *FH{IO};
670 no warnings 'io';
671 lstat FH;
672 lstat $fh;
673 close FH;
674 close $fh;
675 EXPECT
676 lstat() on filehandle FH at - line 4.
677 lstat() on filehandle FH at - line 5.
678 lstat() on filehandle FH at - line 6.
679 lstat() on filehandle $fh at - line 8.
680 lstat() on filehandle at - line 9.
681 ########
682
683 # pp_sys.c [pp_lstat]
684 use warnings 'io';
685 use utf8;
686 use open qw( :utf8 :std );
687 open ᶠḨ, "../harness" or die "# $!";
688 lstat ᶠḨ;
689 open my $fᚺ, $0 or die "# $!";
690 lstat $fᚺ;
691 no warnings 'io';
692 lstat ᶠḨ;
693 lstat $fᚺ;
694 close ᶠḨ;
695 close $fᚺ;
696 EXPECT
697 lstat() on filehandle ᶠḨ at - line 7.
698 lstat() on filehandle $fᚺ at - line 9.
699 ########
700 # pp_sys.c [pp_getc]
701 use warnings qw(unopened closed) ;
702 getc FOO;
703 close STDIN;
704 getc STDIN;
705 # Create an empty file
706 $file = 'getcwarn.tmp';
707 open FH1, ">$file" or die "# $!"; close FH1;
708 open FH2, $file    or die "# $!";
709 getc FH2; # Should not warn at EOF
710 close FH2;
711 getc FH2; # Warns, now
712 unlink $file;
713 no warnings qw(unopened closed) ;
714 getc FOO;
715 getc STDIN;
716 getc FH2;
717 EXPECT
718 getc() on unopened filehandle FOO at - line 3.
719 getc() on closed filehandle STDIN at - line 5.
720 getc() on closed filehandle FH2 at - line 12.
721 ########
722 # pp_sys.c [pp_sselect]
723 use warnings 'misc';
724 $x = 1;
725 select $x, undef, undef, 1;
726 sub TIESCALAR{bless[]} sub FETCH {"hello"} sub STORE{}
727 tie $y, "";
728 select $y, undef, undef, 1;
729 no warnings 'misc';
730 select $x, undef, undef, 1;
731 EXPECT
732 Non-string passed as bitmask at - line 4.
733 ########
734 use Config;
735 BEGIN {
736     if (!$Config{d_fchdir}) {
737         print <<EOM;
738 SKIPPED
739 # fchdir not present
740 EOM
741         exit;
742     }
743 }
744 opendir FOO, '.'; closedir FOO;
745 open BAR, '.'; close BAR;
746 opendir $dh, '.'; closedir $dh;
747 open $fh, '.'; close $fh;
748 chdir FOO;
749 chdir BAR;
750 chdir $dh;
751 chdir $fh;
752 use warnings qw(unopened closed) ;
753 chdir FOO;
754 chdir BAR;
755 chdir $dh;
756 chdir $fh;
757 EXPECT
758 chdir() on unopened filehandle FOO at - line 20.
759 chdir() on closed filehandle BAR at - line 21.
760 chdir() on unopened filehandle $dh at - line 22.
761 chdir() on closed filehandle $fh at - line 23.
762 ########
763 # pp_sys.c [pp_open]
764 use warnings;
765 opendir FOO, ".";
766 opendir my $foo, ".";
767 open FOO, "../harness";
768 open $foo, "../harness";
769 no warnings qw(io deprecated);
770 open FOO, "../harness";
771 open $foo, "../harness";
772 EXPECT
773 Opening dirhandle FOO also as a file at - line 5.
774 Opening dirhandle $foo also as a file at - line 6.
775 ########
776
777 # pp_sys.c [pp_open]
778 use utf8;
779 use open qw( :utf8 :std );
780 use warnings;
781 opendir FOO, ".";
782 opendir $foo, ".";
783 open FOO, "../harness";
784 open $foo, "../harness";
785 no warnings qw(io deprecated);
786 open FOO, "../harness";
787 open $foo, "../harness";
788 EXPECT
789 Opening dirhandle FOO also as a file at - line 8.
790 Opening dirhandle $foo also as a file at - line 9.
791 ########
792 # pp_sys.c [pp_open_dir]
793 use warnings;
794 open FOO, "../harness";
795 open my $foo, "../harness";
796 opendir FOO, ".";
797 opendir $foo, ".";
798 no warnings qw(io deprecated);
799 opendir FOO, ".";
800 opendir $foo, ".";
801 EXPECT
802 Opening filehandle FOO also as a directory at - line 5.
803 Opening filehandle $foo also as a directory at - line 6.
804 ########
805
806 # pp_sys.c [pp_open_dir]
807 use utf8;
808 use open qw( :utf8 :std );
809 use warnings;
810 use warnings;
811 open FOO, "../harness";
812 open $foo, "../harness";
813 opendir FOO, ".";
814 opendir $foo, ".";
815 no warnings qw(io deprecated);
816 opendir FOO, ".";
817 opendir $foo, ".";
818 EXPECT
819 Opening filehandle FOO also as a directory at - line 9.
820 Opening filehandle $foo also as a directory at - line 10.
821 ########
822 # pp_sys.c [pp_*dir]
823 use Config ;
824 BEGIN {
825     if ( ! $Config{d_telldir}) {
826         print <<EOM ;
827 SKIPPED
828 # telldir not present
829 EOM
830         exit
831     }
832 }
833 #line 2
834 use warnings 'io';
835 opendir FOO, ".";
836 opendir $foo, ".";
837 closedir FOO;
838 closedir $foo;
839
840 readdir(FOO);
841 telldir(FOO);
842 seekdir(FOO, 0);
843 rewinddir(FOO);
844 closedir(FOO);
845
846 readdir($foo);
847 telldir($foo);
848 seekdir($foo, 0);
849 rewinddir($foo);
850 closedir($foo);
851
852 EXPECT
853 readdir() attempted on invalid dirhandle FOO at - line 8.
854 telldir() attempted on invalid dirhandle FOO at - line 9.
855 seekdir() attempted on invalid dirhandle FOO at - line 10.
856 rewinddir() attempted on invalid dirhandle FOO at - line 11.
857 closedir() attempted on invalid dirhandle FOO at - line 12.
858 readdir() attempted on invalid dirhandle $foo at - line 14.
859 telldir() attempted on invalid dirhandle $foo at - line 15.
860 seekdir() attempted on invalid dirhandle $foo at - line 16.
861 rewinddir() attempted on invalid dirhandle $foo at - line 17.
862 closedir() attempted on invalid dirhandle $foo at - line 18.
863 ########
864
865 # pp_sys.c [pp_*dir]
866 use Config ;
867 BEGIN {
868     if ( ! $Config{d_telldir}) {
869         print <<EOM ;
870 SKIPPED
871 # telldir not present
872 EOM
873         exit
874     }
875 }
876 #line 3
877 use utf8;
878 use open qw( :utf8 :std );
879 use warnings 'io';
880 opendir FOO, ".";
881 opendir $foo, ".";
882 opendir FOO, ".";
883 opendir $foo, ".";
884 closedir FOO;
885 closedir $foo;
886
887 readdir(FOO);
888 telldir(FOO);
889 seekdir(FOO, 0);
890 rewinddir(FOO);
891 closedir(FOO);
892
893 readdir($foo);
894 telldir($foo);
895 seekdir($foo, 0);
896 rewinddir($foo);
897 closedir($foo);
898
899 EXPECT
900 readdir() attempted on invalid dirhandle FOO at - line 13.
901 telldir() attempted on invalid dirhandle FOO at - line 14.
902 seekdir() attempted on invalid dirhandle FOO at - line 15.
903 rewinddir() attempted on invalid dirhandle FOO at - line 16.
904 closedir() attempted on invalid dirhandle FOO at - line 17.
905 readdir() attempted on invalid dirhandle $foo at - line 19.
906 telldir() attempted on invalid dirhandle $foo at - line 20.
907 seekdir() attempted on invalid dirhandle $foo at - line 21.
908 rewinddir() attempted on invalid dirhandle $foo at - line 22.
909 closedir() attempted on invalid dirhandle $foo at - line 23.
910 ########
911
912 # pp_sys.c [pp_gmtime]
913 gmtime("NaN");
914 localtime("NaN");
915 use warnings "overflow";
916 gmtime("NaN");
917 localtime("NaN");
918
919 EXPECT
920 gmtime(NaN) too large at - line 6.
921 gmtime(NaN) failed at - line 6.
922 localtime(NaN) too large at - line 7.
923 localtime(NaN) failed at - line 7.