~vcs-imports/gawk/master

« back to all changes in this revision

Viewing changes to test/readdir0.awk

  • Committer: Juergen Kahrs
  • Date: 2013-12-23 17:26:45 UTC
  • mfrom: (408.2.218)
  • Revision ID: git-v1:ee9707cc44eea3ca64cb71666ac3e8ed26a3bb7f
Merge remote-tracking branch 'origin/master' into cmake

Show diffs side-by-side

added added

removed removed

Lines of Context:
11
11
        }
12
12
}
13
13
 
14
 
{
15
 
        ino = $1
16
 
        name = $NF
17
 
        type = substr($2, 1, 1)
18
 
        if (type == "-")
19
 
                type = "f"
20
 
 
21
 
        printf "%s/%s/%s\n", ino, name, (ftype_unknown ? "u" : type)
 
14
BEGIN {
 
15
        dir = ARGV[1]
 
16
        delete ARGV[1]
 
17
        ls_afi = "ls -afi " dir
 
18
        ls_al = ("ls -lna " dir " | sed 1d")
 
19
 
 
20
        for (i = 1; (ls_afi | getline) > 0; i++) {
 
21
                # inode number is $1, filename is read of record
 
22
                inode = $1
 
23
                $1 = ""
 
24
                $0 = $0
 
25
                sub(/^ */, "")
 
26
                names[i] = $0
 
27
                ino[names[i]] = inode
 
28
        }
 
29
        close(ls_afi)
 
30
 
 
31
        for (j = 1; (ls_al | getline) > 0; j++) {
 
32
                type_let = substr($0, 1, 1)
 
33
                if (type_let == "-")
 
34
                        type_let = "f"
 
35
                $1 = $2 = $3 = $4 = $5 = $6 = $7 = $8 = ""
 
36
                $0 = $0
 
37
                sub(/^ */, "")
 
38
                type[$0] = type_let
 
39
        }
 
40
        close(ls_al)
 
41
 
 
42
        if (i != j)
 
43
                printf("mismatch: %d from `ls -afi' and %d from `ls -l'\n", i, j) > "/dev/stderr"
 
44
        
 
45
        for (i = 1; i in names; i++)
 
46
                printf("%s/%s/%s\n", ino[names[i]], names[i], (ftype_unknown ? "u" : type[names[i]]))
22
47
}