| Checked Trace | |||
|---|---|---|---|
| linux_spec@[/nix/store/fxisrpncjn4cxxwnq2lvilriqx63s9k9-fs_test] | sexp | stdout | stderr |
| Traced Execution | stdout | stderr |
|---|
| Script | script |
|---|
| 1 | # processing file 'adhoc_lseek_tests-int.trace' ... |
| 2 | @type trace |
| 3 | # Tests for lseek |
| 4 | |
| 5 | |
| 6 | # ############################################# |
| 7 | # reads combined with lseek |
| 8 | # ############################################# |
| 9 | |
| 10 | # initialise a file with some text |
| 11 | open "f1.txt" [O_TRUNC;O_CREAT;O_WRONLY] 0o666 |
| 12 | Tau |
| 13 | RV_num(3) |
| 14 | write! (FD 3) "0123456789" 10 |
| 15 | Tau |
| 16 | RV_num(10) |
| 17 | close (FD 3) |
| 18 | Tau |
| 19 | RV_none |
| 20 | |
| 21 | open "f1.txt" [O_RDONLY] |
| 22 | Tau |
| 23 | RV_num(3) |
| 24 | |
| 25 | # read 2 bytes and then 2 again |
| 26 | read (FD 3) 2 |
| 27 | Tau |
| 28 | RV_bytes("01") |
| 29 | read (FD 3) 2 |
| 30 | Tau |
| 31 | RV_bytes("23") |
| 32 | |
| 33 | # jump back to beginning |
| 34 | lseek (FD 3) 0 SEEK_SET |
| 35 | Tau |
| 36 | RV_num(0) |
| 37 | read (FD 3) 2 |
| 38 | Tau |
| 39 | RV_bytes("01") |
| 40 | |
| 41 | # jump to absolute position 4 |
| 42 | lseek (FD 3) 4 SEEK_SET |
| 43 | Tau |
| 44 | RV_num(4) |
| 45 | read (FD 3) 2 |
| 46 | Tau |
| 47 | RV_bytes("45") |
| 48 | |
| 49 | # jump after end |
| 50 | lseek (FD 3) 5 SEEK_END |
| 51 | Tau |
| 52 | RV_num(15) |
| 53 | read (FD 3) 2 |
| 54 | Tau |
| 55 | RV_bytes("") |
| 56 | |
| 57 | # jump after end |
| 58 | lseek (FD 3) 5 SEEK_END |
| 59 | Tau |
| 60 | RV_num(15) |
| 61 | read (FD 3) 2 |
| 62 | Tau |
| 63 | RV_bytes("") |
| 64 | |
| 65 | # jump 2 before end |
| 66 | lseek (FD 3) -2 SEEK_END |
| 67 | Tau |
| 68 | RV_num(8) |
| 69 | read (FD 3) 2 |
| 70 | Tau |
| 71 | RV_bytes("89") |
| 72 | |
| 73 | # 2 back and try again |
| 74 | lseek (FD 3) -2 SEEK_CUR |
| 75 | Tau |
| 76 | RV_num(8) |
| 77 | read (FD 3) 2 |
| 78 | Tau |
| 79 | RV_bytes("89") |
| 80 | |
| 81 | # jump just to zero |
| 82 | lseek (FD 3) -10 SEEK_CUR |
| 83 | Tau |
| 84 | RV_num(0) |
| 85 | read (FD 3) 2 |
| 86 | Tau |
| 87 | RV_bytes("01") |
| 88 | |
| 89 | # jump too far back (negative resulting offset) |
| 90 | lseek (FD 3) -10 SEEK_CUR |
| 91 | Tau |
| 92 | EINVAL |
| 93 | read (FD 3) 2 |
| 94 | Tau |
| 95 | RV_bytes("23") |
| 96 | |
| 97 | # use wrong whence |
| 98 | lseek (FD 3) 0 5 |
| 99 | Tau |
| 100 | EINVAL |
| 101 | read (FD 3) 2 |
| 102 | Tau |
| 103 | RV_bytes("45") |
| 104 | |
| 105 | # check position |
| 106 | lseek (FD 3) 0 SEEK_CUR |
| 107 | Tau |
| 108 | RV_num(6) |
| 109 | lseek (FD 3) 0 SEEK_CUR |
| 110 | Tau |
| 111 | RV_num(6) |
| 112 | |
| 113 | close (FD 3) |
| 114 | Tau |
| 115 | RV_none |
| 116 | |
| 117 | # use closed file-descriptor |
| 118 | lseek (FD 3) 0 SEEK_CUR |
| 119 | Tau |
| 120 | EBADF |
| 121 | |
| 122 | # use non-existing file-descriptor |
| 123 | lseek (FD 4) 0 SEEK_CUR |
| 124 | Tau |
| 125 | EBADF |
| 126 | |
| 127 | # use non-existing file-descriptor and wrong whence |
| 128 | lseek (FD 4) 0 5 |
| 129 | Tau |
| 130 | EBADF |
| 131 | |
| 132 | |
| 133 | # ############################################# |
| 134 | # write and lseek |
| 135 | # ############################################# |
| 136 | |
| 137 | # jump after end of file should do nothing by itself |
| 138 | open "f1.txt" [O_TRUNC;O_WRONLY] 0o666 |
| 139 | Tau |
| 140 | RV_num(3) |
| 141 | lseek (FD 3) 5 SEEK_SET |
| 142 | Tau |
| 143 | RV_num(5) |
| 144 | close (FD 3) |
| 145 | Tau |
| 146 | RV_none |
| 147 | |
| 148 | open "f1.txt" [O_RDONLY] |
| 149 | Tau |
| 150 | RV_num(3) |
| 151 | read! (FD 3) 100 |
| 152 | Tau |
| 153 | RV_bytes("") |
| 154 | close (FD 3) |
| 155 | Tau |
| 156 | RV_none |
| 157 | |
| 158 | |
| 159 | # jump after end of file, then write adds 0s |
| 160 | open "f1.txt" [O_TRUNC;O_WRONLY] 0o666 |
| 161 | Tau |
| 162 | RV_num(3) |
| 163 | lseek (FD 3) 5 SEEK_SET |
| 164 | Tau |
| 165 | RV_num(5) |
| 166 | write (FD 3) "0123456789" 10 |
| 167 | Tau |
| 168 | RV_num(10) |
| 169 | close (FD 3) |
| 170 | Tau |
| 171 | RV_none |
| 172 | |
| 173 | open "f1.txt" [O_RDONLY] |
| 174 | Tau |
| 175 | RV_num(3) |
| 176 | read! (FD 3) 100 |
| 177 | Tau |
| 178 | RV_bytes("\000\000\000\000\0000123456789") |
| 179 | close (FD 3) |
| 180 | Tau |
| 181 | RV_none |
| 182 | |
| 183 | |
| 184 | # write then jump back and write, jump back, read |
| 185 | open "f1.txt" [O_TRUNC;O_RDWR] 0o666 |
| 186 | Tau |
| 187 | RV_num(3) |
| 188 | write (FD 3) "0123456789" 10 |
| 189 | Tau |
| 190 | RV_num(10) |
| 191 | lseek (FD 3) -2 SEEK_CUR |
| 192 | Tau |
| 193 | RV_num(8) |
| 194 | write (FD 3) "XX" 2 |
| 195 | Tau |
| 196 | RV_num(2) |
| 197 | lseek (FD 3) -6 SEEK_CUR |
| 198 | Tau |
| 199 | RV_num(4) |
| 200 | read (FD 3) 2 |
| 201 | Tau |
| 202 | RV_bytes("45") |
| 203 | write (FD 3) "YY" 2 |
| 204 | Tau |
| 205 | RV_num(2) |
| 206 | close (FD 3) |
| 207 | Tau |
| 208 | RV_none |
| 209 | |
| 210 | open "f1.txt" [O_RDONLY] |
| 211 | Tau |
| 212 | RV_num(3) |
| 213 | read! (FD 3) 100 |
| 214 | Tau |
| 215 | RV_bytes("012345YYXX") |
| 216 | close (FD 3) |
| 217 | Tau |
| 218 | RV_none |
| 219 | |
| 220 | |
| 221 | # ############################################# |
| 222 | # lseek on dirs is not properly supported and |
| 223 | # therefore not tested carefully |
| 224 | # ############################################# |
| 225 | |
| 226 | mkdir "d1" 0o777 |
| 227 | Tau |
| 228 | RV_none |
| 229 | open_close "d1/f1.txt" [O_CREAT;O_WRONLY] 0o666 |
| 230 | Tau |
| 231 | RV_none |
| 232 | open_close "d1/f2.txt" [O_CREAT;O_WRONLY] 0o666 |
| 233 | Tau |
| 234 | RV_none |
| 235 | open_close "d1/f3.txt" [O_CREAT;O_WRONLY] 0o666 |
| 236 | Tau |
| 237 | RV_none |
| 238 | |
| 239 | |
| 240 | open "d1" [O_RDONLY] |
| 241 | Tau |
| 242 | RV_num(3) |
| 243 | lseek (FD 3) 0 SEEK_CUR |
| 244 | Tau |
| 245 | RV_num(0) |
| 246 | read (FD 3) 10 |
| 247 | Tau |
| 248 | EISDIR |
| 249 | |
| 250 | lseek (FD 3) 4 SEEK_CUR |
| 251 | Tau |
| 252 | RV_num(4) |
| 253 | read (FD 3) 10 |
| 254 | Tau |
| 255 | EISDIR |
| 256 | |
| 257 | # the following fail with a oveflow |
| 258 | lseek (FD 3) 0 SEEK_END |
| 259 | Tau |
| 260 | EOVERFLOW |
| 261 | lseek (FD 3) -2000 SEEK_END |
| 262 | Tau |
| 263 | EOVERFLOW |
| 264 | |
| 265 | lseek (FD 3) 0 SEEK_SET |
| 266 | Tau |
| 267 | RV_num(0) |
| 268 | read (FD 3) 10 |
| 269 | Tau |
| 270 | EISDIR |
| 271 | |
| 272 | lseek (FD 3) 10 SEEK_SET |
| 273 | Tau |
| 274 | RV_num(10) |
| 275 | read (FD 3) 10 |
| 276 | Tau |
| 277 | EISDIR |
| 278 | |
| 279 | close (FD 3) |
| 280 | Tau |
| 281 | RV_none |
| 282 | |
| 283 |