// Copyright 2011 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.

package os

import (
	"errors"
	"syscall"
)

// SyscallError records an error from a specific system call.
type SyscallError struct {
	Syscall string
	Err     string
}

func (e *SyscallError) Error() string { return e.Syscall + ": " + e.Err }

// NewSyscallError returns, as an error, a new SyscallError
// with the given system call name and error details.
// As a convenience, if err is nil, NewSyscallError returns nil.
func NewSyscallError(syscall string, err error) error {
	if err == nil {
		return nil
	}
	return &SyscallError{syscall, err.Error()}
}

var (
	Eshortstat = errors.New("stat buffer too small")
	Ebadstat   = errors.New("malformed stat buffer")
	Ebadfd     = errors.New("fd out of range or not open")
	Ebadarg    = errors.New("bad arg in system call")
	Enotdir    = errors.New("not a directory")
	Enonexist  = errors.New("file does not exist")
	Eexist     = errors.New("file already exists")
	Eio        = errors.New("i/o error")
	Eperm      = errors.New("permission denied")

	EINVAL  = Ebadarg
	ENOTDIR = Enotdir
	ENOENT  = Enonexist
	EEXIST  = Eexist
	EIO     = Eio
	EACCES  = Eperm
	EPERM   = Eperm
	EISDIR  = syscall.EISDIR

	EBADF        = errors.New("bad file descriptor")
	ENAMETOOLONG = errors.New("file name too long")
	ERANGE       = errors.New("math result not representable")
	EPIPE        = errors.New("Broken Pipe")
	EPLAN9       = errors.New("not supported by plan 9")
)
