1package internal
2
3import (
4 "fmt"
5 "os"
6 "path/filepath"
7 "strings"
8 "time"
9
10 "golang.org/x/sys/windows"
11)
12
13func Debug(name string, mask uint32) {
14 names := []struct {
15 n string
16 m uint32
17 }{
18 {"FILE_ACTION_ADDED", windows.FILE_ACTION_ADDED},
19 {"FILE_ACTION_REMOVED", windows.FILE_ACTION_REMOVED},
20 {"FILE_ACTION_MODIFIED", windows.FILE_ACTION_MODIFIED},
21 {"FILE_ACTION_RENAMED_OLD_NAME", windows.FILE_ACTION_RENAMED_OLD_NAME},
22 {"FILE_ACTION_RENAMED_NEW_NAME", windows.FILE_ACTION_RENAMED_NEW_NAME},
23 }
24
25 var (
26 l []string
27 unknown = mask
28 )
29 for _, n := range names {
30 if mask&n.m == n.m {
31 l = append(l, n.n)
32 unknown ^= n.m
33 }
34 }
35 if unknown > 0 {
36 l = append(l, fmt.Sprintf("0x%x", unknown))
37 }
38 fmt.Fprintf(os.Stderr, "FSNOTIFY_DEBUG: %s %-65s → %q\n",
39 time.Now().Format("15:04:05.000000000"), strings.Join(l, " | "), filepath.ToSlash(name))
40}