F90_UNIX_FILE
Index
- NAME
-
- USAGE
-
- SYNOPSIS
-
- PARAMETER DESCRIPTION
-
- DERIVED-TYPE DESCRIPTION
-
- PROCEDURE DESCRIPTION
-
- SEE ALSO
-
- BUGS
-
NAME
f90_unix_file - Module of Unix file operations
USAGE
USE F90_UNIX_FILE
This module contains part of a Fortran API to functions detailed in ISO/IEC
9945-1:1990 Portable Operating System Interface (POSIX) - Part 1: System
Application Program Interface (API) [C Language].
The functions in this module are from Section 5.6 File Characteristics.
Error handling is described in F90_UNIX_ERRNO.
Note that for procedures with an optional ERRNO argument, if an error occurs
and ERRNO is not present, the program will be terminated.
SYNOPSIS
- Parameters
-
F_OK,
MODE_KIND (from F90_UNIX_DIR),
R_OK,
S_IRGRP,
S_IROTH,
S_IRUSR,
S_IRWXG,
S_IRWXO,
S_IRWXU,
S_ISGID,
S_ISUID,
S_IWGRP,
S_IWOTH,
S_IWUSR,
S_IXGRP,
S_IXOTH,
S_IXUSR,
TIME_KIND (from F90_UNIX_ENV),
W_OK,
X_OK.
- Derived Types
-
STAT_T, UTIMBUF.
- Procedures
-
ACCESS,
CHMOD,
CHOWN,
FSTAT,
STAT,
S_ISBLK,
S_ISCHR,
S_ISDIR,
S_ISFIFO,
S_ISREG,
UTIME.
PARAMETER DESCRIPTION
INTEGER,PARAMETER :: F_OK
-
Flag for requesting file existence check (see ACCESS).
USE F90_UNIX_DIR,ONLY:MODE_KIND
-
See F90_UNIX_DIR for a description of this parameter.
INTEGER,PARAMETER :: R_OK
-
Flag for requesting file readability check (see ACCESS).
INTEGER(MODE_KIND),PARAMETER :: S_IRGRP
-
File mode bit indicating group read permission (see STAT_T).
INTEGER(MODE_KIND),PARAMETER :: S_IROTH
-
File mode bit indicating other read permission (see STAT_T).
INTEGER(MODE_KIND),PARAMETER :: S_IRUSR
-
File mode bit indicating user read permission (see STAT_T).
INTEGER(MODE_KIND),PARAMETER :: S_IRWXG
-
Mask to select the group accessibility bits from a file mode (see STAT_T).
INTEGER(MODE_KIND),PARAMETER :: S_IRWXO
-
Mask to select the other accessibility bits from a file mode (see STAT_T).
INTEGER(MODE_KIND),PARAMETER :: S_IRWXU
-
Mask to select the user accessibility bits from a file mode (see STAT_T).
INTEGER(MODE_KIND),PARAMETER :: S_ISGID
-
File mode bit indicating that the file is set-group-ID (see STAT_T).
INTEGER(MODE_KIND),PARAMETER :: S_ISUID
-
File mode bit indicating that the file is set-user-ID (see STAT_T).
INTEGER(MODE_KIND),PARAMETER :: S_IWGRP
-
File mode bit indicating group write permission (see STAT_T).
INTEGER(MODE_KIND),PARAMETER :: S_IWOTH
-
File mode bit indicating other write permission (see STAT_T).
INTEGER,PARAMETER :: S_IWUSR
-
File mode bit indicating user write permission (see STAT_T).
INTEGER(MODE_KIND),PARAMETER :: S_IXGRP
-
File mode bit indicating group execute permission (see STAT_T).
INTEGER(MODE_KIND),PARAMETER :: S_IXOTH
-
File mode bit indicating other execute permission (see STAT_T).
INTEGER,PARAMETER :: S_IXUSR
-
File mode bit indicating user execute permission (see STAT_T).
USE F90_UNIX_ENV,ONLY :: TIME_KIND
-
See F90_UNIX_ENV for a description of this parameter.
INTEGER,PARAMETER :: W_OK
-
Flag for requesting file writability check (see ACCESS).
INTEGER,PARAMETER :: X_OK
-
Flag for requesting file executability check (see ACCESS).
DERIVED-TYPE DESCRIPTION
TYPE STAT_T
INTEGER(MODE_KIND) ST_MODE
INTEGER(...) ST_INO
INTEGER(...) ST_DEV
INTEGER(...) ST_NLINK
INTEGER(...) ST_UID
INTEGER(...) ST_GID
INTEGER(...) ST_SIZE
INTEGER(TIME_KIND) ST_ATIME, ST_MTIME, ST_CTIME
END TYPE
-
Derived type holding file characteristics.
- ST_MODE
-
File mode (read/write/execute permission for user/group/other,
plus set-group-ID and set-user-ID bits).
- ST_INO
-
File serial number.
- ST_DEV
-
ID for the device on which the file resides.
- ST_NLINK
-
The number of links (see F90_UNIX_DIR, LINK operation) to the file.
- ST_UID
-
User number of the file's owner.
- ST_GID
-
Group number of the file.
- ST_SIZE
-
File size in bytes (regular files only).
- ST_ATIME
-
Time of last access.
- ST_MTIME
-
Time of last modification.
- ST_CTIME
-
Time of last file status change.
TYPE UTIMBUF
INTEGER(TIME_KIND) ACTIME, MODTIME
END TYPE
-
Data type holding time values for communication to UTIME.
ACTIME is the new value for ST_ATIME, MODTIME is the new value for ST_MTIME.
PROCEDURE DESCRIPTION
PURE SUBROUTINE ACCESS(PATH,AMODE,ERRNO)
CHARACTER*(*),INTENT(IN) :: PATH
INTEGER,INTENT(IN) :: AMODE
INTEGER,INTENT(OUT) :: ERRNO
-
Checks file accessibility according to the value of AMODE; this should be F_OK
or a combination of R_OK, W_OK and X_OK. In the latter case the values may be
combined by addition or the IOR intrinsic.
The result of the accessibility check is returned in ERRNO, which receives zero
for success (i.e. the file exists for F_OK, or all the accesses requested by
the R_OK et al combination are allowed) or an error code indicating the reason
for access rejection.
Possible rejection codes include EACCES, ENAMETOOLONG, ENOENT, ENOTDIR, EROFS
(see F90_UNIX_ERRNO).
If the value of AMODE is invalid, error EINVAL is returned.
Note that most ACCESS enquires are equivalent to an INQUIRE statement:
in particular,
-
CALL ACCESS(PATH,F_OK,ERRNO) returns success (ERRNO==0) if and only if
INQUIRE(FILE=PATH,EXIST=LVAR) would set LVAR to .TRUE..
CALL ACCESS(PATH,R_OK,ERRNO) returns success (ERRNO==0) if and only if
INQUIRE(FILE=PATH,READ=CHVAR) would set CHVAR to "YES".
CALL ACCESS(PATH,W_OK,ERRNO) returns success (ERRNO==0) if and only if
INQUIRE(FILE=PATH,WRITE=CHVAR) would set CHVAR to "YES".
CALL ACCESS(PATH,IOR(W_OK,R_OK),ERRNO) returns success (ERRNO==0) if and
only if INQUIRE(FILE=PATH,READWRITE=CHVAR) would set CHVAR to "YES".
The only differences being that ACCESS returns a reason for rejection, and
can test file executability.
SUBROUTINE CHMOD(PATH,MODE,ERRNO)
CHARACTER*(*),INTENT(IN) :: PATH
INTEGER(MODE_KIND),INTENT(IN) :: MODE
INTEGER,OPTIONAL,INTENT(OUT) :: ERRNO
-
Sets the file mode (ST_MODE) to MODE.
Possible errors include EACCES, ENAMETOOLONG, ENOTDIR, EPERM, EROFS (see
F90_UNIX_ERRNO).
SUBROUTINE CHOWN(PATH,OWNER,GROUP,ERRNO)
CHARACTER*(*),INTENT(IN) :: PATH
INTEGER,INTENT(IN) :: OWNER, GROUP
INTEGER,OPTIONAL,INTENT(OUT) :: ERRNO
-
Changes the owner (ST_UID) of file PATH to OWNER, and the group number (ST_GID)
of the file to GROUP.
Possible errors include EACCES, EINVAL, ENAMETOOLONG, ENOTDIR, ENOENT, EPERM,
EROFS (see F90_UNIX_ERRNO).
SUBROUTINE FSTAT(LUNIT,BUF,ERRNO)
INTEGER,INTENT(IN) :: LUNIT
TYPE(STAT_T),INTENT(OUT) :: BUF
INTEGER,OPTIONAL,INTENT(OUT) :: ERRNO
-
BUF receives the characteristics of the file connected to logical unit LUNIT.
If LUNIT is not a valid logical unit number or is not connected to a file,
error EBADF is raised (see F90_UNIX_ERRNO).
SUBROUTINE STAT(PATH,BUF,ERRNO)
CHARACTER*(*),INTENT(IN) :: PATH
TYPE(STAT_T),INTENT(OUT) :: BUF
INTEGER,OPTIONAL,INTENT(OUT) :: ERRNO
-
BUF receives the characteristics of the file PATH.
Possible errors include EACCES, ENAMETOOLONG, ENOENT, ENOTDIR (see
F90_UNIX_ERRNO).
SEE ALSO
f90_unix_dir(3),
f90_unix_errno(3),
f95(1),
nag_modules(3).
BUGS
Please report any bugs found to "support@nag.co.uk", along with any
suggestions for improvements.
© The Numerical Algorithms Group Ltd, Oxford UK. 2001