aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Schlatter <jeremy.schlatter@gmail.com>2018-08-21 21:13:03 +0800
committerPéter Szilágyi <peterke@gmail.com>2018-08-21 21:13:03 +0800
commit86acdf1a5bb31196adbc92e4923e0398868ce876 (patch)
treef95d3fb46da61d3f9574aba56c6e90b57fa5c013
parent355fc47d396298bccf93c37bdbba9b9e88864790 (diff)
downloaddexon-86acdf1a5bb31196adbc92e4923e0398868ce876.tar.gz
dexon-86acdf1a5bb31196adbc92e4923e0398868ce876.tar.zst
dexon-86acdf1a5bb31196adbc92e4923e0398868ce876.zip
vendor: update rjeczalik/notify so that it compiles on go1.11 (#17467)
-rw-r--r--vendor/github.com/rjeczalik/notify/README.md1
-rw-r--r--vendor/github.com/rjeczalik/notify/appveyor.yml12
-rw-r--r--vendor/github.com/rjeczalik/notify/debug_debug.go4
-rw-r--r--vendor/github.com/rjeczalik/notify/debug_nodebug.go4
-rw-r--r--vendor/github.com/rjeczalik/notify/watcher_fsevents_cgo.go12
-rw-r--r--vendor/github.com/rjeczalik/notify/watcher_fsevents_go1.10.go14
-rw-r--r--vendor/github.com/rjeczalik/notify/watcher_fsevents_go1.11.go9
-rw-r--r--vendor/github.com/rjeczalik/notify/watcher_notimplemented.go15
-rw-r--r--vendor/github.com/rjeczalik/notify/watcher_readdcw.go123
-rw-r--r--vendor/github.com/rjeczalik/notify/watcher_stub.go22
-rw-r--r--vendor/github.com/rjeczalik/notify/watcher_trigger.go3
-rw-r--r--vendor/vendor.json6
12 files changed, 143 insertions, 82 deletions
diff --git a/vendor/github.com/rjeczalik/notify/README.md b/vendor/github.com/rjeczalik/notify/README.md
index 02a5f3290..ad743b2a2 100644
--- a/vendor/github.com/rjeczalik/notify/README.md
+++ b/vendor/github.com/rjeczalik/notify/README.md
@@ -19,3 +19,4 @@ Filesystem event notification library on steroids. (under active development)
- [github.com/cortesi/devd](https://github.com/cortesi/devd)
- [github.com/cortesi/modd](https://github.com/cortesi/modd)
- [github.com/syncthing/syncthing-inotify](https://github.com/syncthing/syncthing-inotify)
+- [github.com/OrlovEvgeny/TinyJPG](https://github.com/OrlovEvgeny/TinyJPG)
diff --git a/vendor/github.com/rjeczalik/notify/appveyor.yml b/vendor/github.com/rjeczalik/notify/appveyor.yml
index a495bd7c7..a0bdc37a3 100644
--- a/vendor/github.com/rjeczalik/notify/appveyor.yml
+++ b/vendor/github.com/rjeczalik/notify/appveyor.yml
@@ -7,16 +7,20 @@ clone_folder: c:\projects\src\github.com\rjeczalik\notify
environment:
PATH: c:\projects\bin;%PATH%
GOPATH: c:\projects
- NOTIFY_TIMEOUT: 5s
+ NOTIFY_TIMEOUT: 10s
+ GOVERSION: 1.10.3
install:
+ - rmdir c:\go /s /q
+ - appveyor DownloadFile https://storage.googleapis.com/golang/go%GOVERSION%.windows-amd64.zip
+ - 7z x go%GOVERSION%.windows-amd64.zip -y -oC:\ > NUL
+
+ - cd %APPVEYOR_BUILD_FOLDER%
- go version
- - go get -v -t ./...
build_script:
- - go tool vet -all .
- go build ./...
- - go test -v -timeout 60s -race ./...
+ - go test -v -timeout 120s -race ./...
test: off
diff --git a/vendor/github.com/rjeczalik/notify/debug_debug.go b/vendor/github.com/rjeczalik/notify/debug_debug.go
index 6fca891ab..9d234cedd 100644
--- a/vendor/github.com/rjeczalik/notify/debug_debug.go
+++ b/vendor/github.com/rjeczalik/notify/debug_debug.go
@@ -1,4 +1,4 @@
-// Copyright (c) 2014-2015 The Notify Authors. All rights reserved.
+// Copyright (c) 2014-2018 The Notify Authors. All rights reserved.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
@@ -6,4 +6,4 @@
package notify
-var debugTag bool = true
+var debugTag = true
diff --git a/vendor/github.com/rjeczalik/notify/debug_nodebug.go b/vendor/github.com/rjeczalik/notify/debug_nodebug.go
index be391a276..9ebf880d8 100644
--- a/vendor/github.com/rjeczalik/notify/debug_nodebug.go
+++ b/vendor/github.com/rjeczalik/notify/debug_nodebug.go
@@ -1,4 +1,4 @@
-// Copyright (c) 2014-2015 The Notify Authors. All rights reserved.
+// Copyright (c) 2014-2018 The Notify Authors. All rights reserved.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
@@ -6,4 +6,4 @@
package notify
-var debugTag bool = false
+var debugTag = false
diff --git a/vendor/github.com/rjeczalik/notify/watcher_fsevents_cgo.go b/vendor/github.com/rjeczalik/notify/watcher_fsevents_cgo.go
index a2b332a2e..95ee70444 100644
--- a/vendor/github.com/rjeczalik/notify/watcher_fsevents_cgo.go
+++ b/vendor/github.com/rjeczalik/notify/watcher_fsevents_cgo.go
@@ -48,7 +48,7 @@ var wg sync.WaitGroup // used to wait until the runloop starts
// started and is ready via the wg. It also serves purpose of a dummy source,
// thanks to it the runloop does not return as it also has at least one source
// registered.
-var source = C.CFRunLoopSourceCreate(nil, 0, &C.CFRunLoopSourceContext{
+var source = C.CFRunLoopSourceCreate(refZero, 0, &C.CFRunLoopSourceContext{
perform: (C.CFRunLoopPerformCallBack)(C.gosource),
})
@@ -90,6 +90,10 @@ func gostream(_, info uintptr, n C.size_t, paths, flags, ids uintptr) {
if n == 0 {
return
}
+ fn := streamFuncs.get(info)
+ if fn == nil {
+ return
+ }
ev := make([]FSEvent, 0, int(n))
for i := uintptr(0); i < uintptr(n); i++ {
switch flags := *(*uint32)(unsafe.Pointer((flags + i*offflag))); {
@@ -104,7 +108,7 @@ func gostream(_, info uintptr, n C.size_t, paths, flags, ids uintptr) {
}
}
- streamFuncs.get(info)(ev)
+ fn(ev)
}
// StreamFunc is a callback called when stream receives file events.
@@ -162,8 +166,8 @@ func (s *stream) Start() error {
return nil
}
wg.Wait()
- p := C.CFStringCreateWithCStringNoCopy(nil, C.CString(s.path), C.kCFStringEncodingUTF8, nil)
- path := C.CFArrayCreate(nil, (*unsafe.Pointer)(unsafe.Pointer(&p)), 1, nil)
+ p := C.CFStringCreateWithCStringNoCopy(refZero, C.CString(s.path), C.kCFStringEncodingUTF8, refZero)
+ path := C.CFArrayCreate(refZero, (*unsafe.Pointer)(unsafe.Pointer(&p)), 1, nil)
ctx := C.FSEventStreamContext{}
ref := C.EventStreamCreate(&ctx, C.uintptr_t(s.info), path, C.FSEventStreamEventId(atomic.LoadUint64(&since)), latency, flags)
if ref == nilstream {
diff --git a/vendor/github.com/rjeczalik/notify/watcher_fsevents_go1.10.go b/vendor/github.com/rjeczalik/notify/watcher_fsevents_go1.10.go
new file mode 100644
index 000000000..dd2433d20
--- /dev/null
+++ b/vendor/github.com/rjeczalik/notify/watcher_fsevents_go1.10.go
@@ -0,0 +1,14 @@
+// Copyright (c) 2018 The Notify Authors. All rights reserved.
+// Use of this source code is governed by the MIT license that can be
+// found in the LICENSE file.
+
+// +build darwin,!kqueue,cgo,!go1.11
+
+package notify
+
+/*
+ #include <CoreServices/CoreServices.h>
+*/
+import "C"
+
+var refZero = (*C.struct___CFAllocator)(nil)
diff --git a/vendor/github.com/rjeczalik/notify/watcher_fsevents_go1.11.go b/vendor/github.com/rjeczalik/notify/watcher_fsevents_go1.11.go
new file mode 100644
index 000000000..92b406ce7
--- /dev/null
+++ b/vendor/github.com/rjeczalik/notify/watcher_fsevents_go1.11.go
@@ -0,0 +1,9 @@
+// Copyright (c) 2018 The Notify Authors. All rights reserved.
+// Use of this source code is governed by the MIT license that can be
+// found in the LICENSE file.
+
+// +build darwin,!kqueue,go1.11
+
+package notify
+
+const refZero = 0
diff --git a/vendor/github.com/rjeczalik/notify/watcher_notimplemented.go b/vendor/github.com/rjeczalik/notify/watcher_notimplemented.go
new file mode 100644
index 000000000..bb0672fd8
--- /dev/null
+++ b/vendor/github.com/rjeczalik/notify/watcher_notimplemented.go
@@ -0,0 +1,15 @@
+// Copyright (c) 2014-2018 The Notify Authors. All rights reserved.
+// Use of this source code is governed by the MIT license that can be
+// found in the LICENSE file.
+
+// +build !darwin,!linux,!freebsd,!dragonfly,!netbsd,!openbsd,!windows
+// +build !kqueue,!solaris
+
+package notify
+
+import "errors"
+
+// newWatcher stub.
+func newWatcher(chan<- EventInfo) watcher {
+ return watcherStub{errors.New("notify: not implemented")}
+}
diff --git a/vendor/github.com/rjeczalik/notify/watcher_readdcw.go b/vendor/github.com/rjeczalik/notify/watcher_readdcw.go
index 1494fcd79..b69811a69 100644
--- a/vendor/github.com/rjeczalik/notify/watcher_readdcw.go
+++ b/vendor/github.com/rjeczalik/notify/watcher_readdcw.go
@@ -1,4 +1,4 @@
-// Copyright (c) 2014-2015 The Notify Authors. All rights reserved.
+// Copyright (c) 2014-2018 The Notify Authors. All rights reserved.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
@@ -22,7 +22,7 @@ import (
const readBufferSize = 4096
// Since all operations which go through the Windows completion routine are done
-// asynchronously, filter may set one of the constants belor. They were defined
+// asynchronously, filter may set one of the constants below. They were defined
// in order to distinguish whether current folder should be re-registered in
// ReadDirectoryChangesW function or some control operations need to be executed.
const (
@@ -109,8 +109,13 @@ func (g *grip) register(cph syscall.Handle) (err error) {
// buffer. Directory changes that occur between calls to this function are added
// to the buffer and then, returned with the next call.
func (g *grip) readDirChanges() error {
+ handle := syscall.Handle(atomic.LoadUintptr((*uintptr)(&g.handle)))
+ if handle == syscall.InvalidHandle {
+ return nil // Handle was closed.
+ }
+
return syscall.ReadDirectoryChanges(
- g.handle,
+ handle,
&g.buffer[0],
uint32(unsafe.Sizeof(g.buffer)),
g.recursive,
@@ -220,12 +225,27 @@ func (wd *watched) updateGrip(idx int, cph syscall.Handle, reset bool,
// returned from the operating system kernel.
func (wd *watched) closeHandle() (err error) {
for _, g := range wd.digrip {
- if g != nil && g.handle != syscall.InvalidHandle {
- switch suberr := syscall.CloseHandle(g.handle); {
- case suberr == nil:
- g.handle = syscall.InvalidHandle
- case err == nil:
- err = suberr
+ if g == nil {
+ continue
+ }
+
+ for {
+ handle := syscall.Handle(atomic.LoadUintptr((*uintptr)(&g.handle)))
+ if handle == syscall.InvalidHandle {
+ break // Already closed.
+ }
+
+ e := syscall.CloseHandle(handle)
+ if e != nil && err == nil {
+ err = e
+ }
+
+ // Set invalid handle even when CloseHandle fails. This will leak
+ // the handle but, since we can't close it anyway, there won't be
+ // any difference.
+ if atomic.CompareAndSwapUintptr((*uintptr)(&g.handle),
+ (uintptr)(handle), (uintptr)(syscall.InvalidHandle)) {
+ break
}
}
}
@@ -272,50 +292,49 @@ func (r *readdcw) RecursiveWatch(path string, event Event) error {
// watch inserts a directory to the group of watched folders. If watched folder
// already exists, function tries to rewatch it with new filters(NOT VALID). Moreover,
// watch starts the main event loop goroutine when called for the first time.
-func (r *readdcw) watch(path string, event Event, recursive bool) (err error) {
+func (r *readdcw) watch(path string, event Event, recursive bool) error {
if event&^(All|fileNotifyChangeAll) != 0 {
return errors.New("notify: unknown event")
}
+
r.Lock()
- wd, ok := r.m[path]
- r.Unlock()
- if !ok {
- if err = r.lazyinit(); err != nil {
- return
- }
- r.Lock()
- defer r.Unlock()
- if wd, ok = r.m[path]; ok {
- dbgprint("watch: exists already")
- return
- }
- if wd, err = newWatched(r.cph, uint32(event), recursive, path); err != nil {
- return
- }
- r.m[path] = wd
- dbgprint("watch: new watch added")
- } else {
- dbgprint("watch: exists already")
+ defer r.Unlock()
+
+ if wd, ok := r.m[path]; ok {
+ dbgprint("watch: already exists")
+ wd.filter &^= stateUnwatch
+ return nil
}
+
+ if err := r.lazyinit(); err != nil {
+ return err
+ }
+
+ wd, err := newWatched(r.cph, uint32(event), recursive, path)
+ if err != nil {
+ return err
+ }
+
+ r.m[path] = wd
+ dbgprint("watch: new watch added")
+
return nil
}
-// lazyinit creates an I/O completion port and starts the main event processing
-// loop. This method uses Double-Checked Locking optimization.
+// lazyinit creates an I/O completion port and starts the main event loop.
func (r *readdcw) lazyinit() (err error) {
invalid := uintptr(syscall.InvalidHandle)
+
if atomic.LoadUintptr((*uintptr)(&r.cph)) == invalid {
- r.Lock()
- defer r.Unlock()
- if atomic.LoadUintptr((*uintptr)(&r.cph)) == invalid {
- cph := syscall.InvalidHandle
- if cph, err = syscall.CreateIoCompletionPort(cph, 0, 0, 0); err != nil {
- return
- }
- r.cph, r.start = cph, true
- go r.loop()
+ cph := syscall.InvalidHandle
+ if cph, err = syscall.CreateIoCompletionPort(cph, 0, 0, 0); err != nil {
+ return
}
+
+ r.cph, r.start = cph, true
+ go r.loop()
}
+
return
}
@@ -364,6 +383,7 @@ func (r *readdcw) loopstate(overEx *overlappedEx) {
overEx.parent.parent.recreate(r.cph)
case stateUnwatch:
dbgprint("loopstate unwatch")
+ overEx.parent.parent.closeHandle()
delete(r.m, syscall.UTF16ToString(overEx.parent.pathw))
case stateCPClose:
default:
@@ -495,27 +515,30 @@ func (r *readdcw) RecursiveUnwatch(path string) error {
// TODO : pknap
func (r *readdcw) unwatch(path string) (err error) {
var wd *watched
+
r.Lock()
defer r.Unlock()
if wd, err = r.nonStateWatchedLocked(path); err != nil {
return
}
+
wd.filter |= stateUnwatch
- if err = wd.closeHandle(); err != nil {
- wd.filter &^= stateUnwatch
- return
- }
+ dbgprint("unwatch: set unwatch state")
+
if _, attrErr := syscall.GetFileAttributes(&wd.pathw[0]); attrErr != nil {
for _, g := range wd.digrip {
- if g != nil {
- dbgprint("unwatch: posting")
- if err = syscall.PostQueuedCompletionStatus(r.cph, 0, 0, (*syscall.Overlapped)(unsafe.Pointer(g.ovlapped))); err != nil {
- wd.filter &^= stateUnwatch
- return
- }
+ if g == nil {
+ continue
+ }
+
+ dbgprint("unwatch: posting")
+ if err = syscall.PostQueuedCompletionStatus(r.cph, 0, 0, (*syscall.Overlapped)(unsafe.Pointer(g.ovlapped))); err != nil {
+ wd.filter &^= stateUnwatch
+ return
}
}
}
+
return
}
diff --git a/vendor/github.com/rjeczalik/notify/watcher_stub.go b/vendor/github.com/rjeczalik/notify/watcher_stub.go
index 68b9c135b..9b284ddc8 100644
--- a/vendor/github.com/rjeczalik/notify/watcher_stub.go
+++ b/vendor/github.com/rjeczalik/notify/watcher_stub.go
@@ -1,23 +1,13 @@
-// Copyright (c) 2014-2015 The Notify Authors. All rights reserved.
+// Copyright (c) 2014-2018 The Notify Authors. All rights reserved.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
-// +build !darwin,!linux,!freebsd,!dragonfly,!netbsd,!openbsd,!windows
-// +build !kqueue,!solaris
-
package notify
-import "errors"
-
-type stub struct{ error }
-
-// newWatcher stub.
-func newWatcher(chan<- EventInfo) watcher {
- return stub{errors.New("notify: not implemented")}
-}
+type watcherStub struct{ error }
// Following methods implement notify.watcher interface.
-func (s stub) Watch(string, Event) error { return s }
-func (s stub) Rewatch(string, Event, Event) error { return s }
-func (s stub) Unwatch(string) (err error) { return s }
-func (s stub) Close() error { return s }
+func (s watcherStub) Watch(string, Event) error { return s }
+func (s watcherStub) Rewatch(string, Event, Event) error { return s }
+func (s watcherStub) Unwatch(string) (err error) { return s }
+func (s watcherStub) Close() error { return s }
diff --git a/vendor/github.com/rjeczalik/notify/watcher_trigger.go b/vendor/github.com/rjeczalik/notify/watcher_trigger.go
index 78151f909..1ebe04829 100644
--- a/vendor/github.com/rjeczalik/notify/watcher_trigger.go
+++ b/vendor/github.com/rjeczalik/notify/watcher_trigger.go
@@ -106,7 +106,8 @@ func newWatcher(c chan<- EventInfo) watcher {
}
t.t = newTrigger(t.pthLkp)
if err := t.t.Init(); err != nil {
- panic(err)
+ t.Close()
+ return watcherStub{fmt.Errorf("failed setting up watcher: %v", err)}
}
go t.monitor()
return t
diff --git a/vendor/vendor.json b/vendor/vendor.json
index 78886c7bb..0bfc1ca0c 100644
--- a/vendor/vendor.json
+++ b/vendor/vendor.json
@@ -370,10 +370,10 @@
"revisionTime": "2017-08-14T17:01:13Z"
},
{
- "checksumSHA1": "28UVHMmHx0iqO0XiJsjx+fwILyI=",
+ "checksumSHA1": "D8AVDI39CJ+jvw0HOotYU2gz54c=",
"path": "github.com/rjeczalik/notify",
- "revision": "c31e5f2cb22b3e4ef3f882f413847669bf2652b9",
- "revisionTime": "2018-02-03T14:01:15Z"
+ "revision": "4e54e7fd043e865c50bda93359fb78813a8d165b",
+ "revisionTime": "2018-08-08T20:39:25Z"
},
{
"checksumSHA1": "5uqO4ITTDMklKi3uNaE/D9LQ5nM=",