1/* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License, Version 1.0 only 6 * (the "License"). You may not use this file except in compliance 7 * with the License. 8 * 9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10 * or http://www.opensolaris.org/os/licensing. 11 * See the License for the specific language governing permissions 12 * and limitations under the License. 13 * 14 * When distributing Covered Code, include this CDDL HEADER in each 15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16 * If applicable, add the following below this CDDL HEADER, with the 17 * fields enclosed by brackets "[]" replaced with your own identifying 18 * information: Portions Copyright [yyyy] [name of copyright owner] 19 * 20 * CDDL HEADER END 21 */ 22/* 23 * Copyright 2001 Sun Microsystems, Inc. All rights reserved. 24 * Use is subject to license terms. 25 */ 26 27#ifndef __SYS_STAT_H 28#define __SYS_STAT_H 29 30#pragma ident "%Z%%M% %I% %E% SMI" 31 32/* 33 * NOTE: changes to this file should also be made to xpg2include/sys/stat.h 34 */ 35 36#include <sys/types.h> 37 38#ifdef __cplusplus 39extern "C" { 40#endif 41 42struct stat { 43 dev_t st_dev; 44 ino_t st_ino; 45 mode_t st_mode; 46 short st_nlink; 47 uid_t st_uid; 48 gid_t st_gid; 49 dev_t st_rdev; 50 off_t st_size; 51 time_t st_atime; 52 int st_spare1; 53 time_t st_mtime; 54 int st_spare2; 55 time_t st_ctime; 56 int st_spare3; 57 long st_blksize; 58 long st_blocks; 59 long st_spare4[2]; 60}; 61 62#define _IFMT 0170000 /* type of file */ 63#define _IFDIR 0040000 /* directory */ 64#define _IFCHR 0020000 /* character special */ 65#define _IFBLK 0060000 /* block special */ 66#define _IFREG 0100000 /* regular */ 67#define _IFLNK 0120000 /* symbolic link */ 68#define _IFSOCK 0140000 /* socket */ 69#define _IFIFO 0010000 /* fifo */ 70 71#define S_ISUID 0004000 /* set user id on execution */ 72#define S_ISGID 0002000 /* set group id on execution */ 73#ifndef _POSIX_SOURCE 74#define S_ISVTX 0001000 /* save swapped text even after use */ 75#define S_IREAD 0000400 /* read permission, owner */ 76#define S_IWRITE 0000200 /* write permission, owner */ 77#define S_IEXEC 0000100 /* execute/search permission, owner */ 78 79#define S_ENFMT 0002000 /* enforcement-mode locking */ 80 81#define S_IFMT _IFMT 82#define S_IFDIR _IFDIR 83#define S_IFCHR _IFCHR 84#define S_IFBLK _IFBLK 85#define S_IFREG _IFREG 86#define S_IFLNK _IFLNK 87#define S_IFSOCK _IFSOCK 88#define S_IFIFO _IFIFO 89#endif /* !_POSIX_SOURCE */ 90 91#define S_IRWXU 0000700 /* rwx, owner */ 92#define S_IRUSR 0000400 /* read permission, owner */ 93#define S_IWUSR 0000200 /* write permission, owner */ 94#define S_IXUSR 0000100 /* execute/search permission, owner */ 95#define S_IRWXG 0000070 /* rwx, group */ 96#define S_IRGRP 0000040 /* read permission, group */ 97#define S_IWGRP 0000020 /* write permission, grougroup */ 98#define S_IXGRP 0000010 /* execute/search permission, group */ 99#define S_IRWXO 0000007 /* rwx, other */ 100#define S_IROTH 0000004 /* read permission, other */ 101#define S_IWOTH 0000002 /* write permission, other */ 102#define S_IXOTH 0000001 /* execute/search permission, other */ 103 104#define S_ISBLK(m) (((m)&_IFMT) == _IFBLK) 105#define S_ISCHR(m) (((m)&_IFMT) == _IFCHR) 106#define S_ISDIR(m) (((m)&_IFMT) == _IFDIR) 107#define S_ISFIFO(m) (((m)&_IFMT) == _IFIFO) 108#define S_ISREG(m) (((m)&_IFMT) == _IFREG) 109#ifndef _POSIX_SOURCE 110#define S_ISLNK(m) (((m)&_IFMT) == _IFLNK) 111#define S_ISSOCK(m) (((m)&_IFMT) == _IFSOCK) 112#endif 113 114int chmod(char *, mode_t); 115int fstat(int, struct stat *); 116int mkdir(char *, mode_t); 117int mkfifo(char *, mode_t); 118int stat(char *, struct stat *); 119mode_t umask(mode_t); 120 121#ifdef __cplusplus 122} 123#endif 124 125#endif /* __SYS_STAT_H */ 126