.TH READDIR 3am "Jan 15 2013" "Free Software Foundation" "GNU Awk Extension Modules"
.SH NAME
readdir \- directory input parser for gawk
.SH SYNOPSIS
.ft CW
@load "readdir"
.ft R
.SH DESCRIPTION
The
.I readdir
extension
adds an input parser for directories.
.PP
When this extension is in use, instead of skipping directories named
on the command line (or with
.BR getline ),
they are read, with each entry returned as a record.
.PP
The record consists of three fields. The first two are the inode number and the
filename, separated by a forward slash character.
On systems where the directory entry contains the file type, the record
has a third field which is a single letter indicating the type of the
file:
.B f
for file,
.B d
for directory,
.B b
for a block device,
.B c
for a character device,
.B p
for a FIFO,
.B l
for a symbolic link,
.B s
for a socket, and
.B u
(unknown) for anything else.
.PP
On systems without the file type information, the third field is always
.BR u .
.SH NOTES
On GNU/Linux systems, there are filesystems that don't support the
.B d_type
entry (see
.IR readdir (3)),
and so the file type is always
.BR u .
You can use the
.I filefuncs
extension to call
.I stat()
in order to get correct type information.
... .SH BUGS
.SH EXAMPLE
.ft CW
.nf
@load "readdir"
\&...
BEGIN { FS = "/" }
{ print "file name is", $2 }
.fi
.ft R
.SH "SEE ALSO"
.IR "GAWK: Effective AWK Programming" ,
.IR filefuncs (3am),
.IR fnmatch (3am),
.IR fork (3am),
.IR inplace (3am),
.IR ordchr (3am),
.IR readfile (3am),
.IR revoutput (3am),
.IR rwarray (3am),
.IR time (3am).
.PP
.IR opendir (3),
.IR readdir (3),
.IR stat (2).
.SH AUTHOR
Arnold Robbins,
.BR arnold@skeeve.com .
.SH COPYING PERMISSIONS
Copyright \(co 2012, 2013,
Free Software Foundation, Inc.
.PP
Permission is granted to make and distribute verbatim copies of
this manual page provided the copyright notice and this permission
notice are preserved on all copies.
.ig
Permission is granted to process this file through troff and print the
results, provided the printed document carries copying permission
notice identical to this one except for the removal of this paragraph
(this paragraph not being relevant to the printed manual page).
..
.PP
Permission is granted to copy and distribute modified versions of this
manual page under the conditions for verbatim copying, provided that
the entire resulting derived work is distributed under the terms of a
permission notice identical to this one.
.PP
Permission is granted to copy and distribute translations of this
manual page into another language, under the above conditions for
modified versions, except that this permission notice may be stated in
a translation approved by the Foundation.
