diff options
-rw-r--r-- | test/ChangeLog | 6 | ||||
-rw-r--r-- | test/Makefile.am | 7 | ||||
-rw-r--r-- | test/Makefile.in | 7 | ||||
-rw-r--r-- | test/readdir0.awk | 25 |
4 files changed, 27 insertions, 18 deletions
diff --git a/test/ChangeLog b/test/ChangeLog index 535f6f14..d9ecfe5f 100644 --- a/test/ChangeLog +++ b/test/ChangeLog @@ -5,6 +5,12 @@ 2014-01-17 Arnold D. Robbins <arnold@skeeve.com> + * Makefile.am (readdir): Run ls commands outside the awk script. + * readdir0.awk: Read ls results from files. Helps with MinGW. + Thanks to Eli Zaretskii for the problem report. + +2014-01-17 Arnold D. Robbins <arnold@skeeve.com> + * Makefile.am: Quote instances of $(top_srcdir) also. 2014-01-16 Andrew J. Schorr <aschorr@telemetry-investments.com> diff --git a/test/Makefile.am b/test/Makefile.am index b6390009..ca39e0b8 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -1819,8 +1819,11 @@ readdir: fi @echo $@ @$(AWK) -f "$(srcdir)"/readdir.awk "$(top_srcdir)" > _$@ - @ls -afli "$(top_srcdir)" | sed 1d | $(AWK) -f "$(srcdir)"/readdir0.awk -v extout=_$@ "$(top_srcdir)" > $@.ok - @-$(CMP) $@.ok _$@ && rm -f $@.ok _$@ + @ls -afi "$(top_srcdir)" > _dirlist + @ls -lna "$(top_srcdir)" | sed 1d > _longlist + @$(AWK) -f "$(srcdir)"/readdir0.awk -v extout=_$@ \ + -v dirlist=_dirlist -v longlist=_longlist > $@.ok + @-$(CMP) $@.ok _$@ && rm -f $@.ok _$@ _dirlist _longlist fts: @case `uname` in \ diff --git a/test/Makefile.in b/test/Makefile.in index fd0484a8..52fa49ef 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -2243,8 +2243,11 @@ readdir: fi @echo $@ @$(AWK) -f "$(srcdir)"/readdir.awk "$(top_srcdir)" > _$@ - @ls -afli "$(top_srcdir)" | sed 1d | $(AWK) -f "$(srcdir)"/readdir0.awk -v extout=_$@ "$(top_srcdir)" > $@.ok - @-$(CMP) $@.ok _$@ && rm -f $@.ok _$@ + @ls -afi "$(top_srcdir)" > _dirlist + @ls -lna "$(top_srcdir)" | sed 1d > _longlist + @$(AWK) -f "$(srcdir)"/readdir0.awk -v extout=_$@ \ + -v dirlist=_dirlist -v longlist=_longlist > $@.ok + @-$(CMP) $@.ok _$@ && rm -f $@.ok _$@ _dirlist _longlist fts: @case `uname` in \ diff --git a/test/readdir0.awk b/test/readdir0.awk index 296c03c7..2b7674a4 100644 --- a/test/readdir0.awk +++ b/test/readdir0.awk @@ -1,4 +1,9 @@ +# NOTE: This program is not a generalized parser for the output of 'ls'. +# It's job is to read the output of ls from the gawk source code directory, +# where we know there are no symbolic links, nor are there files with +# spaces in their file names, etc. BEGIN { + # analyze results from readdir extension while ((getline x < extout) > 0) { numrec++ if ((split(x, f, "/") == 3) && (f[3] == "u")) @@ -12,12 +17,7 @@ BEGIN { } 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++) { + for (i = 1; (getline < dirlist) > 0; i++) { # inode number is $1, filename is read of record inode = $1 $1 = "" @@ -26,21 +26,18 @@ BEGIN { names[i] = $0 ino[names[i]] = inode } - close(ls_afi) + close(dirlist) - for (j = 1; (ls_al | getline) > 0; j++) { + for (j = 1; (getline < longlist) > 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 + type[$NF] = type_let } - close(ls_al) + close(longlist) if (i != j) - printf("mismatch: %d from `ls -afi' and %d from `ls -l'\n", i, j) > "/dev/stderr" + printf("mismatch: %d from `ls -afi' and %d from `ls -lna'\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]])) |