Dmitry V. Levin | 68d6424 | 2014-09-10 00:07:32 +0000 | [diff] [blame] | 1 | BEGIN { |
| 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. Levin | c929771 | 2015-01-25 00:04:20 +0000 | [diff] [blame] | 11 | d_name_1 = "d_name=\"\\.\"" |
| 12 | d_name_2 = "d_name=\"\\.\\.\"" |
| 13 | d_name_3 = "d_name=\"(A\\\\n){127}Z\"" |
Mike Frysinger | a8dcf25 | 2015-03-01 03:11:35 -0500 | [diff] [blame] | 14 | # 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. Levin | 68d6424 | 2014-09-10 00:07:32 +0000 | [diff] [blame] | 17 | |
Dmitry V. Levin | c929771 | 2015-01-25 00:04:20 +0000 | [diff] [blame] | 18 | 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. Levin | 68d6424 | 2014-09-10 00:07:32 +0000 | [diff] [blame] | 21 | |
Dmitry V. Levin | c929771 | 2015-01-25 00:04:20 +0000 | [diff] [blame] | 22 | 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. Levin | d07056f | 2015-02-08 01:34:08 +0000 | [diff] [blame] | 26 | 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. Levin | c929771 | 2015-01-25 00:04:20 +0000 | [diff] [blame] | 42 | |
| 43 | getdents = "^getdents\\(" i ", " dents ", " len "\\) += " len "$" |
| 44 | getdents64 = "^getdents64\\(" i ", " dents64 ", " len "\\) += " len "$" |
Dmitry V. Levin | 68d6424 | 2014-09-10 00:07:32 +0000 | [diff] [blame] | 45 | } |
| 46 | |
| 47 | NR == 1 {if (match($0, getdents) || match($0, getdents64)) next} |
| 48 | |
| 49 | NR == 2 && /^getdents(64)?\([0-9]+, \{\}, [1-9][0-9]+\) += 0$/ {next} |
| 50 | |
| 51 | NR == lines && /^\+\+\+ exited with 0 \+\+\+$/ {next} |
| 52 | |
| 53 | { |
| 54 | print "Line " NR " does not match: " $0 |
| 55 | fail=1 |
| 56 | } |
| 57 | |
| 58 | END { |
| 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 | } |