/* Copyright (C) 1997-2018 Free Software Foundation, Inc.

   This file is part of the GNU C Library.

   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public License as
   published by the Free Software Foundation; either version 2.1 of the
   License, or (at your option) any later version.

   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, see
   <http://www.gnu.org/licenses/>.  */

#if !defined _SYS_STAT_H && !defined _FCNTL_H
# error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
#endif

#ifndef _BITS_STAT_H
#define _BITS_STAT_H	1

/* Versions of the `struct stat' data structure.  */
#define _STAT_VER_LINUX_OLD    1
#define _STAT_VER_KERNEL       1
#define _STAT_VER_SVR4         2
#define _STAT_VER_LINUX        3
#define _STAT_VER              _STAT_VER_LINUX  /* The one defined below.  */

/* Versions of the `xmknod' interface.  */
#define _MKNOD_VER_LINUX       1
#define _MKNOD_VER_SVR4        2
#define _MKNOD_VER             _MKNOD_VER_LINUX  /* The bits defined below.  */

#ifndef __USE_FILE_OFFSET64
struct stat
{
        __dev_t         st_dev;     /* Device.  */
        __ino_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.  */
        unsigned long   __pad2;
        __off_t         st_size;    /* Size of file, in bytes.  */
        __blksize_t     st_blksize; /* Optimal block size for I/O.  */
        int             __pad3;
        __blkcnt_t      st_blocks;  /* Number 512-byte blocks allocated.  */
#ifdef __USE_XOPEN2K8
        /* Nanosecond resolution timestamps are stored in a format
         * equivalent to 'struct timespec'. This is the type used
         * whenever possible but the Unix namespace rules do not allow the
         * identifier 'timespec' to appear in the <sys/stat.h> header.
         * Therefore we have to handle the use of this header in strictly
         * standard-compliant sources special.  */
        struct timespec         st_atim; /* Time of last access.  */
        struct timespec         st_mtim; /* Time of last modification.  */
        struct timespec         st_ctim; /* Time of last status change.  */
# define st_atime st_atim.tv_sec         /* Backward compatibility.  */
# define st_mtime st_mtim.tv_sec
# define st_ctime st_ctim.tv_sec
#else
        __time_t                st_atime;     /* Time of last access.  */
        unsigned long int       st_atimensec; /* Nscecs of last access.  */
        __time_t                st_mtime;     /* Time of last modification.  */
        unsigned long int       st_mtimensec; /* Nsecs of last modification.  */
        __time_t                st_ctime;     /* Time of last status change.  */
        unsigned long int       st_ctimensec; /* Nsecs of last status change.  */
#endif
        unsigned int            __glibc_reserved4;
        unsigned int            __glibc_reserved5;
};
#else /* __USE_FILE_OFFSET64 */
/* MS: If __USE_FILE_OFFSET64 is setup then struct stat should match stat64
 * structure. Glibc has no type __dev64_t that's why I had to use standard
 * type for st_dev and st_rdev. Several architectures uses pads after st_dev
 * but this approach covers BIG and LITTLE endian. I think it is better to
 * create one ifdef to separate stats structures.  */
struct stat
{
        unsigned long long      st_dev;     /* Device.  */
        __ino64_t               st_ino;     /* 32bit 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.  */
        unsigned long long      st_rdev;    /* Device number, if device.  */
        unsigned long long      __pad2;
        __off64_t               st_size;    /* Size of file, in bytes.  */
        __blksize_t             st_blksize; /* Optimal block size for I/O.  */
        int                     __pad3;
        __blkcnt64_t            st_blocks;  /* Number 512-byte blocks allocated.  */
#ifdef __USE_MISC
        /* Nanosecond resolution timestamps are stored in a format
         * equivalent to 'struct timespec'. This is the type used
         * whenever possible but the Unix namespace rules do not allow the
         * identifier 'timespec' to appear in the <sys/stat.h> header.
         * Therefore we have to handle the use of this header in strictly
         * standard-compliant sources special.  */
        struct timespec         st_atim;      /* Time of last access.  */
        struct timespec         st_mtim;      /* Time of last modification.  */
        struct timespec         st_ctim;      /* Time of last status change.  */
# define st_atime st_atim.tv_sec              /* Backward compatibility.  */
# define st_mtime st_mtim.tv_sec
# define st_ctime st_ctim.tv_sec
#else
        __time_t                st_atime;     /* Time of last access.  */
        unsigned long int       st_atimensec; /* Nscecs of last access.  */
        __time_t                st_mtime;     /* Time of last modification.  */
        unsigned long int       st_mtimensec; /* Nsecs of last modification.  */
        __time_t                st_ctime;     /* Time of last status change.  */
        unsigned long int       st_ctimensec; /* Nsecs of last status change.  */
#endif
        unsigned int            __glibc_reserved4;
        unsigned int            __glibc_reserved5;
};
#endif /* __USE_FILE_OFFSET64 */

#ifdef __USE_LARGEFILE64
struct stat64
{
        unsigned long long      st_dev;     /* Device.  */
        __ino64_t               st_ino;     /* 32bit 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.  */
        unsigned long long      st_rdev;    /* Device number, if device.  */
        unsigned long long      __pad2;
        __off64_t               st_size;    /* Size of file, in bytes.  */
        __blksize_t             st_blksize; /* Optimal block size for I/O.  */
        int                     __pad3;
        __blkcnt64_t            st_blocks;  /* Number 512-byte blocks allocated.  */
#ifdef __USE_XOPEN2K8
        /* Nanosecond resolution timestamps are stored in a format
         * equivalent to 'struct timespec'. This is the type used
         * whenever possible but the Unix namespace rules do not allow the
         * identifier 'timespec' to appear in the <sys/stat.h> header.
         * Therefore we have to handle the use of this header in strictly
         * standard-compliant sources special.  */
        struct timespec         st_atim;    /* Time of last access.  */
        struct timespec         st_mtim;    /* Time of last modification.  */
        struct timespec         st_ctim;    /* Time of last status change.  */
# define st_atime st_atim.tv_sec            /* Backward compatibility.  */
# define st_mtime st_mtim.tv_sec
# define st_ctime st_ctim.tv_sec
#else
        __time_t                st_atime;     /* Time of last access.  */
        unsigned long int       st_atimensec; /* Nscecs of last access.  */
        __time_t                st_mtime;     /* Time of last modification.  */
        unsigned long int       st_mtimensec; /* Nsecs of last modification.  */
        __time_t                st_ctime;     /* Time of last status change.  */
        unsigned long int       st_ctimensec; /* Nsecs of last status change.  */
#endif
        unsigned int            __glibc_reserved4;
        unsigned int            __glibc_reserved5;
};
#endif

/* Tell code we have these members.  */
#define _STATBUF_ST_BLKSIZE
#define _STATBUF_ST_RDEV
/* Nanosecond resolution time values are supported.  */
#define _STATBUF_ST_NSEC

/* Encoding of 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.  */

/* POSIX.1b objects.  Note that these macros always evaluate to zero.  But
   they do it by enforcing the correct use of the macros.  */
#define __S_TYPEISMQ(buf)  ((buf)->st_mode - (buf)->st_mode)
#define __S_TYPEISSEM(buf) ((buf)->st_mode - (buf)->st_mode)
#define __S_TYPEISSHM(buf) ((buf)->st_mode - (buf)->st_mode)

/* 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.  */

#ifdef __USE_ATFILE
# define UTIME_NOW	((1l << 30) - 1l)
# define UTIME_OMIT	((1l << 30) - 2l)
#endif

#endif	/* bits/stat.h.  */
