1package internal
2
3import (
4 "fmt"
5 "os"
6 "strings"
7 "time"
8
9 "golang.org/x/sys/unix"
10)
11
12func Debug(name string, mask int32) {
13 names := []struct {
14 n string
15 m int32
16 }{
17 {"FILE_ACCESS", unix.FILE_ACCESS},
18 {"FILE_MODIFIED", unix.FILE_MODIFIED},
19 {"FILE_ATTRIB", unix.FILE_ATTRIB},
20 {"FILE_TRUNC", unix.FILE_TRUNC},
21 {"FILE_NOFOLLOW", unix.FILE_NOFOLLOW},
22 {"FILE_DELETE", unix.FILE_DELETE},
23 {"FILE_RENAME_TO", unix.FILE_RENAME_TO},
24 {"FILE_RENAME_FROM", unix.FILE_RENAME_FROM},
25 {"UNMOUNTED", unix.UNMOUNTED},
26 {"MOUNTEDOVER", unix.MOUNTEDOVER},
27 {"FILE_EXCEPTION", unix.FILE_EXCEPTION},
28 }
29
30 var (
31 l []string
32 unknown = mask
33 )
34 for _, n := range names {
35 if mask&n.m == n.m {
36 l = append(l, n.n)
37 unknown ^= n.m
38 }
39 }
40 if unknown > 0 {
41 l = append(l, fmt.Sprintf("0x%x", unknown))
42 }
43 fmt.Fprintf(os.Stderr, "FSNOTIFY_DEBUG: %s %10d:%-30s → %q\n",
44 time.Now().Format("15:04:05.000000000"), mask, strings.Join(l, " | "), name)
45}