瀏覽代碼

lib/fs: When watching remove \\?\ for drive letters (fixes #5578) (#5633)

Simon Frei 6 年之前
父節點
當前提交
ca823bd591
共有 1 個文件被更改,包括 7 次插入0 次删除
  1. 7 0
      lib/fs/basicfs_watch.go

+ 7 - 0
lib/fs/basicfs_watch.go

@@ -12,6 +12,7 @@ import (
 	"context"
 	"errors"
 	"path/filepath"
+	"runtime"
 
 	"github.com/syncthing/notify"
 )
@@ -32,6 +33,12 @@ func (f *BasicFilesystem) Watch(name string, ignore Matcher, ctx context.Context
 		return nil, err
 	}
 
+	// Remove `\\?\` prefix if the path is just a drive letter as a dirty
+	// fix for https://github.com/syncthing/syncthing/issues/5578
+	if runtime.GOOS == "windows" && len(absName) <= 7 && len(absName) > 4 && absName[:4] == `\\?\` {
+		absName = absName[4:]
+	}
+
 	outChan := make(chan Event)
 	backendChan := make(chan notify.EventInfo, backendBuffer)