Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

ls(1)

filsys(5)

STAT(2)  —  UNIX Programmer’s Manual

NAME

stat, fstat − get file status

SYNOPSIS

#include <sys/types.h>
#include <sys/stat.h>

stat(name, buf)
char *name;
struct stat *buf;

fstat(fildes, buf)
struct stat *buf;

DESCRIPTION

Stat obtains detailed information about a named file.  Fstat obtains the same information about an open file known by the file descriptor from a successful open, creat, dup or pipe(2) call.

Name points to a null-terminated string naming a file; buf is the address of a buffer into which information is placed concerning the file.  It is unnecessary to have any permissions at all with respect to the file, but all directories leading to the file must be searchable.  The layout of the structure pointed to by buf as defined in <stat.h> is given below.  St_mode is encoded according to the ‘#define’ statements. 

structstat
{
dev_tst_dev;
ino_tst_ino;
unsigned short st_mode;
short  st_nlink;
short  st_uid;
short  st_gid;
dev_tst_rdev;
off_tst_size;
time_tst_atime;
time_tst_mtime;
time_tst_ctime;
};
 #defineS_IFMT0170000/* type of file */
#defineS_IFDIR0040000/* directory */
#defineS_IFCHR0020000/* character special */
#defineS_IFBLK0060000/* block special */
#defineS_IFREG0100000/* regular */
#defineS_IFMPC0030000/* multiplexed char special */
#defineS_IFMPB0070000/* multiplexed block special */
#defineS_ISUID0004000/* set user id on execution */
#defineS_ISGID0002000/* set group id on execution */
#defineS_ISVTX0001000/* save swapped text even after use */
#defineS_IREAD0000400/* read permission, owner */
#defineS_IWRITE0000200/* write permission, owner */
#defineS_IEXEC0000100/* execute/search permission, owner */

The mode bits 0000070 and 0000007 encode group and others permissions (see chmod(2)). The defined types, ino_t, off_t, time_t, name various width integer values; dev_t encodes major and minor device numbers; their exact definitions are in the include file <sys/types.h> (see types(5).

When fildes is associated with a pipe, fstat reports an ordinary file with an i-node number, restricted permissions, and a not necessarily meaningful length. 

st_atime is the file was last read.  For reasons of efficiency, it is not set when a directory is searched, although this would be more logical.  st_mtime is the time the file was last written or created.  It is not set by changes of owner, group, link count, or mode.  st_ctime is set both both by writing and changing the i-node. 

SEE ALSO

ls(1), filsys(5)

DIAGNOSTICS

Zero is returned if a status is available; −1 if the file cannot be found. 

ASSEMBLER

(stat = 18.) 
sys stat; name; buf

(fstat = 28.) 
(file descriptor in r0)
sys fstat; buf

7th Edition

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026