diff options
Diffstat (limited to 'test/readdir0.awk')
-rw-r--r-- | test/readdir0.awk | 39 |
1 files changed, 32 insertions, 7 deletions
diff --git a/test/readdir0.awk b/test/readdir0.awk index c98ac674..296c03c7 100644 --- a/test/readdir0.awk +++ b/test/readdir0.awk @@ -11,12 +11,37 @@ BEGIN { } } -{ - ino = $1 - name = $NF - type = substr($2, 1, 1) - if (type == "-") - type = "f" +BEGIN { + dir = ARGV[1] + delete ARGV[1] + ls_afi = "ls -afi " dir + ls_al = ("ls -lna " dir " | sed 1d") + + for (i = 1; (ls_afi | getline) > 0; i++) { + # inode number is $1, filename is read of record + inode = $1 + $1 = "" + $0 = $0 + sub(/^ */, "") + names[i] = $0 + ino[names[i]] = inode + } + close(ls_afi) + + for (j = 1; (ls_al | getline) > 0; j++) { + type_let = substr($0, 1, 1) + if (type_let == "-") + type_let = "f" + $1 = $2 = $3 = $4 = $5 = $6 = $7 = $8 = "" + $0 = $0 + sub(/^ */, "") + type[$0] = type_let + } + close(ls_al) - printf "%s/%s/%s\n", ino, name, (ftype_unknown ? "u" : type) + if (i != j) + printf("mismatch: %d from `ls -afi' and %d from `ls -l'\n", i, j) > "/dev/stderr" + + for (i = 1; i in names; i++) + printf("%s/%s/%s\n", ino[names[i]], names[i], (ftype_unknown ? "u" : type[names[i]])) } |