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