Commit | Line | Data |
9d1c1517 |
1 | #!./perl -w |
2 | |
3 | BEGIN { |
4 | chdir 't' if -d 't'; |
5 | @INC = '../lib' if -f '../lib/Carp.pm'; |
6 | } |
7 | |
8 | if ($^O =~ /^(MSWin32|os2|NetWare|dos)$/) { |
9 | print "1..25\n"; |
10 | } |
11 | else { |
12 | print "1..0 # skipped: not a dosish system\n"; |
13 | exit 0; |
14 | } |
15 | |
16 | use Fcntl qw(:DEFAULT :seek); |
17 | my $tmpf = "sysioc.tmp"; |
18 | my $n; |
19 | my $v; |
20 | END { 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 |
30 | print "not " if (-s $tmpf) != 5; # should be "zyx\r\n" |
31 | print "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 |
82 | print "not " if (-s $tmpf) != 9; # should be "zyx\r\n\cZpqr" |
83 | print "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 | } |