This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Disallow opening the same symbol as both a file and directory handle
[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 binmode F;
637 my $a = sysread(F, $a,10) ;
638 no warnings 'io' ;
639 my $a = sysread(F, $a,10) ;
640 close F ;
641 use warnings 'io' ;
642 sysread(F, $a, 10);
643 read(F, $a, 10);
644 sysread(NONEXISTENT, $a, 10);
645 read(NONEXISTENT, $a, 10);
646 unlink $file ;
647 EXPECT
648 Filehandle F opened only for output at - line 13.
649 sysread() on closed filehandle F at - line 18.
650 read() on closed filehandle F at - line 19.
651 sysread() on unopened filehandle NONEXISTENT at - line 20.
652 read() on unopened filehandle NONEXISTENT at - line 21.
653 ########
654 # pp_sys.c [pp_binmode]
655 use warnings 'unopened' ;
656 binmode(BLARG);
657 $a = "BLERG";binmode($a);
658 EXPECT
659 binmode() on unopened filehandle BLARG at - line 3.
660 binmode() on unopened filehandle at - line 4.
661 ########
662 # pp_sys.c [pp_lstat]
663 use warnings 'io';
664 open FH, "../harness" or die "# $!";
665 lstat FH;
666 lstat *FH;
667 lstat \*FH;
668 open my $fh, $0 or die "# $!";
669 lstat $fh;
670 lstat *FH{IO};
671 no warnings 'io';
672 lstat FH;
673 lstat $fh;
674 close FH;
675 close $fh;
676 EXPECT
677 lstat() on filehandle FH at - line 4.
678 lstat() on filehandle FH at - line 5.
679 lstat() on filehandle FH at - line 6.
680 lstat() on filehandle $fh at - line 8.
681 lstat() on filehandle at - line 9.
682 ########
683
684 # pp_sys.c [pp_lstat]
685 use warnings 'io';
686 use utf8;
687 use open qw( :utf8 :std );
688 open ᶠḨ, "../harness" or die "# $!";
689 lstat ᶠḨ;
690 open my $fᚺ, $0 or die "# $!";
691 lstat $fᚺ;
692 no warnings 'io';
693 lstat ᶠḨ;
694 lstat $fᚺ;
695 close ᶠḨ;
696 close $fᚺ;
697 EXPECT
698 lstat() on filehandle ᶠḨ at - line 7.
699 lstat() on filehandle $fᚺ at - line 9.
700 ########
701 # pp_sys.c [pp_getc]
702 use warnings qw(unopened closed) ;
703 getc FOO;
704 close STDIN;
705 getc STDIN;
706 # Create an empty file
707 $file = 'getcwarn.tmp';
708 open FH1, ">$file" or die "# $!"; close FH1;
709 open FH2, $file    or die "# $!";
710 getc FH2; # Should not warn at EOF
711 close FH2;
712 getc FH2; # Warns, now
713 unlink $file;
714 no warnings qw(unopened closed) ;
715 getc FOO;
716 getc STDIN;
717 getc FH2;
718 EXPECT
719 getc() on unopened filehandle FOO at - line 3.
720 getc() on closed filehandle STDIN at - line 5.
721 getc() on closed filehandle FH2 at - line 12.
722 ########
723 # pp_sys.c [pp_sselect]
724 use warnings 'misc';
725 $x = 1;
726 select $x, undef, undef, 1;
727 sub TIESCALAR{bless[]} sub FETCH {"hello"} sub STORE{}
728 tie $y, "";
729 select $y, undef, undef, 1;
730 no warnings 'misc';
731 select $x, undef, undef, 1;
732 EXPECT
733 Non-string passed as bitmask at - line 4.
734 ########
735 use Config;
736 BEGIN {
737     if (!$Config{d_fchdir}) {
738         print <<EOM;
739 SKIPPED
740 # fchdir not present
741 EOM
742         exit;
743     }
744 }
745 opendir FOO, '.'; closedir FOO;
746 open BAR, '.'; close BAR;
747 opendir $dh, '.'; closedir $dh;
748 open $fh, '.'; close $fh;
749 chdir FOO;
750 chdir BAR;
751 chdir $dh;
752 chdir $fh;
753 use warnings qw(unopened closed) ;
754 chdir FOO;
755 chdir BAR;
756 chdir $dh;
757 chdir $fh;
758 EXPECT
759 chdir() on unopened filehandle FOO at - line 20.
760 chdir() on closed filehandle BAR at - line 21.
761 chdir() on unopened filehandle $dh at - line 22.
762 chdir() on closed filehandle $fh at - line 23.
763 ########
764 # pp_sys.c [pp_*dir]
765 use Config ;
766 BEGIN {
767     if ( ! $Config{d_telldir}) {
768         print <<EOM ;
769 SKIPPED
770 # telldir not present
771 EOM
772         exit
773     }
774 }
775 #line 2
776 use warnings 'io';
777 opendir FOO, ".";
778 opendir $foo, ".";
779 closedir FOO;
780 closedir $foo;
781
782 readdir(FOO);
783 telldir(FOO);
784 seekdir(FOO, 0);
785 rewinddir(FOO);
786 closedir(FOO);
787
788 readdir($foo);
789 telldir($foo);
790 seekdir($foo, 0);
791 rewinddir($foo);
792 closedir($foo);
793
794 EXPECT
795 readdir() attempted on invalid dirhandle FOO at - line 8.
796 telldir() attempted on invalid dirhandle FOO at - line 9.
797 seekdir() attempted on invalid dirhandle FOO at - line 10.
798 rewinddir() attempted on invalid dirhandle FOO at - line 11.
799 closedir() attempted on invalid dirhandle FOO at - line 12.
800 readdir() attempted on invalid dirhandle $foo at - line 14.
801 telldir() attempted on invalid dirhandle $foo at - line 15.
802 seekdir() attempted on invalid dirhandle $foo at - line 16.
803 rewinddir() attempted on invalid dirhandle $foo at - line 17.
804 closedir() attempted on invalid dirhandle $foo at - line 18.
805 ########
806
807 # pp_sys.c [pp_*dir]
808 use Config ;
809 BEGIN {
810     if ( ! $Config{d_telldir}) {
811         print <<EOM ;
812 SKIPPED
813 # telldir not present
814 EOM
815         exit
816     }
817 }
818 #line 3
819 use utf8;
820 use open qw( :utf8 :std );
821 use warnings 'io';
822 opendir FOO, ".";
823 opendir $foo, ".";
824 opendir FOO, ".";
825 opendir $foo, ".";
826 closedir FOO;
827 closedir $foo;
828
829 readdir(FOO);
830 telldir(FOO);
831 seekdir(FOO, 0);
832 rewinddir(FOO);
833 closedir(FOO);
834
835 readdir($foo);
836 telldir($foo);
837 seekdir($foo, 0);
838 rewinddir($foo);
839 closedir($foo);
840
841 EXPECT
842 readdir() attempted on invalid dirhandle FOO at - line 13.
843 telldir() attempted on invalid dirhandle FOO at - line 14.
844 seekdir() attempted on invalid dirhandle FOO at - line 15.
845 rewinddir() attempted on invalid dirhandle FOO at - line 16.
846 closedir() attempted on invalid dirhandle FOO at - line 17.
847 readdir() attempted on invalid dirhandle $foo at - line 19.
848 telldir() attempted on invalid dirhandle $foo at - line 20.
849 seekdir() attempted on invalid dirhandle $foo at - line 21.
850 rewinddir() attempted on invalid dirhandle $foo at - line 22.
851 closedir() attempted on invalid dirhandle $foo at - line 23.
852 ########
853
854 # pp_sys.c [pp_gmtime]
855 use Config;
856 unless ($Config{d_double_has_nan}) {
857     print <<EOM ;
858 SKIPPED
859 # No nan support
860 EOM
861     exit ;
862 }
863 gmtime("NaN");
864 localtime("NaN");
865 use warnings "overflow";
866 gmtime("NaN");
867 localtime("NaN");
868
869 EXPECT
870 gmtime(NaN) too large at - line 14.
871 gmtime(NaN) failed at - line 14.
872 localtime(NaN) too large at - line 15.
873 localtime(NaN) failed at - line 15.
874
875 ########
876 # pp_sys.c [pp_alarm]
877 alarm(-1);
878 no warnings "misc";
879 alarm(-1);
880
881 EXPECT
882 alarm() with negative argument at - line 2.
883
884 ########
885 # pp_sys.c [pp_sleep]
886 sleep(-1);
887 no warnings "misc";
888 sleep(-1);
889
890 EXPECT
891 sleep() with negative argument at - line 2.
892 ########
893 # NAME sysread() deprecated on :utf8
894 open my $fh, "<:raw", "../harness" or die "# $!";
895 my $buf;
896 sysread $fh, $buf, 10;
897 binmode $fh, ':utf8';
898 sysread $fh, $buf, 10;
899 no warnings 'deprecated';
900 sysread $fh, $buf, 10;
901 EXPECT
902 sysread() is deprecated on :utf8 handles. This will be a fatal error in Perl 5.30 at - line 5.
903 ########
904 # NAME syswrite() deprecated on :utf8
905 my $file = "syswwarn.tmp";
906 open my $fh, ">:raw", $file or die "# $!";
907 syswrite $fh, 'ABC';
908 binmode $fh, ':utf8';
909 syswrite $fh, 'ABC';
910 no warnings 'deprecated';
911 syswrite $fh, 'ABC';
912 close $fh;
913 unlink $file;
914 EXPECT
915 syswrite() is deprecated on :utf8 handles. This will be a fatal error in Perl 5.30 at - line 5.