|
Packit Service |
f629e6 |
# NOTE: This program is not a generalized parser for the output of 'ls'.
|
|
Packit Service |
f629e6 |
# It's job is to read the output of ls from the gawk source code directory,
|
|
Packit Service |
f629e6 |
# where we know there are no symbolic links, nor are there files with
|
|
Packit Service |
f629e6 |
# spaces in their file names, etc.
|
|
Packit Service |
f629e6 |
BEGIN {
|
|
Packit Service |
f629e6 |
# analyze results from readdir extension
|
|
Packit Service |
f629e6 |
while ((getline x < extout) > 0) {
|
|
Packit Service |
f629e6 |
numrec++
|
|
Packit Service |
f629e6 |
if ((split(x, f, "/") == 3) && (f[3] == "u"))
|
|
Packit Service |
f629e6 |
num_unknown++
|
|
Packit Service |
f629e6 |
}
|
|
Packit Service |
f629e6 |
close(extout)
|
|
Packit Service |
f629e6 |
if ((numrec > 0) && (num_unknown == numrec)) {
|
|
Packit Service |
f629e6 |
print "Notice: this filesystem does not appear to support file type information" > "/dev/stderr"
|
|
Packit Service |
f629e6 |
ftype_unknown = 1
|
|
Packit Service |
f629e6 |
}
|
|
Packit Service |
f629e6 |
}
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
BEGIN {
|
|
Packit Service |
f629e6 |
for (i = 1; (getline < dirlist) > 0; i++) {
|
|
Packit Service |
f629e6 |
# inode number is $1, filename is read of record
|
|
Packit Service |
f629e6 |
inode = $1
|
|
Packit Service |
f629e6 |
$1 = ""
|
|
Packit Service |
f629e6 |
$0 = $0
|
|
Packit Service |
f629e6 |
sub(/^ */, "")
|
|
Packit Service |
f629e6 |
names[i] = $0
|
|
Packit Service |
f629e6 |
ino[names[i]] = inode
|
|
Packit Service |
f629e6 |
}
|
|
Packit Service |
f629e6 |
close(dirlist)
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
for (j = 1; (getline < longlist) > 0; j++) {
|
|
Packit Service |
f629e6 |
type_let = substr($0, 1, 1)
|
|
Packit Service |
f629e6 |
if (type_let == "-")
|
|
Packit Service |
f629e6 |
type_let = "f"
|
|
Packit Service |
f629e6 |
type[$NF] = type_let
|
|
Packit Service |
f629e6 |
}
|
|
Packit Service |
f629e6 |
close(longlist)
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
if (i != j)
|
|
Packit Service |
f629e6 |
printf("mismatch: %d from `ls -afi' and %d from `ls -lna'\n", i, j) > "/dev/stderr"
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
for (i = 1; i in names; i++)
|
|
Packit Service |
f629e6 |
printf("%s/%s/%s\n", ino[names[i]], names[i], (ftype_unknown ? "u" : type[names[i]]))
|
|
Packit Service |
f629e6 |
}
|