sl@0: /** @file ../include/sys/stat.h sl@0: @internalComponent sl@0: */ sl@0: sl@0: /** @fn chmod(const char *_path, mode_t _mode) sl@0: @param _path sl@0: @param _mode sl@0: sl@0: Note: This description also covers the following functions - sl@0: fchmod() lchmod() sl@0: sl@0: @return Upon successful completion, the value 0 is returned; otherwise the sl@0: value -1 is returned and the global variable errno is set to indicate the sl@0: error. sl@0: sl@0: @code sl@0: #include < sys/stat.h > : sl@0: @endcode sl@0: The file permission bits of the file named specified by _path or referenced by the file descriptor fd are changed to _mode. The chmod system call verifies that the process owner (user) either owns sl@0: the file specified by _path (or fd ), sl@0: or sl@0: is the super-user. sl@0: The chmod system call follows symbolic links to operate on the target of the link sl@0: rather than the link itself. sl@0: sl@0: The lchmod system call is similar to chmod but does not follow symbolic links. sl@0: sl@0: A mode is created from ored permission bit masks sl@0: defined in \#include \ : sl@0: sl@0: @code sl@0: #define S_IRWXU 0000700 // RWX mask for owner sl@0: #define S_IRUSR 0000400 // R for owner sl@0: #define S_IWUSR 0000200 // W for owner sl@0: #define S_IXUSR 0000100 // X for owner sl@0: #define S_IRWXG 0000070 // RWX mask for group sl@0: #define S_IRGRP 0000040 // R for group sl@0: #define S_IWGRP 0000020 // W for group sl@0: #define S_IXGRP 0000010 // X for group sl@0: #define S_IRWXO 0000007 // RWX mask for other sl@0: #define S_IROTH 0000004 // R for other sl@0: #define S_IWOTH 0000002 // W for other sl@0: #define S_IXOTH 0000001 // X for other sl@0: #define S_ISUID 0004000 // set user id on execution sl@0: #define S_ISGID 0002000 // set group id on execution sl@0: #ifndef __BSD_VISIBLE sl@0: #define S_ISTXT 0001000 // sticky bit sl@0: #endif sl@0: @endcode sl@0: sl@0: Notes : sl@0: sl@0: Sticky bit and set id on execution are not supported. sl@0: sl@0: Permission values for group and others are ignored as there is no concept of sl@0: group and others on the Symbian OS. sl@0: The flag bits S_IXUSR, S_IXGRP & S_IXOTH are ignored as execute permissions on a file are meaningless on Symbian OS. sl@0: sl@0: An attempt to change file permission to write-only changes the file permission sl@0: to read-write. sl@0: sl@0: Either or both of S_IRUSR or S_IWUSR bits must be set in the _mode argument, else chmod fails with EINVAL. sl@0: sl@0: Permissions for directories are ignored. sl@0: sl@0: 000 mode is treated as invalid mode as Symbian OS cannot have entries with sl@0: both read and write permissions absent. sl@0: sl@0: sl@0: sl@0: Examples: sl@0: @code sl@0: /*Detailed description: This test code demonstartes usage of chmod system call, it sl@0: * changes mode of file Example.txt in the current working directory to read-only. sl@0: * Preconditions: Example.txt file should be present in the current working directory. sl@0: */ sl@0: int main() sl@0: { sl@0: if(chmod("Example.txt" , 0444) < 0 ) sl@0: { sl@0: printf("change mode of file Example.txt failed"); sl@0: return -1; sl@0: } sl@0: printf("Chmod system call successful"); sl@0: return 0; sl@0: } sl@0: sl@0: @endcode sl@0: Output sl@0: @code sl@0: Chmod system call successful sl@0: sl@0: @endcode sl@0: @code sl@0: /* Detailed description : This sample code demonstrates the usage of fchmod system call, this code sl@0: * changes mode of file Example.txt using fchmod system call. sl@0: */ sl@0: #include sl@0: #include sl@0: #include sl@0: int main() sl@0: { sl@0: int fd = 0; sl@0: fd = open("Example.txt" , O_CREAT | O_RDWR , 0666); sl@0: if(fd < 0 ) { sl@0: printf("Failed to open file Example.txt"); sl@0: return -1; sl@0: } sl@0: if(fchmod(fd , 0444) < 0 ) { sl@0: printf("fchmod failed to change mode of file Example.txt"); sl@0: return -1; sl@0: } sl@0: printf("Fchmod call changed mode of Example.txt"); sl@0: return 0; sl@0: } sl@0: sl@0: @endcode sl@0: Output sl@0: @code sl@0: Fchmod call changed mode of Example.txt sl@0: sl@0: @endcode sl@0: sl@0: Limitations: sl@0: sl@0: KErrNotReady of Symbian error code is mapped to ENOENT, which typically means drive sl@0: not found or filesystem not mounted on the drive. sl@0: sl@0: @see chmod() sl@0: @see chown() sl@0: @see open() sl@0: @see stat() sl@0: sl@0: sl@0: sl@0: @capability Deferred @ref RFs::SetAtt(const TDesC16&, unsigned, unsigned) sl@0: sl@0: @publishedAll sl@0: @externallyDefinedApi sl@0: */ sl@0: sl@0: /** @fn fchmod(int fd, mode_t _mode) sl@0: @param fd sl@0: @param _mode sl@0: sl@0: Refer to chmod() for the documentation sl@0: sl@0: @see chmod() sl@0: @see chown() sl@0: @see open() sl@0: @see stat() sl@0: sl@0: sl@0: sl@0: sl@0: @publishedAll sl@0: @externallyDefinedApi sl@0: */ sl@0: sl@0: /** @fn fstat(int fd, struct stat *st) sl@0: @param fd sl@0: @param st sl@0: sl@0: Refer to stat() for the documentation sl@0: sl@0: Notes: sl@0: sl@0: If 'fd' refers to a shared memory object, the implementation updates only the st_uid, st_gid, st_size, sl@0: and st_mode fields in the stat structure pointed to by the 'st' argument . sl@0: sl@0: @see access() sl@0: @see chmod() sl@0: @see chown() sl@0: @see utimes() sl@0: @see symlink() sl@0: sl@0: sl@0: sl@0: sl@0: @publishedAll sl@0: @externallyDefinedApi sl@0: */ sl@0: sl@0: /** @fn fstat64(int fd, struct stat64 *st) sl@0: @param fd sl@0: @param st sl@0: sl@0: For full documentation see: http://www.unix.org/version2/whatsnew/lfs20mar.html#3.0 sl@0: sl@0: @see fstat() sl@0: sl@0: @publishedAll sl@0: @externallyDefinedApi sl@0: */ sl@0: sl@0: sl@0: /** @fn lstat(const char *file_name, struct stat *buf) sl@0: @param file_name sl@0: @param buf sl@0: sl@0: Refer to stat() for the documentation sl@0: sl@0: @see access() sl@0: @see chmod() sl@0: @see chown() sl@0: @see utimes() sl@0: @see symlink() sl@0: sl@0: sl@0: sl@0: @capability Deferred @ref RFs::Entry(const TDesC16&, TEntry&) sl@0: sl@0: @publishedAll sl@0: @externallyDefinedApi sl@0: */ sl@0: sl@0: /** @fn lstat64(const char *file_name, struct stat64 *buf) sl@0: @param file_name sl@0: @param buf sl@0: sl@0: For full documentation see: http://www.unix.org/version2/whatsnew/lfs20mar.html#3.0 sl@0: sl@0: @see lstat() sl@0: sl@0: @publishedAll sl@0: @externallyDefinedApi sl@0: */ sl@0: sl@0: /** @fn __xstat(int, const char *file, struct stat *buf) sl@0: @param file sl@0: @param buf sl@0: sl@0: Refer to stat() for the documentation sl@0: sl@0: @see access() sl@0: @see chmod() sl@0: @see chown() sl@0: @see utimes() sl@0: @see symlink() sl@0: sl@0: sl@0: sl@0: sl@0: @publishedAll sl@0: @released sl@0: */ sl@0: sl@0: /** @fn __xstat64(int, const char *file, struct stat64 *buf) sl@0: @param file sl@0: @param buf sl@0: sl@0: For full documentation see: http://www.unix.org/version2/whatsnew/lfs20mar.html#3.0 sl@0: sl@0: @see __xstat() sl@0: sl@0: @publishedAll sl@0: @released sl@0: */ sl@0: sl@0: /** @fn __lxstat(int, const char *file, struct stat *buf) sl@0: @param file sl@0: @param buf sl@0: sl@0: Refer to stat() for the documentation sl@0: sl@0: @see access() sl@0: @see chmod() sl@0: @see chown() sl@0: @see utimes() sl@0: @see symlink() sl@0: sl@0: sl@0: sl@0: sl@0: @publishedAll sl@0: @released sl@0: */ sl@0: sl@0: /** @fn __lxstat64(int, const char *file, struct stat64 *buf) sl@0: @param file sl@0: @param buf sl@0: sl@0: For full documentation see: http://www.unix.org/version2/whatsnew/lfs20mar.html#3.0 sl@0: sl@0: @see __lxstat() sl@0: sl@0: @publishedAll sl@0: @released sl@0: */ sl@0: sl@0: sl@0: /** @fn mkdir(const char *_path, mode_t _mode) sl@0: @param _path sl@0: @param _mode sl@0: @return The mkdir() function returns the value 0 if successful; otherwise the sl@0: value -1 is returned and the global variable errno is set to indicate the sl@0: error. sl@0: sl@0: The directory _path is created with the access permissions specified by _mode. sl@0: sl@0: Notes: sl@0: sl@0: _mode values and access permissions are ignored in Symbian OS. sl@0: sl@0: The default working directory of a process is initialized to C: \\private\\U ID sl@0: (UID of the calling application) and any data written into this directory persists between phone resets. sl@0: sl@0: The parent directory's time stamp is not updated when a new child is created. sl@0: sl@0: The newly created directory will be empty (i.e. it doesn't have "." and sl@0: ".." entries) sl@0: sl@0: Examples: sl@0: @code sl@0: /* Detailed description : This test code demonstrates usage of mkdir systemcall, sl@0: * it creates function a directory Example in current working directory. sl@0: */ sl@0: int main() sl@0: { sl@0: if(mkdir("Example" , 0666) < 0 ) sl@0: { sl@0: printf("Directory creation failed"); sl@0: return -1; sl@0: } sl@0: printf("Directory Example created"); sl@0: return 0; sl@0: } sl@0: sl@0: @endcode sl@0: Output sl@0: @code sl@0: Directory Example created sl@0: sl@0: @endcode sl@0: sl@0: Limitations: sl@0: sl@0: The path parameter in mkdir() should not exceed 256 characters in length. sl@0: sl@0: KErrNotReady of Symbian error code is mapped to ENOENT, which typically means drive sl@0: not found or filesystem not mounted on the drive. sl@0: sl@0: The path given to mkdir() should be complete. Attempting to create a directory my calling mkdir("logs",0400|0200|0100) sl@0: will pass on emulator but fails on h/w because the cwd is taken as c:\private\uid3 on emulator and sl@0: z:\private\uid3 on h/w. Since Z drive is a rom on h/w, mkdir() fails by setting errno to 13 on hardware. sl@0: sl@0: @see chmod() sl@0: @see stat() sl@0: @see umask() sl@0: sl@0: sl@0: sl@0: @capability Deferred @ref RFs::MkDir(const TDesC16&) sl@0: sl@0: @publishedAll sl@0: @externallyDefinedApi sl@0: */ sl@0: sl@0: sl@0: /** @fn mkfifo(const char *pathname, mode_t mode) sl@0: @param pathname sl@0: @param mode sl@0: @return The mkfifo function returns the value 0 if successful; otherwise the sl@0: value -1 is returned and errno is set to indicate the error. sl@0: sl@0: The mkfifo system call sl@0: creates a new FIFO(First In First Out) file with name path. The access permissions are sl@0: specified by mode and restricted by the umask of the calling process. sl@0: With the current implementation, the use of umask has no effect. sl@0: sl@0: The FIFO's owner ID and group ID are set to root. sl@0: sl@0: Please note that running stat on a FIFO file does not provide modification sl@0: time information (it provides the creation time). Use fstat on the fd to retrieve the last modified sl@0: time. sl@0: sl@0: Examples: sl@0: @code sl@0: #include sl@0: #include sl@0: #include sl@0: sl@0: int main(void) sl@0: { sl@0: char *pathname = "C:\XXX"; sl@0: mode_t mode = 0666; sl@0: if (mkfifo(pathname, mode) == -1) { sl@0: printf("mkfifo() failed"); sl@0: } sl@0: return 0; sl@0: } sl@0: sl@0: @endcode sl@0: @see chmod() sl@0: @see stat() sl@0: @see umask() sl@0: sl@0: Limitations: sl@0: sl@0: KErrNotReady of Symbian error code is mapped to ENOENT, which typically means drive sl@0: not found or filesystem not mounted on the drive. sl@0: sl@0: @capability Deferred @ref RFs::Delete(const TDesC16&) sl@0: sl@0: @publishedAll sl@0: @externallyDefinedApi sl@0: */ sl@0: sl@0: /** @fn stat(const char *name, struct stat *st) sl@0: @param name sl@0: @param st sl@0: sl@0: Note: This description also covers the following functions - sl@0: lstat() fstat() __xstat() __lxstat() sl@0: sl@0: @return Upon successful completion, the value 0 is returned; otherwise the sl@0: value -1 is returned and the global variable errno is set to indicate the error. sl@0: sl@0: @code sl@0: st_dev The numeric ID of the device containing the file. sl@0: st_ino The file's inode number. sl@0: st_nlink sl@0: The number of hard links to the file. sl@0: sl@0: @endcode sl@0: @code sl@0: st_atime Time when file data last accessed. sl@0: Changed by the .Xr utimes 2, read and readv system calls. sl@0: st_mtime Time when file data last modified. sl@0: Changed by the mkdir, mkfifo, mknod, utimes, write and writev system calls. sl@0: st_ctime Time when file status was last changed (inode data modification). sl@0: Changed by the chmod, chown, creat, link, mkdir, mkfifo, mknod, rename, rmdir, symlink, truncate, unlink, utimes, write and writev system calls. sl@0: st_birthtime sl@0: Time when the inode was created. sl@0: sl@0: @endcode sl@0: @code sl@0: st_size The file size in bytes. sl@0: st_blksize sl@0: The optimal I/O block size for the file. sl@0: st_blocks The actual number of blocks allocated for the file in 512-byte units. sl@0: As short symbolic links are stored in the inode, this number may sl@0: be zero. sl@0: sl@0: @endcode sl@0: @code sl@0: st_uid The user ID of the file's owner. sl@0: st_gid The group ID of the file. sl@0: st_mode sl@0: Status of the file (see below). sl@0: sl@0: @endcode sl@0: @code sl@0: Test for a block special file. sl@0: Test for a character special file. sl@0: Test for a directory. sl@0: Test for a pipe or FIFO special file. sl@0: Test for a symbolic link. NOTE: Inode structure is not supported by Symbian OS and hence link count updation is not possible. sl@0: Check for symbolic link would always fail because of this reason. sl@0: Test for a regular file. sl@0: Test for a socket. sl@0: Test for a whiteout. sl@0: sl@0: @endcode sl@0: The stat system call obtains information about the file pointed to by path. Read, write or execute sl@0: permission of the named file is not required, but all directories sl@0: listed in the path name leading to the file must be searchable. sl@0: sl@0: The lstat system call is like stat except in the case where the named file is a symbolic link, sl@0: in which case lstat returns information about the link, sl@0: while stat returns information about the file the link references. sl@0: sl@0: The fstat system call obtains the same information about an open file sl@0: known by the file descriptor fd. sl@0: sl@0: The __xstat and __lxstat system calls are exactly similar to stat and lstat functionality. sl@0: sl@0: The sb argument is a pointer to a stat structure as defined by \#include \ and into which information is sl@0: placed concerning the file. sl@0: sl@0: The fields of struct stat sl@0: related to the file system are as follows: sl@0: sl@0: @code sl@0: sl@0: st_dev The numeric ID of the device containing the file. sl@0: st_ino The file's inode number. sl@0: st_nlink The number of hard links to the file. sl@0: sl@0: @endcode sl@0: sl@0: The st_dev and st_ino fields together identify the file uniquely within the system. sl@0: sl@0: The time-related fields of struct stat sl@0: are as follows: sl@0: sl@0: st_atime Time when file data last accessed. sl@0: Changed by the .Xr utimes 2, read and readv system calls. sl@0: st_mtime Time when file data last modified. sl@0: Changed by the mkdir, mkfifo, mknod, utimes, write and writev system calls. sl@0: st_ctime Time when file status was last changed (inode data modification). sl@0: Changed by the chmod, chown, creat, link, mkdir, mkfifo, mknod, rename, rmdir, symlink, truncate, unlink, utimes, write and writev system calls. st_birthtime Time when the inode was created. sl@0: sl@0: If _POSIX_SOURCE is not defined, the time-related fields are defined as: sl@0: sl@0: @code sl@0: #ifndef _POSIX_SOURCE sl@0: #define st_atime st_atimespec.tv_sec sl@0: #define st_mtime st_mtimespec.tv_sec sl@0: #define st_ctime st_ctimespec.tv_sec sl@0: #endif sl@0: @endcode sl@0: sl@0: The size-related fields of the struct stat sl@0: are as follows: sl@0: st_size The file size in bytes. sl@0: st_blksize The optimal I/O block size for the file. st_blocks The actual number of blocks allocated for the file in 512-byte units. sl@0: sl@0: As short symbolic links are stored in the inode, this number may sl@0: be zero. sl@0: sl@0: The access-related fields of struct stat sl@0: are as follows: sl@0: st_uid The user ID of the file's owner. sl@0: st_gid The group ID of the file. sl@0: st_mode Status of the file (see below). sl@0: sl@0: The status information word st_mode has the following bits: sl@0: @code sl@0: #define S_IFMT 0170000 // type of file sl@0: #define S_IFIFO 0010000 // named pipe (fifo) sl@0: #define S_IFCHR 0020000 // character special sl@0: #define S_IFDIR 0040000 // directory sl@0: #define S_IFBLK 0060000 // block special sl@0: #define S_IFREG 0100000 // regular sl@0: #define S_IFLNK 0120000 // symbolic link sl@0: #define S_IFSOCK 0140000 // socket sl@0: #define S_IFWHT 0160000 // whiteout sl@0: #define S_ISUID 0004000 // set user id on execution sl@0: #define S_ISGID 0002000 // set group id on execution sl@0: #define S_ISVTX 0001000 // save swapped text even after use sl@0: #define S_IRUSR 0000400 // read permission, owner sl@0: #define S_IWUSR 0000200 // write permission, owner sl@0: #define S_IXUSR 0000100 // execute/search permission, owner sl@0: @endcode sl@0: sl@0: sl@0: For a list of access modes, see \#include \ access and chmod The following macros are available to sl@0: test whether a st_mode value passed in the m argument corresponds to a file of the specified type: S_ISBLK (m); Test for a block special file. S_ISCHR (m); Test for a character special file. S_ISDIR (m); Test for a directory. S_ISFIFO (m); Test for a pipe or FIFO special file. S_ISLNK (m); Test for a symbolic link. NOTE: Inode structure is not supported by Symbian OS and hence link count updation is not possible. sl@0: Check for symbolic link would always fail because of this reason. S_ISREG (m); Test for a regular file. S_ISSOCK (m); Test for a socket. S_ISWHT (m); Test for a whiteout. sl@0: sl@0: The macros evaluate to a non-zero value if the test is true sl@0: or to the value 0 if the test is false. sl@0: sl@0: Note: To obtain correct timestamps of FIFOs use fstat instead of stat call. sl@0: sl@0: Examples: sl@0: @code sl@0: /* Detailed description: Sample usage of stat system call sl@0: * Preconditions: Example.txt file should be present in working directory sl@0: */ sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: int main() sl@0: { sl@0: struct stat buf; sl@0: if(stat("Example.txt" , &buf;) < 0 ) sl@0: { sl@0: printf("Failed to stat Example.txt"); sl@0: return -1; sl@0: } sl@0: printf("Stat system call succeeded"); sl@0: return 0; sl@0: } sl@0: /* sl@0: * Detailed description: Sample usage of fstat system call sl@0: * sl@0: */ sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: int main() sl@0: { sl@0: struct stat buf; sl@0: int fd = open("Example.txt" , O_RDONLY | O_CREAT , 0666); sl@0: if(fstat(fd , &buf;) < 0 ) sl@0: { sl@0: printf("Failed to stat Example.txt"); sl@0: return -1; sl@0: } sl@0: printf("Stat system call succeeded"); sl@0: close(fd); sl@0: return 0; sl@0: } sl@0: sl@0: @endcode sl@0: Output sl@0: @code sl@0: Stat system call succeeded sl@0: sl@0: @endcode sl@0: Output sl@0: @code sl@0: Stat system call succeeded sl@0: sl@0: @endcode sl@0: sl@0: Limitations: sl@0: sl@0: The path parameters of the stat() and lstat() functions should not exceed 256 characters each in length. sl@0: sl@0: KErrNotReady of Symbian error code is mapped to ENOENT, which typically means drive sl@0: not found or filesystem not mounted on the drive. sl@0: sl@0: @see access() sl@0: @see chmod() sl@0: @see chown() sl@0: @see utimes() sl@0: @see symlink() sl@0: sl@0: sl@0: sl@0: @capability Deferred @ref RFs::Entry(const TDesC16&, TEntry&) sl@0: sl@0: @publishedAll sl@0: @externallyDefinedApi sl@0: */ sl@0: sl@0: /** @fn stat64(const char *name, struct stat64 *st) sl@0: @param name sl@0: @param st sl@0: @return Upon successful completion, the value 0 is returned; otherwise the sl@0: value -1 is returned and the global variable errno is set to indicate the error. sl@0: sl@0: For full documentation see: http://www.unix.org/version2/whatsnew/lfs20mar.html#3.0 sl@0: sl@0: @see stat() sl@0: sl@0: @publishedAll sl@0: @externallyDefinedApi sl@0: */ sl@0: sl@0: /** @fn umask(mode_t cmask) sl@0: @param cmask sl@0: @return This function always returns MASK_RWUSR. sl@0: sl@0: This function is build supported but not available functionally. Symbian sl@0: OS does not support multiple users and groups sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: @publishedAll sl@0: @externallyDefinedApi sl@0: */ sl@0: sl@0: sl@0: /** @struct stat sl@0: sl@0: This structure provides detailed information about a file. The information returned depends on the type of file and/or the file system on which the file resides. sl@0: Includes following members, sl@0: sl@0: @publishedAll sl@0: @externallyDefinedApi sl@0: */ sl@0: sl@0: /** @var stat::st_dev sl@0: inode's device sl@0: */ sl@0: sl@0: /** @var stat::st_ino sl@0: inode's number sl@0: */ sl@0: sl@0: /** @var stat::st_mode sl@0: inode protection mode sl@0: */ sl@0: sl@0: /** @var stat::st_nlink sl@0: number of hard links sl@0: */ sl@0: sl@0: /** @var stat::st_uid sl@0: user ID of the file's owner sl@0: */ sl@0: sl@0: /** @var stat::st_gid sl@0: group ID of the file's group sl@0: */ sl@0: sl@0: /** @var stat::st_rdev sl@0: device type sl@0: */ sl@0: sl@0: /** @var stat::st_atimespec sl@0: time of last access sl@0: */ sl@0: sl@0: /** @var stat::st_mtimespec sl@0: time of last data modification sl@0: */ sl@0: sl@0: /** @var stat::st_ctimespec sl@0: time of last file status change sl@0: */ sl@0: sl@0: /** @var stat::st_size sl@0: file size, in bytes sl@0: */ sl@0: sl@0: /** @var stat::st_blocks sl@0: blocks allocated for file sl@0: */ sl@0: sl@0: /** @var stat::st_blksize sl@0: optimal blocksize for IO sl@0: */ sl@0: sl@0: /** @var stat::st_flags sl@0: user defined flags for file sl@0: */ sl@0: sl@0: /** @var stat::st_gen sl@0: file generation number sl@0: */ sl@0: sl@0: /** @struct stat64 sl@0: sl@0: The stat64 structure is similar to the stat structure, except that it is capable of returning information about files that are larger than 2 gigabytes. sl@0: This structure provides detailed information about a file. The information returned depends on the type of file and/or the file system on which the file resides. sl@0: Includes following members, sl@0: sl@0: @publishedAll sl@0: @externallyDefinedApi sl@0: */ sl@0: sl@0: /** @var stat64::st_dev sl@0: inode's device sl@0: */ sl@0: sl@0: /** @var stat64::st_ino sl@0: inode's number sl@0: */ sl@0: sl@0: /** @var stat64::st_mode sl@0: inode protection mode sl@0: */ sl@0: sl@0: /** @var stat64::st_nlink sl@0: number of hard links sl@0: */ sl@0: sl@0: /** @var stat64::st_uid sl@0: user ID of the file's owner sl@0: */ sl@0: sl@0: /** @var stat64::st_gid sl@0: group ID of the file's group sl@0: */ sl@0: sl@0: /** @var stat64::st_rdev sl@0: device type sl@0: */ sl@0: sl@0: /** @var stat64::st_atimespec sl@0: time of last access sl@0: */ sl@0: sl@0: /** @var stat64::st_mtimespec sl@0: time of last data modification sl@0: */ sl@0: sl@0: /** @var stat64::st_ctimespec sl@0: time of last file status change sl@0: */ sl@0: sl@0: /** @var stat64::st_size sl@0: file size, in bytes sl@0: */ sl@0: sl@0: /** @var stat64::st_blocks sl@0: blocks allocated for file sl@0: */ sl@0: sl@0: /** @var stat64::st_blksize sl@0: optimal blocksize for IO sl@0: */ sl@0: sl@0: /** @var stat64::st_flags sl@0: user defined flags for file sl@0: */ sl@0: sl@0: /** @var stat64::st_gen sl@0: file generation number sl@0: */ sl@0: sl@0: sl@0: /** @def S_IRWXU sl@0: sl@0: RWX mask for owner sl@0: sl@0: @publishedAll sl@0: @externallyDefinedApi sl@0: */ sl@0: sl@0: /** @def S_IRUSR sl@0: sl@0: R for owner sl@0: sl@0: @publishedAll sl@0: @externallyDefinedApi sl@0: */ sl@0: sl@0: /** @def S_IWUSR sl@0: sl@0: W for owner sl@0: sl@0: @publishedAll sl@0: @externallyDefinedApi sl@0: */ sl@0: sl@0: /** @def S_IXUSR sl@0: sl@0: X for owner sl@0: sl@0: @publishedAll sl@0: @externallyDefinedApi sl@0: */ sl@0: sl@0: sl@0: /** @def S_IFMT sl@0: sl@0: type of file mask sl@0: sl@0: @publishedAll sl@0: @externallyDefinedApi sl@0: */ sl@0: sl@0: /** @def S_IFIFO sl@0: sl@0: named pipe (fifo) sl@0: sl@0: @publishedAll sl@0: @externallyDefinedApi sl@0: */ sl@0: sl@0: /** @def S_IFCHR sl@0: sl@0: character special sl@0: sl@0: @publishedAll sl@0: @externallyDefinedApi sl@0: */ sl@0: sl@0: /** @def S_IFDIR sl@0: sl@0: directory sl@0: sl@0: @publishedAll sl@0: @externallyDefinedApi sl@0: */ sl@0: sl@0: /** @def S_IFBLK sl@0: sl@0: block special sl@0: sl@0: @publishedAll sl@0: @externallyDefinedApi sl@0: */ sl@0: sl@0: /** @def S_IFREG sl@0: sl@0: regular sl@0: sl@0: @publishedAll sl@0: @externallyDefinedApi sl@0: */ sl@0: sl@0: /** @def S_IFLNK sl@0: sl@0: symbolic link sl@0: sl@0: @publishedAll sl@0: @externallyDefinedApi sl@0: */ sl@0: sl@0: /** @def S_ISDIR(m) sl@0: sl@0: directory. sl@0: sl@0: @publishedAll sl@0: @externallyDefinedApi sl@0: */ sl@0: sl@0: /** @def S_ISCHR(m) sl@0: sl@0: char special. sl@0: sl@0: @publishedAll sl@0: @externallyDefinedApi sl@0: */ sl@0: sl@0: /** @def S_ISLNK(m) sl@0: sl@0: symbolic link sl@0: sl@0: @publishedAll sl@0: @externallyDefinedApi sl@0: */ sl@0: sl@0: /** @def S_ISBLK(m) sl@0: sl@0: block special sl@0: sl@0: @publishedAll sl@0: @externallyDefinedApi sl@0: */ sl@0: sl@0: /** @def S_ISREG(m) sl@0: sl@0: regular file sl@0: sl@0: @publishedAll sl@0: @externallyDefinedApi sl@0: */ sl@0: sl@0: /** @def S_ISFIFO(m) sl@0: sl@0: fifo or socket sl@0: sl@0: @publishedAll sl@0: @externallyDefinedApi sl@0: */ sl@0: sl@0: /** @def S_ISUID sl@0: sl@0: set user id on execution sl@0: sl@0: @publishedAll sl@0: @externallyDefinedApi sl@0: */ sl@0: sl@0: /** @def S_ISGID sl@0: sl@0: set group id on execution sl@0: sl@0: @publishedAll sl@0: @externallyDefinedApi sl@0: */ sl@0: sl@0: /** @def S_IRWXG sl@0: sl@0: RWX mask for group sl@0: sl@0: @publishedAll sl@0: @externallyDefinedApi sl@0: */ sl@0: sl@0: /** @def S_IRGRP sl@0: sl@0: R for group sl@0: sl@0: @publishedAll sl@0: @externallyDefinedApi sl@0: */ sl@0: sl@0: sl@0: /** @def S_IWGRP sl@0: sl@0: W for group sl@0: sl@0: @publishedAll sl@0: @externallyDefinedApi sl@0: */ sl@0: sl@0: sl@0: /** @def S_IXGRP sl@0: sl@0: X for group sl@0: sl@0: @publishedAll sl@0: @externallyDefinedApi sl@0: */ sl@0: sl@0: /** @def S_IRWXO sl@0: sl@0: RWX mask for other sl@0: sl@0: @publishedAll sl@0: @externallyDefinedApi sl@0: */ sl@0: sl@0: sl@0: /** @def S_IROTH sl@0: sl@0: R for other sl@0: sl@0: @publishedAll sl@0: @externallyDefinedApi sl@0: */ sl@0: sl@0: sl@0: /** @def S_IWOTH sl@0: sl@0: W for other sl@0: sl@0: @publishedAll sl@0: @externallyDefinedApi sl@0: */ sl@0: sl@0: sl@0: /** @def S_IXOTH sl@0: sl@0: X for other sl@0: sl@0: @publishedAll sl@0: @externallyDefinedApi sl@0: */ sl@0: sl@0: /** @def S_ISVTX sl@0: sl@0: save swapped text even after use sl@0: sl@0: @publishedAll sl@0: @externallyDefinedApi sl@0: */ sl@0: sl@0: sl@0: sl@0: