blob: c230e26734b34c3bda1cdb366f20f691e4d61274 [file] [log] [blame]
Dmitry V. Levin68d64242014-09-10 00:07:32 +00001BEGIN {
2 lines = 3
3 fail = 0
4
5 i = "[0-9]+"
6 len = "[1-9]" i
7
8 d_ino = "d_ino=" i
9 d_off = "d_off=" i
10 d_reclen = "d_reclen=" len
Dmitry V. Levinc9297712015-01-25 00:04:20 +000011 d_name_1 = "d_name=\"\\.\""
12 d_name_2 = "d_name=\"\\.\\.\""
13 d_name_3 = "d_name=\"(A\\\\n){127}Z\""
Mike Frysingera8dcf252015-03-01 03:11:35 -050014 # Some older systems might not pass back d_type at all like Alpha.
15 d_type_dir = "d_type=DT_(DIR|UNKNOWN)"
16 d_type_reg = "d_type=DT_(REG|UNKNOWN)"
Dmitry V. Levin68d64242014-09-10 00:07:32 +000017
Dmitry V. Levinc9297712015-01-25 00:04:20 +000018 dirent_1 = "\\{" d_ino ", " d_off ", " d_reclen ", " d_name_1 ", " d_type_dir "\\}"
19 dirent_2 = "\\{" d_ino ", " d_off ", " d_reclen ", " d_name_2 ", " d_type_dir "\\}"
20 dirent_3 = "\\{" d_ino ", " d_off ", " d_reclen ", " d_name_3 ", " d_type_reg "\\}"
Dmitry V. Levin68d64242014-09-10 00:07:32 +000021
Dmitry V. Levinc9297712015-01-25 00:04:20 +000022 dirent64_1 = "\\{" d_ino ", " d_off ", " d_reclen ", " d_type_dir ", " d_name_1 "\\}"
23 dirent64_2 = "\\{" d_ino ", " d_off ", " d_reclen ", " d_type_dir ", " d_name_2 "\\}"
24 dirent64_3 = "\\{" d_ino ", " d_off ", " d_reclen ", " d_type_reg ", " d_name_3 "\\}"
25
Dmitry V. Levind07056f2015-02-08 01:34:08 +000026 d_123 = dirent_1 " " dirent_2 " " dirent_3
27 d_213 = dirent_2 " " dirent_1 " " dirent_3
28 d_132 = dirent_1 " " dirent_3 " " dirent_2
29 d_321 = dirent_3 " " dirent_2 " " dirent_1
30 d_231 = dirent_2 " " dirent_3 " " dirent_1
31 d_312 = dirent_3 " " dirent_1 " " dirent_2
32
33 d64_123 = dirent64_1 " " dirent64_2 " " dirent64_3
34 d64_213 = dirent64_2 " " dirent64_1 " " dirent64_3
35 d64_132 = dirent64_1 " " dirent64_3 " " dirent64_2
36 d64_321 = dirent64_3 " " dirent64_2 " " dirent64_1
37 d64_231 = dirent64_2 " " dirent64_3 " " dirent64_1
38 d64_312 = dirent64_3 " " dirent64_1 " " dirent64_2
39
40 dents = "\\{(" d_123 "|" d_213 "|" d_132 "|" d_321 "|" d_231 "|" d_312 ")\\}"
41 dents64 = "\\{(" d64_123 "|" d64_213 "|" d64_132 "|" d64_321 "|" d64_231 "|" d64_312 ")\\}"
Dmitry V. Levinc9297712015-01-25 00:04:20 +000042
43 getdents = "^getdents\\(" i ", " dents ", " len "\\) += " len "$"
44 getdents64 = "^getdents64\\(" i ", " dents64 ", " len "\\) += " len "$"
Dmitry V. Levin68d64242014-09-10 00:07:32 +000045}
46
47NR == 1 {if (match($0, getdents) || match($0, getdents64)) next}
48
49NR == 2 && /^getdents(64)?\([0-9]+, \{\}, [1-9][0-9]+\) += 0$/ {next}
50
51NR == lines && /^\+\+\+ exited with 0 \+\+\+$/ {next}
52
53{
54 print "Line " NR " does not match: " $0
55 fail=1
56}
57
58END {
59 if (NR != lines) {
60 print "Expected " lines " lines, found " NR " line(s)."
61 print ""
62 exit 1
63 }
64 if (fail) {
65 print ""
66 exit 1
67 }
68}