// 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 plan9

import "syscall"

// Constants
const (
	// Invented values to support what package os expects.
	O_CREAT    = 0x02000
	O_APPEND   = 0x00400
	O_NOCTTY   = 0x00000
	O_NONBLOCK = 0x00000
	O_SYNC     = 0x00000
	O_ASYNC    = 0x00000

	S_IFMT   = 0x1f000
	S_IFIFO  = 0x1000
	S_IFCHR  = 0x2000
	S_IFDIR  = 0x4000
	S_IFBLK  = 0x6000
	S_IFREG  = 0x8000
	S_IFLNK  = 0xa000
	S_IFSOCK = 0xc000
)

// Errors
var (
	EINVAL       = syscall.NewError("bad arg in system call")
	ENOTDIR      = syscall.NewError("not a directory")
	EISDIR       = syscall.NewError("file is a directory")
	ENOENT       = syscall.NewError("file does not exist")
	EEXIST       = syscall.NewError("file already exists")
	EMFILE       = syscall.NewError("no free file descriptors")
	EIO          = syscall.NewError("i/o error")
	ENAMETOOLONG = syscall.NewError("file name too long")
	EINTR        = syscall.NewError("interrupted")
	EPERM        = syscall.NewError("permission denied")
	EBUSY        = syscall.NewError("no free devices")
	ETIMEDOUT    = syscall.NewError("connection timed out")
	EPLAN9       = syscall.NewError("not supported by plan 9")

	// The following errors do not correspond to any
	// Plan 9 system messages. Invented to support
	// what package os and others expect.
	EACCES       = syscall.NewError("access permission denied")
	EAFNOSUPPORT = syscall.NewError("address family not supported by protocol")
)
