* Generated by setuputil.sno setup.makeinclude() 04/14/2026 09:16:45
	STAT_DL = "stat"
	LOAD("STAT_(STRING,ST)STRING", STAT_DL)
	LOAD("LSTAT_(STRING,ST)STRING", STAT_DL)
	LOAD("FSTAT_(INTEGER,ST)STRING", STAT_DL)
**** funcs.sno:
* $Id: funcs.sno,v 1.12 2020-10-18 06:16:36 phil Exp $
**=pea
**=sect NAME
**snobol4stat \- file status interface for SNOBOL4
**=sect SYNOPSYS
**B<-INCLUDE 'stat.sno'>
**=sect DESCRIPTION
**B<STAT(>I<path>B<)> returns file status for I<path>, following symbolic links.
**B<LSTAT(>I<path>B<)> returns file status for I<path>, returning information on symbolic links.
**B<FSTAT(>I<fd>B<)> returns file status for the open file descriptor I<fd>.
**All three return a B<DATA()> object with the following members:
**=indent 15
**=item B<ST_DEV>
**The device number containing the file.
**=item B<ST_INO>
**The file number within the device.
**=item B<ST_TYPE_STR>
**Is a B<STRING> identifiying the file type:
**B<'-'> for a regular file,
**B<'b'> for a block special file (device),
**B<'c'> for a character special file (device),
**B<'d'> for a directory,
**B<'l'> for a symbolic link,
**B<'p'> for a named pipe (FIFO),
**B<'s'> for a local (Unix) domain socket,
**B<'w'> for a whiteout,
**B<'?'> for none of the above.
**I<(new in CSNOBOL4 2.1)>
**=item B<ST_TYPE>
**Is an B<INTEGER> identifiying the file type
**(ordinal value of ST_TYPE_STR result, for backwards compatibility).
**=item B<ST_MODE>
**File "mode" (protection and type) bits.
**=item B<ST_NLINK>
**The number of (hard) links to the file.
**=item B<ST_UID>
**The owner of the file.
**=item B<ST_GID>
**The group of the file.
**=item B<ST_RDEV>
**Device id for special file.
**=item B<ST_SIZE>
**Size in bytes.
**=item B<ST_BLOCKS>
**Size in blocks.
**=item B<ST_BLKSIZE>
**Preferred block size for file I/O.
**=item B<ST_ATIME>
**Access time in seconds since January 1st, 1970.
**=item B<ST_ATIMENSEC>
**fractional access time in nanoseconds.
**=item B<ST_MTIME>
**Data modification time in seconds since January 1st, 1970.
**=item B<ST_MTIMENSEC>
**Fractional modification time in nanoseconds.
**=item B<ST_CTIME>
**Metadata change time in seconds since January 1st, 1970.
**=item B<ST_CTIMENSEC>
**Fractional change time in nanoseconds.
**
**Values will be the empty string if the
**data is not available.
**=sect SEE ALSO
**B<snobol4>(1), B<stat>(2), B<lstat>(2), B<fstat>(2)
**=sect AUTHOR
**Philip L. Budne
**=cut
	DATA("ST(ST_DEV,ST_INO,ST_TYPE,ST_MODE,ST_NLINK,"
+		"ST_UID,ST_GID,ST_RDEV,ST_SIZE,ST_BLKSIZE,ST_BLOCKS,"
+		"ST_ATIME,ST_ATIMENSEC,"
+		"ST_MTIME,ST_MTIMENSEC,"
+		"ST_CTIME,ST_CTIMENSEC,"
+		"ST_BTIME,ST_BTIMENSEC)")

	DEFINE("STAT(PATH)")				:(STAT.END)
STAT	STAT = ST()
	STAT_(PATH,STAT)				:F(FRETURN)S(RETURN)
STAT.END

	DEFINE("LSTAT(PATH)")				:(LSTAT.END)
LSTAT	LSTAT = ST()
	LSTAT_(PATH,LSTAT)				:F(FRETURN)S(RETURN)
LSTAT.END

	DEFINE("FSTAT(FD)")				:(FSTAT.END)
FSTAT	FSTAT = ST()
	FSTAT_(FD,FSTAT)				:F(FRETURN)S(RETURN)
FSTAT.END

	DEFINE("ST_TYPE_STR(ST)")			:(ST_TYPE_STR.END)
ST_TYPE_STR ST_TYPE_STR = CHAR(ST_TYPE(ST))		:F(FRETURN)S(RETURN)
ST_TYPE_STR.END
******** end funcs.sno
**************** end stat.sno
