Integrate mainline
[p5sagit/p5-mst-13.2.git] / t / op / sysio-compat.t
CommitLineData
9d1c1517 1#!./perl -w
2
3BEGIN {
4 chdir 't' if -d 't';
5 @INC = '../lib' if -f '../lib/Carp.pm';
6}
7
8if ($^O =~ /^(MSWin32|os2|NetWare|dos)$/) {
9 print "1..25\n";
10}
11else {
12 print "1..0 # skipped: not a dosish system\n";
13 exit 0;
14}
15
16use Fcntl qw(:DEFAULT :seek);
17my $tmpf = "sysioc.tmp";
18my $n;
19my $v;
20END { unlink $tmpf }
21
22# default read/write modes should be text
23{
24 sysopen(my $F, $tmpf, O_CREAT|O_RDWR|O_TRUNC) or die "Can't open $tmpf: $!";
25 $n = syswrite($F, "zyx\n");
26 print "not " unless $n == 4;
27 print "ok 1\n";
28}
29# must be flushed and closed here
30print "not " if (-s $tmpf) != 5; # should be "zyx\r\n"
31print "ok 2\n";
32
33{
34 sysopen(my $F, $tmpf, O_RDONLY) or die "Can't open $tmpf: $!";
35 $n = sysread($F, $v, 4);
36 print "not " unless $n == 4;
37 print "ok 3\n";
38 print "not " unless $v eq "zyx\n";
39 print "ok 4\n";
40 $n = sysread($F, $v, 10);
41 print "not " unless $n == 0; # eof
42 print "ok 5\n";
43 $n = sysseek($F, 0, SEEK_SET);
44 print "not " unless $n == 0;
45 print "ok 6\n";
46 $n = sysread($F, $v, 10);
47 print "not " unless $n == 4; # short read
48 print "ok 7\n";
49 print "not " unless $v eq "zyx\n";
50 print "ok 8\n";
51}
52
53# reading in binmode should see real contents
54{
55 sysopen(my $F, $tmpf, O_RDONLY|O_BINARY) or die "Can't open $tmpf: $!";
56 $n = sysread($F, $v, 5);
57 print "not " unless $n == 5;
58 print "ok 9\n";
59 print "not " unless $v eq "zyx\r\n";
60 print "ok 10\n";
61 $n = sysread($F, $v, 10);
62 print "not " unless $n == 0; # eof
63 print "ok 11\n";
64 $n = sysseek($F, 0, SEEK_SET);
65 print "not " unless $n == 0;
66 print "ok 12\n";
67 $n = sysread($F, $v, 10);
68 print "not " unless $n == 5; # short read
69 print "ok 13\n";
70 print "not " unless $v eq "zyx\r\n";
71 print "ok 14\n";
72}
73
74# ^Z handling
75{
76 sysopen(my $F, $tmpf, O_CREAT|O_RDWR|O_TRUNC|O_BINARY) or die "Can't open $tmpf: $!";
77 $n = syswrite($F, "zyx\r\n\cZpqr");
78 print "not " unless $n == 9;
79 print "ok 15\n";
80}
81# must be flushed and closed here
82print "not " if (-s $tmpf) != 9; # should be "zyx\r\n\cZpqr"
83print "ok 16\n";
84
85{
86 sysopen(my $F, $tmpf, O_RDONLY) or die "Can't open $tmpf: $!";
87 $n = sysread($F, $v, 4);
88 print "not " unless $n == 4;
89 print "ok 17\n";
90 print "not " unless $v eq "zyx\n";
91 print "ok 18\n";
92 $n = sysread($F, $v, 10); # eof
93 print "not " unless $n == 0;
94 print "ok 19\n";
95 $n = sysseek($F, 0, SEEK_SET);
96 print "not " unless $n == 0;
97 print "ok 20\n";
98 $n = sysread($F, $v, 10);
99 print "not " unless $n == 4; # short read
100 print "ok 21\n";
101 print "not " unless $v eq "zyx\n";
102 print "ok 22\n";
103 $n = sysread($F, $v, 10); # eof
104 print "not " unless $n == 0;
105 print "ok 23\n";
106}
107
108# reading in binmode should see real contents
109{
110 sysopen(my $F, $tmpf, O_RDONLY|O_BINARY) or die "Can't open $tmpf: $!";
111 $n = sysread($F, $v, 9);
112 print "not " unless $n == 9;
113 print "ok 24\n";
114 print "not " unless $v eq "zyx\r\n\cZpqr";
115 print "ok 25\n";
116}