Blame test/readdir0.awk

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
}