#ifndef _ROS_INC_STAT_H
#define _ROS_INC_STAT_H

#include <sys/types.h>
#include <time.h>

/* Keep this 255 to stay in sync with glibc (expects d_name[256]) */
#define MAX_FILENAME_SZ 255
/* This will change once we have a decent readdir / getdents syscall, and
 * send the strlen along with the d_name.  The sizes need rechecked too, since
 * they are probably wrong. */
struct kdirent {
	__ino64_t					d_ino;		/* inode number */
	__off64_t					d_off;		/* offset to the next dirent */
	unsigned short				d_reclen;	/* length of this record */
	unsigned char				d_type;
	char						d_name[MAX_FILENAME_SZ + 1];	/* filename */
} __attribute__((aligned(8)));

/* These stat sizes should match the types in stat.h and types.h and the sizes
 * in typesizes in glibc (which we modified slightly).  While glibc has it's own
 * stat, we have this here so that the kernel is exporting the interface it
 * expects.  We #def stat for our own internal use at the end. */
struct kstat {
	__dev_t						st_dev;		/* Device.  */
	__ino64_t					st_ino;		/* File serial number.	*/
	__mode_t					st_mode;	/* File mode.  */
	__nlink_t					st_nlink;	/* Link count.  */
	__uid_t						st_uid;		/* User ID of the file's owner.	*/
	__gid_t						st_gid;		/* Group ID of the file's group.*/
	__dev_t						st_rdev;	/* Device number, if device.  */
	__off64_t					st_size;	/* Size of file, in bytes.  */
	__blksize_t					st_blksize;	/* Optimal block size for I/O.  */
	__blkcnt64_t				st_blocks;	/* Number 512-byte blocks allocated. */
	struct timespec				st_atime;	/* Time of last access.  */
	struct timespec				st_mtime;	/* Time of last modification.  */
	struct timespec				st_ctime;	/* Time of last status change.  */
};

/* There are a bunch of things that glibc expects, which are part of the kernel
 * interface, but that we don't want to clobber or otherwise conflict with
 * glibc. */
#ifdef ROS_KERNEL
#define stat kstat
#define dirent kdirent 

/* File access modes for open and fcntl. */
#define O_RDONLY		0x00		/* Open read-only */
#define O_WRONLY		0x01		/* Open write-only */
#define O_RDWR			0x02		/* Open read/write */
#define O_EXEC			0x04		/* Open for exec (unsupported) */
#define O_ACCMODE		0x07
/* Thanks to read-only being 0, we can't just check the flag... */
#define IS_RDONLY(x) (!((x) & (O_WRONLY | O_RDWR)))

/* Bits OR'd into the second argument to open */
#define O_CREAT			00000100	/* not fcntl */
#define O_CREATE		O_CREAT		/* fucking saving space with the 'E'? */
#define O_EXCL			00000200	/* not fcntl */
#define O_NOCTTY		00000400	/* not fcntl */
#define O_TRUNC			00001000	/* not fcntl */
#define O_APPEND		00002000
#define O_NONBLOCK		00004000
#define O_SYNC			00010000
#define O_FSYNC			O_SYNC
#define O_ASYNC			00020000
#define O_DIRECT		00040000	/* Direct disk access. */
#define O_DIRECTORY		00200000	/* Must be a directory. */
#define O_NOFOLLOW		00400000	/* Do not follow links. */
#define O_NOATIME		01000000	/* Do not set atime. */
#define O_CLOEXEC		02000000	/* Set close_on_exec. */
#define O_REMCLO		04000000	/* Remove on close (unsupported). */
#define O_CREAT_FLAGS (O_CREAT | O_EXCL | O_NOCTTY | O_TRUNC)
#define O_FCNTL_FLAGS (O_APPEND | O_ASYNC | O_DIRECT | O_NOATIME | O_NONBLOCK)

/* Plan9 names for these flags */
#define OREAD			O_RDONLY
#define OWRITE			O_WRONLY
#define ORDWR			O_RDWR
#define OEXEC			O_EXEC
#define OTRUNC			O_TRUNC
#define OCEXEC			O_CLOEXEC
#define OEXCL   		O_EXCL
#define ORCLOSE			O_REMCLO

/* File creation modes (access controls) */
#define S_IRWXU 00700	/* user (file owner) has read, write and execute perms */
#define S_IRUSR 00400	/* user has read permission */
#define S_IWUSR 00200	/* user has write permission */
#define S_IXUSR 00100	/* user has execute permission */
#define S_IRWXG 00070	/* group has read, write and execute permission */
#define S_IRGRP 00040	/* group has read permission */
#define S_IWGRP 00020	/* group has write permission */
#define S_IXGRP 00010	/* group has execute permission */
#define S_IRWXO 00007	/* others have read, write and execute permission */
#define S_IROTH 00004	/* others have read permission */
#define S_IWOTH 00002	/* others have write permission */
#define S_IXOTH 00001	/* others have execute permission */
#define S_PMASK 00777	/* mask for all perms */

/* fcntl flags that we support, keep in sync with glibc */
#define F_DUPFD		0	/* Duplicate file descriptor */
#define F_GETFD		1	/* Get file descriptor flags */
#define F_SETFD		2	/* Set file descriptor flags */
#define F_GETFL		3	/* Get file status flags */
#define F_SETFL		4	/* Set file status flags */
/* For F_[GET|SET]FD */
#define FD_CLOEXEC	1

/* File type is encoded in the file mode */
#define __S_IFMT	0170000	/* These bits determine file type */
/* File types */
#define __S_IFDIR	0040000	/* Directory */
#define __S_IFCHR	0020000	/* Character device */
#define __S_IFBLK	0060000	/* Block device */
#define __S_IFREG	0100000	/* Regular file */
#define __S_IFIFO	0010000	/* FIFO */
#define __S_IFLNK	0120000	/* Symbolic link */
#define __S_IFSOCK	0140000	/* Socket */
/* Protection bits */
#define __S_ISUID	04000	/* Set user ID on execution */
#define __S_ISGID	02000	/* Set group ID on execution */
#define __S_ISVTX	01000	/* Save swapped text after use (sticky) */
#define __S_IREAD	0400	/* Read by owner */
#define __S_IWRITE	0200	/* Write by owner */
#define __S_IEXEC	0100	/* Execute by owner */
/* Test macros for file types.	*/
#define __S_ISTYPE(mode, mask)	(((mode) & __S_IFMT) == (mask))
#define S_ISDIR(mode)	__S_ISTYPE((mode), __S_IFDIR)
#define S_ISCHR(mode)	__S_ISTYPE((mode), __S_IFCHR)
#define S_ISBLK(mode)	__S_ISTYPE((mode), __S_IFBLK)
#define S_ISREG(mode)	__S_ISTYPE((mode), __S_IFREG)
#define S_ISFIFO(mode)	__S_ISTYPE((mode), __S_IFIFO)
#define S_ISLNK(mode)	__S_ISTYPE((mode), __S_IFLNK)

#endif /* ROS_KERNEL */

#endif /* _ROS_INC_STAT_H */
