blob: 13cce9995baad5804c244e78aa63ee4ddb89bc82 [file] [log] [blame]
// Copyright 2012 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// +build !plan9,!solaris
// Package fsnotify provides a platform-independent interface for file system notifications.
package fsnotify
import "fmt"
// Event represents a single file system notification.
type Event struct {
Name string // Relative path to the file or directory.
Op Op // File operation that triggered the event.
}
// Op describes a set of file operations.
type Op uint32
// These are the file operations that can trigger a notification.
const (
Create Op = 1 << iota
Write
Remove
Rename
Chmod
)
// String returns a string representation of the event in the form
// "file: REMOVE|WRITE|..."
func (e Event) String() string {
events := ""
if e.Op&Create == Create {
events += "|CREATE"
}
if e.Op&Remove == Remove {
events += "|REMOVE"
}
if e.Op&Write == Write {
events += "|WRITE"
}
if e.Op&Rename == Rename {
events += "|RENAME"
}
if e.Op&Chmod == Chmod {
events += "|CHMOD"
}
if len(events) > 0 {
events = events[1:]
}
return fmt.Sprintf("%q: %s", e.Name, events)
}