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

$Date$
 */


#ifndef	←←PCR←stat←h
#define ←←PCR←stat←h 1

#ifndef PCR←NO←RENAME
#   undef chmod /* defined in both unistd.h and sys/stat.h */
#endif

#ifndef ←PCR←OS←h
#   include <config/PCR←OS.h>
#endif

#include <host/sys/stat.h>

#if defined(PCR←OS←SUNOS5)
    /*
     * The fields st←{a,m,c}time are **macro-defined**,
     *   e.g. #define st←atime	st←atim.tv←sec
     * thereby preventing me from using them as field names.
     * Is this POSIX compliant?  I don't think so ...
     */
#   undef st←atime
#   undef st←mtime
#   undef st←ctime

#   define PCR←stat←host←atime st←atim.tv←sec
#   define PCR←stat←host←mtime st←mtim.tv←sec
#   define PCR←stat←host←ctime st←ctim.tv←sec

#else

#   define PCR←stat←host←atime st←atime
#   define PCR←stat←host←mtime st←mtime
#   define PCR←stat←host←ctime st←ctime

#endif

struct PCR←stat {
    mode←t	st←mode;
    ino←t	st←ino;
    dev←t	st←dev;
    nlink←t	st←nlink;
    uid←t	st←uid;
    gid←t	st←gid;
    off←t	st←size;
    time←t	st←atime;
    time←t	st←mtime;
    time←t	st←ctime;
};

extern int PCR←chmod(const char *path, mode←t mode);
extern int PCR←fstat(int fd, struct PCR←stat *sbuf);
extern int PCR←mkdir(const char *path, mode←t mode);
extern int PCR←mkfifo(const char *path, mode←t mode);
extern int PCR←stat(const char *path, struct PCR←stat *sbuf);
extern mode←t PCR←umask(mode←t mask);

#ifndef PCR←NO←RENAME

#   undef chmod
#   undef fstat
#   undef mkdir
#   undef mkfifo
#   undef stat
#   undef umask

#   define chmod	PCR←chmod
#   define fstat	PCR←fstat
#   define mkdir	PCR←mkdir
#   define mkfifo	PCR←mkfifo
#   define stat		PCR←stat
#   define umask	PCR←umask

#endif /* PCR←NO←RENAME */


#ifdef PCR←NO←RENAME

extern void
PCR←stat←FromStat( struct PCR←stat *to, const struct stat *from );

#endif /* PCR←NO←RENAME */

#endif /* !←←PCR←stat←h */

/*
$Log$
*/