debug_windows.go

 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}