gonzui


Format: Advanced Search

t2ex/bsd_source/lib/libc/src_bsd/include/sys/stat.hbare sourcepermlink (0.03 seconds)

Search this content:

    1: /*      $OpenBSD: stat.h,v 1.20 2011/07/18 17:29:49 matthew Exp $    */
    2: /*      $NetBSD: stat.h,v 1.20 1996/05/16 22:17:49 cgd Exp $ */
    3: 
    4: /*-
    5:  * Copyright (c) 1982, 1986, 1989, 1993
    6:  *      The Regents of the University of California.  All rights reserved.
    7:  * (c) UNIX System Laboratories, Inc.
    8:  * All or some portions of this file are derived from material licensed
    9:  * to the University of California by American Telephone and Telegraph
   10:  * Co. or Unix System Laboratories, Inc. and are reproduced herein with
   11:  * the permission of UNIX System Laboratories, Inc.
   12:  *
   13:  * Redistribution and use in source and binary forms, with or without
   14:  * modification, are permitted provided that the following conditions
   15:  * are met:
   16:  * 1. Redistributions of source code must retain the above copyright
   17:  *    notice, this list of conditions and the following disclaimer.
   18:  * 2. Redistributions in binary form must reproduce the above copyright
   19:  *    notice, this list of conditions and the following disclaimer in the
   20:  *    documentation and/or other materials provided with the distribution.
   21:  * 3. Neither the name of the University nor the names of its contributors
   22:  *    may be used to endorse or promote products derived from this software
   23:  *    without specific prior written permission.
   24:  *
   25:  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
   26:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   27:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   28:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
   29:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   30:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   31:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   32:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   33:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   34:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   35:  * SUCH DAMAGE.
   36:  *
   37:  *      @(#)stat.h   8.9 (Berkeley) 8/17/94
   38:  */
   39: 
   40: #ifndef _SYS_STAT_H_
   41: #define _SYS_STAT_H_
   42: 
   43: #include <sys/cdefs.h>
   44: #include <sys/time.h>
   45: 
   46: struct stat {
   47: #if 1
   48:         mode_t st_mode;
   49:         u_int32_t      st_blksize;
   50:         off_t  st_size;
   51: #else
   52:         dev_t    st_dev;                /* inode's device */
   53:         ino_t    st_ino;                /* inode's number */
   54:         mode_t   st_mode;              /* inode protection mode */
   55:         nlink_t          st_nlink;            /* number of hard links */
   56:         uid_t    st_uid;                /* user ID of the file's owner */
   57:         gid_t    st_gid;                /* group ID of the file's group */
   58:         dev_t    st_rdev;               /* device type */
   59:         int32_t          st_lspare0;
   60: #if __POSIX_VISIBLE >= 200809 || __BSD_VISIBLE
   61:         struct timespec st_atim;       /* time of last access */
   62:         struct timespec st_mtim;       /* time of last data modification */
   63:         struct timespec st_ctim;       /* time of last file status change */
   64: #else
   65:         time_t   st_atime;             /* time of last access */
   66:         long     st_atimensec;           /* nsec of last access */
   67:         time_t   st_mtime;             /* time of last data modification */
   68:         long     st_mtimensec;           /* nsec of last data modification */
   69:         time_t   st_ctime;             /* time of last file status change */
   70:         long     st_ctimensec;           /* nsec of last file status change */
   71: #endif /* __POSIX_VISIBLE >= 200809 || __BSD_VISIBLE */
   72:         off_t    st_size;               /* file size, in bytes */
   73:         int64_t          st_blocks;           /* blocks allocated for file */
   74:         u_int32_t st_blksize;          /* optimal blocksize for I/O */
   75:         u_int32_t st_flags;            /* user defined flags for file */
   76:         u_int32_t st_gen;              /* file generation number */
   77:         int32_t          st_lspare1;
   78: #if __POSIX_VISIBLE >= 200809 || __BSD_VISIBLE
   79:         struct timespec __st_birthtim; /* time of file creation */
   80: #else
   81:         time_t   __st_birthtime;       /* time of file creation */
   82:         long     __st_birthtimensec;     /* nsec of file creation */
   83: #endif /* __POSIX_VISIBLE >= 200809 || __BSD_VISIBLE */
   84:         int64_t          st_qspare[2];
   85: #endif
   86: };
   87: #if __POSIX_VISIBLE >= 200809 || __BSD_VISIBLE
   88: #define st_atime                st_atim.tv_sec
   89: #define st_mtime                st_mtim.tv_sec
   90: #define st_ctime                st_ctim.tv_sec
   91: #define __st_birthtime          __st_birthtim.tv_sec
   92: #endif
   93: #if __BSD_VISIBLE
   94: #define st_atimespec            st_atim
   95: #define st_atimensec            st_atim.tv_nsec
   96: #define st_mtimespec            st_mtim
   97: #define st_mtimensec            st_mtim.tv_nsec
   98: #define st_ctimespec            st_ctim
   99: #define st_ctimensec            st_ctim.tv_nsec
  100: #define __st_birthtimespec      __st_birthtim
  101: #define __st_birthtimensec      __st_birthtim.tv_nsec
  102: #endif
  103: 
  104: #define S_ISUID 0004000                 /* set user id on execution */
  105: #define S_ISGID 0002000                 /* set group id on execution */
  106: #if __BSD_VISIBLE
  107: #define S_ISTXT 0001000                 /* sticky bit */
  108: #endif
  109: 
  110: #define S_IRWXU 0000700                 /* RWX mask for owner */
  111: #define S_IRUSR 0000400                 /* R for owner */
  112: #define S_IWUSR 0000200                 /* W for owner */
  113: #define S_IXUSR 0000100                 /* X for owner */
  114: 
  115: #if __BSD_VISIBLE
  116: #define S_IREAD         S_IRUSR
  117: #define S_IWRITE        S_IWUSR
  118: #define S_IEXEC         S_IXUSR
  119: #endif
  120: 
  121: #define S_IRWXG 0000070                 /* RWX mask for group */
  122: #define S_IRGRP 0000040                 /* R for group */
  123: #define S_IWGRP 0000020                 /* W for group */
  124: #define S_IXGRP 0000010                 /* X for group */
  125: 
  126: #define S_IRWXO 0000007                 /* RWX mask for other */
  127: #define S_IROTH 0000004                 /* R for other */
  128: #define S_IWOTH 0000002                 /* W for other */
  129: #define S_IXOTH 0000001                 /* X for other */
  130: 
  131: #if __XPG_VISIBLE || __BSD_VISIBLE
  132: #define S_IFMT   0170000         /* type of file mask */
  133: #define S_IFIFO  0010000                /* named pipe (fifo) */
  134: #define S_IFCHR  0020000                /* character special */
  135: #define S_IFDIR  0040000                /* directory */
  136: #define S_IFBLK  0060000                /* block special */
  137: #define S_IFREG  0100000                /* regular */
  138: #define S_IFLNK  0120000                /* symbolic link */
  139: #define S_IFSOCK 0140000                /* socket */
  140: #define S_ISVTX  0001000                /* save swapped text even after use */
  141: #endif
  142: 
  143: #define S_ISDIR(m)      ((m & 0170000) == 0040000)   /* directory */
  144: #define S_ISCHR(m)      ((m & 0170000) == 0020000)   /* char special */
  145: #define S_ISBLK(m)      ((m & 0170000) == 0060000)   /* block special */
  146: #define S_ISREG(m)      ((m & 0170000) == 0100000)   /* regular file */
  147: #define S_ISFIFO(m)     ((m & 0170000) == 0010000)  /* fifo */
  148: #if __POSIX_VISIBLE >= 200112 || __BSD_VISIBLE
  149: #define S_ISLNK(m)      ((m & 0170000) == 0120000)   /* symbolic link */
  150: #define S_ISSOCK(m)     ((m & 0170000) == 0140000)  /* socket */
  151: #endif
  152: 
  153: #if __BSD_VISIBLE
  154: #define ACCESSPERMS     (S_IRWXU|S_IRWXG|S_IRWXO)   /* 00777 */
  155:                                                         /* 07777 */
  156: #define ALLPERMS        (S_ISUID|S_ISGID|S_ISTXT|S_IRWXU|S_IRWXG|S_IRWXO)
  157:                                                         /* 00666 */
  158: #define DEFFILEMODE     (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)
  159: 
  160: #define S_BLKSIZE       512           /* block size used in the stat struct */
  161: 
  162: /*
  163:  * Definitions of flags stored in file flags word.
  164:  *
  165:  * Super-user and owner changeable flags.
  166:  */
  167: #define UF_SETTABLE     0x0000ffff  /* mask of owner changeable flags */
  168: #define UF_NODUMP       0x00000001    /* do not dump file */
  169: #define UF_IMMUTABLE    0x00000002 /* file may not be changed */
  170: #define UF_APPEND       0x00000004    /* writes to file may only append */
  171: #define UF_OPAQUE       0x00000008    /* directory is opaque wrt. union */
  172: /*
  173:  * Super-user changeable flags.
  174:  */
  175: #define SF_SETTABLE     0xffff0000  /* mask of superuser changeable flags */
  176: #define SF_ARCHIVED     0x00010000  /* file is archived */
  177: #define SF_IMMUTABLE    0x00020000 /* file may not be changed */
  178: #define SF_APPEND       0x00040000    /* writes to file may only append */
  179: 
  180: #ifdef _KERNEL
  181: /*
  182:  * Shorthand abbreviations of above.
  183:  */
  184: #define OPAQUE          (UF_OPAQUE)
  185: #define APPEND          (UF_APPEND | SF_APPEND)
  186: #define IMMUTABLE       (UF_IMMUTABLE | SF_IMMUTABLE)
  187: #endif /* _KERNEL */
  188: #endif /* __BSD_VISIBLE */
  189: 
  190: #if __POSIX_VISIBLE >= 200809
  191: #define UTIME_NOW       -2L
  192: #define UTIME_OMIT      -1L
  193: #endif /* __POSIX_VISIBLE */
  194: 
  195: #ifndef _KERNEL
  196: __BEGIN_DECLS
  197: int     chmod(const char *, mode_t);
  198: int     __libc_fstat(int, struct stat *);
  199: int     mknod(const char *, mode_t, dev_t);
  200: int     mkdir(const char *, mode_t);
  201: int     mkfifo(const char *, mode_t);
  202: int     stat(const char *, struct stat *);
  203: mode_t  umask(mode_t);
  204: #if __POSIX_VISIBLE >= 200809
  205: int     fchmodat(int, const char *, mode_t, int);
  206: int     fstatat(int, const char *, struct stat *, int);
  207: int     mkdirat(int, const char *, mode_t);
  208: int     mkfifoat(int, const char *, mode_t);
  209: int     mknodat(int, const char *, mode_t, dev_t);
  210: int     utimensat(int, const char *, const struct timespec [2], int);
  211: int     futimens(int, const struct timespec [2]);
  212: #endif
  213: #if __BSD_VISIBLE
  214: int     chflags(const char *, unsigned int);
  215: int     fchflags(int, unsigned int);
  216: int     fchmod(int, mode_t);
  217: int     lstat(const char *, struct stat *);
  218: int     isfdtype(int, int);
  219: #endif
  220: __END_DECLS
  221: #endif
  222: #endif /* !_SYS_STAT_H_ */