// 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)
}
