epoc32/include/libc/sys/stat.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:27:01 +0100
branchSymbian2
changeset 3 e1b950c65cb4
parent 0 061f57f2323e
child 4 837f303aceeb
permissions -rw-r--r--
Attempt to represent the S^2->S^3 header reorganisation as a series of "hg rename" operations
     1 /*
     2 * Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
     3 * All rights reserved.
     4 * This component and the accompanying materials are made available
     5 * under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
     6 * which accompanies this distribution, and is available
     7 * at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
     8 *
     9 * Initial Contributors:
    10 * Nokia Corporation - initial contribution.
    11 *
    12 * Contributors:
    13 *
    14 * Description:
    15 *
    16 */
    17 
    18 
    19 
    20 
    21 
    22 
    23 /**
    24  @file
    25  @publishedAll
    26  @released
    27 */
    28 
    29 #ifndef	_SYS_STAT_H
    30 #define	_SYS_STAT_H
    31 
    32 #ifdef __cplusplus
    33 extern "C" {
    34 #endif
    35 
    36 #include <_ansi.h>
    37 #include <time.h>
    38 #include <sys/types.h>
    39 
    40 struct	stat 
    41 {
    42   dev_t		st_dev;
    43   ino_t		st_ino;
    44   mode_t	st_mode;
    45   short		st_nlink;
    46   uid_t		st_uid;
    47   gid_t		st_gid;
    48   dev_t		st_rdev;
    49   off_t		st_size;
    50   /* SysV/sco doesn't have the rest... */
    51 #ifdef __svr4__
    52   time_t	st_atime;
    53   time_t	st_mtime;
    54   time_t	st_ctime;
    55 #else
    56   time_t	st_atime;
    57   int	st_spare1;
    58   time_t	st_mtime;
    59   int	st_spare2;
    60   time_t	st_ctime;
    61   int	st_spare3;
    62   long		st_blksize;
    63   long		st_blocks;
    64   long	st_spare4[2];
    65 #endif
    66 };
    67 
    68 #define	_IFMT		0170000	/* type of file */
    69 #define		_IFDIR	0040000	/* directory */
    70 #define		_IFCHR	0020000	/* character special */
    71 #define		_IFBLK	0060000	/* block special */
    72 #define		_IFREG	0100000	/* regular */
    73 #define		_IFLNK	0120000	/* symbolic link */
    74 #define		_IFSOCK	0140000	/* socket */
    75 #define		_IFIFO	0010000	/* fifo */
    76 
    77 #define 	S_BLKSIZE  1024 /* size of a block */
    78 
    79 #define	S_ISUID		0004000	/* set user id on execution */
    80 #define	S_ISGID		0002000	/* set group id on execution */
    81 #ifndef	_POSIX_SOURCE
    82 #define	S_ISVTX		0001000	/* save swapped text even after use */
    83 #define	S_IREAD		0000400	/* read permission, owner */
    84 #define	S_IWRITE 	0000200	/* write permission, owner */
    85 #define	S_IEXEC		0000100	/* execute/search permission, owner */
    86 
    87 #define	S_ENFMT 	0002000	/* enforcement-mode locking */
    88 
    89 #define	S_IFMT		_IFMT
    90 #define	S_IFDIR		_IFDIR
    91 #define	S_IFCHR		_IFCHR
    92 #define	S_IFBLK		_IFBLK
    93 #define	S_IFREG		_IFREG
    94 #define	S_IFLNK		_IFLNK
    95 #define	S_IFSOCK	_IFSOCK
    96 #define	S_IFIFO		_IFIFO
    97 #endif	/* !_POSIX_SOURCE */
    98 
    99 #define	S_IRWXU 	0000700	/* rwx, owner */
   100 #define		S_IRUSR	0000400	/* read permission, owner */
   101 #define		S_IWUSR	0000200	/* write permission, owner */
   102 #define		S_IXUSR	0000100	/* execute/search permission, owner */
   103 #define	S_IRWXG		0000070	/* rwx, group */
   104 #define		S_IRGRP	0000040	/* read permission, group */
   105 #define		S_IWGRP	0000020	/* write permission, grougroup */
   106 #define		S_IXGRP	0000010	/* execute/search permission, group */
   107 #define	S_IRWXO		0000007	/* rwx, other */
   108 #define		S_IROTH	0000004	/* read permission, other */
   109 #define		S_IWOTH	0000002	/* write permission, other */
   110 #define		S_IXOTH	0000001	/* execute/search permission, other */
   111 
   112 #define	S_ISBLK(m)	(((m)&_IFMT) == _IFBLK)
   113 #define	S_ISCHR(m)	(((m)&_IFMT) == _IFCHR)
   114 #define	S_ISDIR(m)	(((m)&_IFMT) == _IFDIR)
   115 #define	S_ISFIFO(m)	(((m)&_IFMT) == _IFIFO)
   116 #define	S_ISREG(m)	(((m)&_IFMT) == _IFREG)
   117 #define	S_ISLNK(m)	(((m)&_IFMT) == _IFLNK)
   118 #define	S_ISSOCK(m)	(((m)&_IFMT) == _IFSOCK)
   119 
   120 IMPORT_C int	chmod	( const char *_path, mode_t _mode );
   121 IMPORT_C int	wchmod	( const wchar_t *_path, mode_t _mode );
   122 IMPORT_C int	fstat	( int _fd, struct stat *_sbuf );
   123 IMPORT_C int	mkdir	( const char *_path, mode_t _mode );
   124 IMPORT_C int	wmkdir	( const wchar_t *_path, mode_t _mode );
   125 IMPORT_C int	stat	( const char *_path, struct stat *_sbuf );
   126 IMPORT_C int	wstat	( const wchar_t *_path, struct stat *_sbuf );
   127 IMPORT_C char*	realpath (const char *_path, char *resolved);
   128 IMPORT_C wchar_t*	wrealpath (const wchar_t * _path, wchar_t * resolved);
   129 
   130 int	mkfifo	( char *_path, mode_t _mode );
   131 mode_t	umask	( mode_t _mask );
   132 
   133 #ifdef __cplusplus
   134 }
   135 #endif
   136 #endif /* _SYS_STAT_H */