/*
Copyright (c) 1993 Xerox Corporation.  All rights reserved.
*/
/*
 */

#ifndef	←←XR←sys←stat←h
#define	←←XR←sys←stat←h

#include <config/PCR←OS.h>

#include <sys/stat.h>

#include <xr/XR←sys←types.h>


struct	XR←stat {
	XR←dev←t	st←dev;
	XR←ino←t	st←ino;
	XR←mode←t	st←mode;
	short	st←nlink;
	XR←uid←t	st←uid;
	XR←gid←t	st←gid;
	XR←dev←t	st←rdev;
	XR←off←t	st←size;
	XR←time←t	st←atime;
	int	st←spare1;
	XR←time←t	st←mtime;
	int	st←spare2;
	XR←time←t	st←ctime;
	int	st←spare3;
	long	st←blksize;
	long	st←blocks;
	long	st←spare4[2];
};


#define	XR←S←ISUID		0004000	/* set user id on execution */
#define	XR←S←ISGID		0002000	/* set group id on execution */
#define	XR←S←ISVTX		0001000	/* save swapped text even after use */

#define	XR←S←IFMT	0170000
#define	XR←S←IFDIR	0040000	/* directory */
#define	XR←S←IFCHR	0020000	/* character special */
#define	XR←S←IFBLK	0060000	/* block special */
#define	XR←S←IFREG	0100000	/* regular */
#define	XR←S←IFLNK	0120000	/* symbolic link */
#define	XR←S←IFSOCK	0140000	/* socket */
#define	XR←S←IFIFO	0010000	/* fifo */

#define	XR←S←IRWXU 	0000700	/* rwx, owner */
#define		XR←S←IRUSR	0000400	/* read permission, owner */
#define		XR←S←IWUSR	0000200	/* write permission, owner */
#define		XR←S←IXUSR	0000100	/* execute/search permission, owner */
#define	XR←S←IRWXG		0000070	/* rwx, group */
#define		XR←S←IRGRP	0000040	/* read permission, group */
#define		XR←S←IWGRP	0000020	/* write permission, grougroup */
#define		XR←S←IXGRP	0000010	/* execute/search permission, group */
#define	XR←S←IRWXO		0000007	/* rwx, other */
#define		XR←S←IROTH	0000004	/* read permission, other */
#define		XR←S←IWOTH	0000002	/* write permission, other */
#define		XR←S←IXOTH	0000001	/* execute/search permission, other */

#if defined(PCR←OS←SUNOS4)

#define XR←sys←stat←ModeToHost(m) (m) /* cheat */
#define XR←sys←stat←ModeFromHost(m) (m) /* cheat */

extern void XR←sys←stat←StatFromHost(struct XR←stat *xs, struct stat *s);
extern void XR←sys←stat←StatFromPCR(struct XR←stat *xs, struct PCR←stat *ps);

#elif defined(PCR←OS←SUNOS5)

#define XR←sys←stat←ModeToHost(m) (m) /* cheat */
#define XR←sys←stat←ModeFromHost(m) (m) /* cheat */

extern void XR←sys←stat←StatFromHost(struct XR←stat *xs, struct stat *s);
extern void XR←sys←stat←StatFromPCR(struct XR←stat *xs, struct PCR←stat *ps);

#else

#   error os

#endif



#endif	/* !←←XR←sys←stat←h */