]> sourceware.org Git - glibc.git/blobdiff - sysdeps/unix/sysv/linux/mips/bits/stat.h
Amend log entry with omitted file.
[glibc.git] / sysdeps / unix / sysv / linux / mips / bits / stat.h
index 1379ea7a6bf5b6b60201c137e99a195c0cf046e5..9ae38cd8d0ed671630a08dd3edf7e75e32c659b5 100644 (file)
@@ -1,25 +1,28 @@
-/* Copyright (C) 1992, 95, 96, 97, 98, 99 Free Software Foundation, Inc.
+/* Copyright (C) 1992, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004
+       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 Library General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
+   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
-   Library General Public License for more details.
+   Lesser General Public License for more details.
 
-   You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If not,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
 
 #ifndef _SYS_STAT_H
 # error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
 #endif
 
+#include <sgidefs.h>
+
 /* Versions of the `struct stat' data structure.  */
 #define _STAT_VER_LINUX_OLD    1
 #define _STAT_VER_KERNEL       1
@@ -33,6 +36,7 @@
 #define _MKNOD_VER             _MKNOD_VER_LINUX /* The bits defined below.  */
 
 
+#if _MIPS_SIM == _ABIO32
 /* Structure describing file characteristics.  */
 struct stat
   {
@@ -48,14 +52,15 @@ struct stat
     __uid_t st_uid;            /* User ID of the file's owner. */
     __gid_t st_gid;            /* Group ID of the file's group.*/
     unsigned long int st_rdev; /* Device number, if device.  */
-    long int st_pad2[2];
 #ifndef __USE_FILE_OFFSET64
+    long int st_pad2[2];
     __off_t st_size;           /* Size of file, in bytes.  */
+    /* SVR4 added this extra long to allow for expansion of off_t.  */
+    long int st_pad3;
 #else
+    long int st_pad2[3];
     __off64_t st_size;         /* Size of file, in bytes.  */
 #endif
-    /* SVR4 added this extra long to allow for expansion of off_t.  */
-    long int st_pad3;
     /*
      * Actually this should be timestruc_t st_atime, st_mtime and
      * st_ctime but we don't have it under Linux.
@@ -70,13 +75,10 @@ struct stat
 #ifndef __USE_FILE_OFFSET64
     __blkcnt_t st_blocks;      /* Number of 512-byte blocks allocated.  */
 #else
+    long int st_pad4;
     __blkcnt64_t st_blocks;    /* Number of 512-byte blocks allocated.  */
 #endif
-    char st_fstype[16];                /* Filesystem type name */
-    long int st_pad4[8];
-    /* Linux specific fields */
-    unsigned int st_flags;
-    unsigned int st_gen;
+    long int st_pad5[14];
   };
 
 #ifdef __USE_LARGEFILE64
@@ -90,10 +92,8 @@ struct stat64
     __uid_t st_uid;            /* User ID of the file's owner. */
     __gid_t st_gid;            /* Group ID of the file's group.*/
     unsigned long int st_rdev; /* Device number, if device.  */
-    long int st_pad2[2];
+    long int st_pad2[3];
     __off64_t st_size;         /* Size of file, in bytes.  */
-    /* SVR4 added this extra long to allow for expansion of off_t.  */
-    long int st_pad3;
     /*
      * Actually this should be timestruc_t st_atime, st_mtime and
      * st_ctime but we don't have it under Linux.
@@ -105,14 +105,76 @@ struct stat64
     __time_t st_ctime;         /* Time of last status change.  */
     long int __reserved2;
     __blksize_t st_blksize;    /* Optimal block size for I/O.  */
+    long int st_pad3;
     __blkcnt64_t st_blocks;    /* Number of 512-byte blocks allocated.  */
-    char st_fstype[16];                /* Filesystem type name */
-    long int st_pad4[8];
-    /* Linux specific fields */
-    unsigned int st_flags;
-    unsigned int st_gen;
+    long int st_pad4[14];
   };
 #endif
+#else
+struct stat
+  {
+    __dev_t st_dev;
+    int        st_pad1[3];             /* Reserved for st_dev expansion  */
+#ifndef __USE_FILE_OFFSET64
+    __ino_t st_ino;
+#else
+    __ino64_t st_ino;
+#endif
+    __mode_t st_mode;
+    __nlink_t st_nlink;
+    __uid_t st_uid;
+    __gid_t st_gid;
+    __dev_t st_rdev;
+#if !defined __USE_FILE_OFFSET64
+    unsigned int st_pad2[2];   /* Reserved for st_rdev expansion  */
+    __off_t st_size;
+    int st_pad3;
+#else
+    unsigned int st_pad2[3];   /* Reserved for st_rdev expansion  */
+    __off64_t st_size;
+#endif
+    __time_t st_atime;
+    int __reserved0;
+    __time_t st_mtime;
+    int __reserved1;
+    __time_t st_ctime;
+    int __reserved2;
+    __blksize_t st_blksize;
+    unsigned int st_pad4;
+#ifndef __USE_FILE_OFFSET64
+    __blkcnt_t st_blocks;
+#else
+    __blkcnt64_t st_blocks;
+#endif
+    int st_pad5[14];
+  };
+
+#ifdef __USE_LARGEFILE64
+struct stat64
+  {
+    __dev_t st_dev;
+    unsigned int st_pad1[3];   /* Reserved for st_dev expansion  */
+    __ino64_t st_ino;
+    __mode_t st_mode;
+    __nlink_t st_nlink;
+    __uid_t st_uid;
+    __gid_t st_gid;
+    __dev_t st_rdev;
+    unsigned int st_pad2[3];   /* Reserved for st_rdev expansion  */
+    __off64_t st_size;
+    __time_t st_atime;
+    int __reserved0;
+    __time_t st_mtime;
+    int __reserved1;
+    __time_t st_ctime;
+    int __reserved2;
+    __blksize_t st_blksize;
+    unsigned int st_pad3;
+    __blkcnt64_t st_blocks;
+    int st_pad4[14];
+};
+#endif
+#endif
 
 /* Tell code we have these members.  */
 #define        _STATBUF_ST_BLKSIZE
@@ -128,11 +190,15 @@ struct stat64
 #define        __S_IFBLK       0060000 /* Block device.  */
 #define        __S_IFREG       0100000 /* Regular file.  */
 #define        __S_IFIFO       0010000 /* FIFO.  */
-
-/* These don't actually exist on System V, but having them doesn't hurt.  */
 #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.  */
This page took 0.03238 seconds and 5 git commands to generate.