|
Packit Service |
f629e6 |
.\" $NetBSD: fts.3,v 1.30 2011/03/30 16:29:26 jruoho Exp $
|
|
Packit Service |
f629e6 |
.\"
|
|
Packit Service |
f629e6 |
.\" Copyright (c) 1989, 1991, 1993, 1994
|
|
Packit Service |
f629e6 |
.\" The Regents of the University of California. All rights reserved.
|
|
Packit Service |
f629e6 |
.\"
|
|
Packit Service |
f629e6 |
.\" Redistribution and use in source and binary forms, with or without
|
|
Packit Service |
f629e6 |
.\" modification, are permitted provided that the following conditions
|
|
Packit Service |
f629e6 |
.\" are met:
|
|
Packit Service |
f629e6 |
.\" 1. Redistributions of source code must retain the above copyright
|
|
Packit Service |
f629e6 |
.\" notice, this list of conditions and the following disclaimer.
|
|
Packit Service |
f629e6 |
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
Packit Service |
f629e6 |
.\" notice, this list of conditions and the following disclaimer in the
|
|
Packit Service |
f629e6 |
.\" documentation and/or other materials provided with the distribution.
|
|
Packit Service |
f629e6 |
.\" 3. Neither the name of the University nor the names of its contributors
|
|
Packit Service |
f629e6 |
.\" may be used to endorse or promote products derived from this software
|
|
Packit Service |
f629e6 |
.\" without specific prior written permission.
|
|
Packit Service |
f629e6 |
.\"
|
|
Packit Service |
f629e6 |
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
Packit Service |
f629e6 |
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
Packit Service |
f629e6 |
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
Packit Service |
f629e6 |
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
Packit Service |
f629e6 |
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
Packit Service |
f629e6 |
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
Packit Service |
f629e6 |
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
Packit Service |
f629e6 |
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
Packit Service |
f629e6 |
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
Packit Service |
f629e6 |
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
Packit Service |
f629e6 |
.\" SUCH DAMAGE.
|
|
Packit Service |
f629e6 |
.\"
|
|
Packit Service |
f629e6 |
.\" @(#)fts.3 8.5 (Berkeley) 4/16/94
|
|
Packit Service |
f629e6 |
.\"
|
|
Packit Service |
f629e6 |
.Dd March 30, 2011
|
|
Packit Service |
f629e6 |
.Dt FTS 3
|
|
Packit Service |
f629e6 |
.Os
|
|
Packit Service |
f629e6 |
.Sh NAME
|
|
Packit Service |
f629e6 |
.Nm fts ,
|
|
Packit Service |
f629e6 |
.Nm fts_open ,
|
|
Packit Service |
f629e6 |
.Nm fts_read ,
|
|
Packit Service |
f629e6 |
.Nm fts_children ,
|
|
Packit Service |
f629e6 |
.Nm fts_set ,
|
|
Packit Service |
f629e6 |
.Nm fts_close
|
|
Packit Service |
f629e6 |
.Nd traverse a file hierarchy
|
|
Packit Service |
f629e6 |
.Sh LIBRARY
|
|
Packit Service |
f629e6 |
.Lb libc
|
|
Packit Service |
f629e6 |
.Sh SYNOPSIS
|
|
Packit Service |
f629e6 |
.In sys/types.h
|
|
Packit Service |
f629e6 |
.In sys/stat.h
|
|
Packit Service |
f629e6 |
.In fts.h
|
|
Packit Service |
f629e6 |
.Ft FTS *
|
|
Packit Service |
f629e6 |
.Fo fts_open
|
|
Packit Service |
f629e6 |
.Fa "char * const *path_argv"
|
|
Packit Service |
f629e6 |
.Fa "int options"
|
|
Packit Service |
f629e6 |
.Fa "int (*compar)(const FTSENT **, const FTSENT **)"
|
|
Packit Service |
f629e6 |
.Fc
|
|
Packit Service |
f629e6 |
.Ft FTSENT *
|
|
Packit Service |
f629e6 |
.Fn fts_read "FTS *ftsp"
|
|
Packit Service |
f629e6 |
.Ft FTSENT *
|
|
Packit Service |
f629e6 |
.Fn fts_children "FTS *ftsp" "int options"
|
|
Packit Service |
f629e6 |
.Ft int
|
|
Packit Service |
f629e6 |
.Fn fts_set "FTS *ftsp" "FTSENT *f" "int options"
|
|
Packit Service |
f629e6 |
.Ft int
|
|
Packit Service |
f629e6 |
.Fn fts_close "FTS *ftsp"
|
|
Packit Service |
f629e6 |
.Sh DESCRIPTION
|
|
Packit Service |
f629e6 |
The
|
|
Packit Service |
f629e6 |
.Nm
|
|
Packit Service |
f629e6 |
functions are provided for traversing
|
|
Packit Service |
f629e6 |
.Ux
|
|
Packit Service |
f629e6 |
file hierarchies.
|
|
Packit Service |
f629e6 |
A simple overview is that the
|
|
Packit Service |
f629e6 |
.Fn fts_open
|
|
Packit Service |
f629e6 |
function returns a
|
|
Packit Service |
f629e6 |
.Dq handle
|
|
Packit Service |
f629e6 |
on a file hierarchy, which is then supplied to
|
|
Packit Service |
f629e6 |
the other
|
|
Packit Service |
f629e6 |
.Nm
|
|
Packit Service |
f629e6 |
functions.
|
|
Packit Service |
f629e6 |
The function
|
|
Packit Service |
f629e6 |
.Fn fts_read
|
|
Packit Service |
f629e6 |
returns a pointer to a structure describing one of the files in the file
|
|
Packit Service |
f629e6 |
hierarchy.
|
|
Packit Service |
f629e6 |
The function
|
|
Packit Service |
f629e6 |
.Fn fts_children
|
|
Packit Service |
f629e6 |
returns a pointer to a linked list of structures, each of which describes
|
|
Packit Service |
f629e6 |
one of the files contained in a directory in the hierarchy.
|
|
Packit Service |
f629e6 |
In general, directories are visited two distinguishable times; in pre-order
|
|
Packit Service |
f629e6 |
(before any of their descendants are visited) and in post-order (after all
|
|
Packit Service |
f629e6 |
of their descendants have been visited).
|
|
Packit Service |
f629e6 |
Files are visited once.
|
|
Packit Service |
f629e6 |
It is possible to walk the hierarchy
|
|
Packit Service |
f629e6 |
.Dq logically
|
|
Packit Service |
f629e6 |
(ignoring symbolic links)
|
|
Packit Service |
f629e6 |
or physically (visiting symbolic links), order the walk of the hierarchy or
|
|
Packit Service |
f629e6 |
prune and/or re-visit portions of the hierarchy.
|
|
Packit Service |
f629e6 |
.Pp
|
|
Packit Service |
f629e6 |
Two structures are defined (and typedef'd) in the include file
|
|
Packit Service |
f629e6 |
.In fts.h .
|
|
Packit Service |
f629e6 |
The first is
|
|
Packit Service |
f629e6 |
.Fa FTS ,
|
|
Packit Service |
f629e6 |
the structure that represents the file hierarchy itself.
|
|
Packit Service |
f629e6 |
The second is
|
|
Packit Service |
f629e6 |
.Fa FTSENT ,
|
|
Packit Service |
f629e6 |
the structure that represents a file in the file
|
|
Packit Service |
f629e6 |
hierarchy.
|
|
Packit Service |
f629e6 |
Normally, an
|
|
Packit Service |
f629e6 |
.Fa FTSENT
|
|
Packit Service |
f629e6 |
structure is returned for every file in the file
|
|
Packit Service |
f629e6 |
hierarchy.
|
|
Packit Service |
f629e6 |
In this manual page,
|
|
Packit Service |
f629e6 |
.Dq file
|
|
Packit Service |
f629e6 |
and
|
|
Packit Service |
f629e6 |
.Dq Fa FTSENT No structure
|
|
Packit Service |
f629e6 |
are generally
|
|
Packit Service |
f629e6 |
interchangeable.
|
|
Packit Service |
f629e6 |
The
|
|
Packit Service |
f629e6 |
.Fa FTSENT
|
|
Packit Service |
f629e6 |
structure contains at least the following fields, which are
|
|
Packit Service |
f629e6 |
described in greater detail below:
|
|
Packit Service |
f629e6 |
.Bd -literal -offset 2n
|
|
Packit Service |
f629e6 |
typedef struct _ftsent {
|
|
Packit Service |
f629e6 |
u_short fts_info; /* flags for FTSENT structure */
|
|
Packit Service |
f629e6 |
char *fts_accpath; /* access path */
|
|
Packit Service |
f629e6 |
char *fts_path; /* root path */
|
|
Packit Service |
f629e6 |
short fts_pathlen; /* strlen(fts_path) */
|
|
Packit Service |
f629e6 |
char *fts_name; /* file name */
|
|
Packit Service |
f629e6 |
short fts_namelen; /* strlen(fts_name) */
|
|
Packit Service |
f629e6 |
short fts_level; /* depth (\-1 to N) */
|
|
Packit Service |
f629e6 |
int fts_errno; /* file errno */
|
|
Packit Service |
f629e6 |
long fts_number; /* local numeric value */
|
|
Packit Service |
f629e6 |
void *fts_pointer; /* local address value */
|
|
Packit Service |
f629e6 |
struct ftsent *fts_parent; /* parent directory */
|
|
Packit Service |
f629e6 |
struct ftsent *fts_link; /* next file structure */
|
|
Packit Service |
f629e6 |
struct ftsent *fts_cycle; /* cycle structure */
|
|
Packit Service |
f629e6 |
struct stat *fts_statp; /* stat(2) information */
|
|
Packit Service |
f629e6 |
} FTSENT;
|
|
Packit Service |
f629e6 |
.Ed
|
|
Packit Service |
f629e6 |
.Pp
|
|
Packit Service |
f629e6 |
These fields are defined as follows:
|
|
Packit Service |
f629e6 |
.Bl -tag -width "fts_namelen"
|
|
Packit Service |
f629e6 |
.It Fa fts_info
|
|
Packit Service |
f629e6 |
One of the following flags describing the returned
|
|
Packit Service |
f629e6 |
.Fa FTSENT
|
|
Packit Service |
f629e6 |
structure and
|
|
Packit Service |
f629e6 |
the file it represents.
|
|
Packit Service |
f629e6 |
With the exception of directories without errors
|
|
Packit Service |
f629e6 |
.Pq Dv FTS_D ,
|
|
Packit Service |
f629e6 |
all of these
|
|
Packit Service |
f629e6 |
entries are terminal, that is, they will not be revisited, nor will any
|
|
Packit Service |
f629e6 |
of their descendants be visited.
|
|
Packit Service |
f629e6 |
.Bl -tag -width FTS_DEFAULT
|
|
Packit Service |
f629e6 |
.It Dv FTS_D
|
|
Packit Service |
f629e6 |
A directory being visited in pre-order.
|
|
Packit Service |
f629e6 |
.It Dv FTS_DC
|
|
Packit Service |
f629e6 |
A directory that causes a cycle in the tree.
|
|
Packit Service |
f629e6 |
(The
|
|
Packit Service |
f629e6 |
.Fa fts_cycle
|
|
Packit Service |
f629e6 |
field of the
|
|
Packit Service |
f629e6 |
.Fa FTSENT
|
|
Packit Service |
f629e6 |
structure will be filled in as well).
|
|
Packit Service |
f629e6 |
.It Dv FTS_DEFAULT
|
|
Packit Service |
f629e6 |
Any
|
|
Packit Service |
f629e6 |
.Fa FTSENT
|
|
Packit Service |
f629e6 |
structure that represents a file type not explicitly described
|
|
Packit Service |
f629e6 |
by one of the other
|
|
Packit Service |
f629e6 |
.Fa fts_info
|
|
Packit Service |
f629e6 |
values.
|
|
Packit Service |
f629e6 |
.It Dv FTS_DNR
|
|
Packit Service |
f629e6 |
A directory which cannot be read.
|
|
Packit Service |
f629e6 |
This is an error return, and the
|
|
Packit Service |
f629e6 |
.Fa fts_errno
|
|
Packit Service |
f629e6 |
field will be set to indicate what caused the error.
|
|
Packit Service |
f629e6 |
.It Dv FTS_DOT
|
|
Packit Service |
f629e6 |
A file named
|
|
Packit Service |
f629e6 |
.Ql \&.
|
|
Packit Service |
f629e6 |
or
|
|
Packit Service |
f629e6 |
.Ql ..
|
|
Packit Service |
f629e6 |
which was not specified as a file name to
|
|
Packit Service |
f629e6 |
.Fn fts_open
|
|
Packit Service |
f629e6 |
(see
|
|
Packit Service |
f629e6 |
.Dv FTS_SEEDOT ) .
|
|
Packit Service |
f629e6 |
.It Dv FTS_DP
|
|
Packit Service |
f629e6 |
A directory being visited in post-order.
|
|
Packit Service |
f629e6 |
The contents of the
|
|
Packit Service |
f629e6 |
.Fa FTSENT
|
|
Packit Service |
f629e6 |
structure will be unchanged from when
|
|
Packit Service |
f629e6 |
it was returned in pre-order, i.e., with the
|
|
Packit Service |
f629e6 |
.Fa fts_info
|
|
Packit Service |
f629e6 |
field set to
|
|
Packit Service |
f629e6 |
.Dv FTS_D .
|
|
Packit Service |
f629e6 |
.It Dv FTS_ERR
|
|
Packit Service |
f629e6 |
This is an error return, and the
|
|
Packit Service |
f629e6 |
.Fa fts_errno
|
|
Packit Service |
f629e6 |
field will be set to indicate what caused the error.
|
|
Packit Service |
f629e6 |
.It Dv FTS_F
|
|
Packit Service |
f629e6 |
A regular file.
|
|
Packit Service |
f629e6 |
.It Dv FTS_NS
|
|
Packit Service |
f629e6 |
A file for which no
|
|
Packit Service |
f629e6 |
.Xr stat 2
|
|
Packit Service |
f629e6 |
information was available.
|
|
Packit Service |
f629e6 |
The contents of the
|
|
Packit Service |
f629e6 |
.Fa fts_statp
|
|
Packit Service |
f629e6 |
field are undefined.
|
|
Packit Service |
f629e6 |
This is an error return, and the
|
|
Packit Service |
f629e6 |
.Fa fts_errno
|
|
Packit Service |
f629e6 |
field will be set to indicate what caused the error.
|
|
Packit Service |
f629e6 |
.It Dv FTS_NSOK
|
|
Packit Service |
f629e6 |
A file for which no
|
|
Packit Service |
f629e6 |
.Xr stat 2
|
|
Packit Service |
f629e6 |
information was requested.
|
|
Packit Service |
f629e6 |
The contents of the
|
|
Packit Service |
f629e6 |
.Fa fts_statp
|
|
Packit Service |
f629e6 |
field are undefined.
|
|
Packit Service |
f629e6 |
.It Dv FTS_SL
|
|
Packit Service |
f629e6 |
A symbolic link.
|
|
Packit Service |
f629e6 |
.It Dv FTS_SLNONE
|
|
Packit Service |
f629e6 |
A symbolic link with a non-existent target.
|
|
Packit Service |
f629e6 |
The contents of the
|
|
Packit Service |
f629e6 |
.Fa fts_statp
|
|
Packit Service |
f629e6 |
field reference the file characteristic information for the symbolic link
|
|
Packit Service |
f629e6 |
itself.
|
|
Packit Service |
f629e6 |
.It Dv FTS_W
|
|
Packit Service |
f629e6 |
A whiteout object.
|
|
Packit Service |
f629e6 |
.El
|
|
Packit Service |
f629e6 |
.It Fa fts_accpath
|
|
Packit Service |
f629e6 |
A path for accessing the file from the current directory.
|
|
Packit Service |
f629e6 |
.It Fa fts_path
|
|
Packit Service |
f629e6 |
The path for the file relative to the root of the traversal.
|
|
Packit Service |
f629e6 |
This path contains the path specified to
|
|
Packit Service |
f629e6 |
.Fn fts_open
|
|
Packit Service |
f629e6 |
as a prefix.
|
|
Packit Service |
f629e6 |
.It Fa fts_pathlen
|
|
Packit Service |
f629e6 |
The length of the string referenced by
|
|
Packit Service |
f629e6 |
.Fa fts_path .
|
|
Packit Service |
f629e6 |
.It Fa fts_name
|
|
Packit Service |
f629e6 |
The name of the file.
|
|
Packit Service |
f629e6 |
.It Fa fts_namelen
|
|
Packit Service |
f629e6 |
The length of the string referenced by
|
|
Packit Service |
f629e6 |
.Fa fts_name .
|
|
Packit Service |
f629e6 |
.It Fa fts_level
|
|
Packit Service |
f629e6 |
The depth of the traversal, numbered from \-1 to N, where this file
|
|
Packit Service |
f629e6 |
was found.
|
|
Packit Service |
f629e6 |
The
|
|
Packit Service |
f629e6 |
.Fa FTSENT
|
|
Packit Service |
f629e6 |
structure representing the parent of the starting point (or root)
|
|
Packit Service |
f629e6 |
of the traversal is numbered \-1, and the
|
|
Packit Service |
f629e6 |
.Fa FTSENT
|
|
Packit Service |
f629e6 |
structure for the root
|
|
Packit Service |
f629e6 |
itself is numbered 0.
|
|
Packit Service |
f629e6 |
.It Fa fts_errno
|
|
Packit Service |
f629e6 |
Upon return of a
|
|
Packit Service |
f629e6 |
.Fa FTSENT
|
|
Packit Service |
f629e6 |
structure from the
|
|
Packit Service |
f629e6 |
.Fn fts_children
|
|
Packit Service |
f629e6 |
or
|
|
Packit Service |
f629e6 |
.Fn fts_read
|
|
Packit Service |
f629e6 |
functions, with its
|
|
Packit Service |
f629e6 |
.Fa fts_info
|
|
Packit Service |
f629e6 |
field set to
|
|
Packit Service |
f629e6 |
.Dv FTS_DNR ,
|
|
Packit Service |
f629e6 |
.Dv FTS_ERR
|
|
Packit Service |
f629e6 |
or
|
|
Packit Service |
f629e6 |
.Dv FTS_NS ,
|
|
Packit Service |
f629e6 |
the
|
|
Packit Service |
f629e6 |
.Fa fts_errno
|
|
Packit Service |
f629e6 |
field contains the value of the external variable
|
|
Packit Service |
f629e6 |
.Va errno
|
|
Packit Service |
f629e6 |
specifying the cause of the error.
|
|
Packit Service |
f629e6 |
Otherwise, the contents of the
|
|
Packit Service |
f629e6 |
.Fa fts_errno
|
|
Packit Service |
f629e6 |
field are undefined.
|
|
Packit Service |
f629e6 |
.It Fa fts_number
|
|
Packit Service |
f629e6 |
This field is provided for the use of the application program and is
|
|
Packit Service |
f629e6 |
not modified by the
|
|
Packit Service |
f629e6 |
.Nm
|
|
Packit Service |
f629e6 |
functions.
|
|
Packit Service |
f629e6 |
It is initialized to 0.
|
|
Packit Service |
f629e6 |
.It Fa fts_pointer
|
|
Packit Service |
f629e6 |
This field is provided for the use of the application program and is
|
|
Packit Service |
f629e6 |
not modified by the
|
|
Packit Service |
f629e6 |
.Nm
|
|
Packit Service |
f629e6 |
functions.
|
|
Packit Service |
f629e6 |
It is initialized to
|
|
Packit Service |
f629e6 |
.Dv NULL .
|
|
Packit Service |
f629e6 |
.It Fa fts_parent
|
|
Packit Service |
f629e6 |
A pointer to the
|
|
Packit Service |
f629e6 |
.Fa FTSENT
|
|
Packit Service |
f629e6 |
structure referencing the file in the hierarchy
|
|
Packit Service |
f629e6 |
immediately above the current file, i.e., the directory of which this
|
|
Packit Service |
f629e6 |
file is a member.
|
|
Packit Service |
f629e6 |
A parent structure for the initial entry point is provided as well,
|
|
Packit Service |
f629e6 |
however, only the
|
|
Packit Service |
f629e6 |
.Fa fts_level ,
|
|
Packit Service |
f629e6 |
.Fa fts_number
|
|
Packit Service |
f629e6 |
and
|
|
Packit Service |
f629e6 |
.Fa fts_pointer
|
|
Packit Service |
f629e6 |
fields are guaranteed to be initialized.
|
|
Packit Service |
f629e6 |
.It Fa fts_link
|
|
Packit Service |
f629e6 |
Upon return from the
|
|
Packit Service |
f629e6 |
.Fn fts_children
|
|
Packit Service |
f629e6 |
function, the
|
|
Packit Service |
f629e6 |
.Fa fts_link
|
|
Packit Service |
f629e6 |
field points to the next structure in the
|
|
Packit Service |
f629e6 |
.Dv NULL Ns -terminated
|
|
Packit Service |
f629e6 |
linked list of directory members.
|
|
Packit Service |
f629e6 |
Otherwise, the contents of the
|
|
Packit Service |
f629e6 |
.Fa fts_link
|
|
Packit Service |
f629e6 |
field are undefined.
|
|
Packit Service |
f629e6 |
.It Fa fts_cycle
|
|
Packit Service |
f629e6 |
If a directory causes a cycle in the hierarchy (see
|
|
Packit Service |
f629e6 |
.Dv FTS_DC ) ,
|
|
Packit Service |
f629e6 |
either because
|
|
Packit Service |
f629e6 |
of a hard link between two directories, or a symbolic link pointing to a
|
|
Packit Service |
f629e6 |
directory, the
|
|
Packit Service |
f629e6 |
.Fa fts_cycle
|
|
Packit Service |
f629e6 |
field of the structure will point to the
|
|
Packit Service |
f629e6 |
.Fa FTSENT
|
|
Packit Service |
f629e6 |
structure in the hierarchy that references the same file as the current
|
|
Packit Service |
f629e6 |
.Fa FTSENT
|
|
Packit Service |
f629e6 |
structure.
|
|
Packit Service |
f629e6 |
Otherwise, the contents of the
|
|
Packit Service |
f629e6 |
.Fa fts_cycle
|
|
Packit Service |
f629e6 |
field are undefined.
|
|
Packit Service |
f629e6 |
.It Fa fts_statp
|
|
Packit Service |
f629e6 |
A pointer to
|
|
Packit Service |
f629e6 |
.Xr stat 2
|
|
Packit Service |
f629e6 |
information for the file.
|
|
Packit Service |
f629e6 |
.El
|
|
Packit Service |
f629e6 |
.Pp
|
|
Packit Service |
f629e6 |
A single buffer is used for all of the paths of all of the files in the
|
|
Packit Service |
f629e6 |
file hierarchy.
|
|
Packit Service |
f629e6 |
Therefore, the
|
|
Packit Service |
f629e6 |
.Fa fts_path
|
|
Packit Service |
f629e6 |
and
|
|
Packit Service |
f629e6 |
.Fa fts_accpath
|
|
Packit Service |
f629e6 |
fields are guaranteed to be
|
|
Packit Service |
f629e6 |
.Dv NULL Ns -terminated
|
|
Packit Service |
f629e6 |
.Em only
|
|
Packit Service |
f629e6 |
for the file most recently returned by
|
|
Packit Service |
f629e6 |
.Fn fts_read .
|
|
Packit Service |
f629e6 |
To use these fields to reference any files represented by other
|
|
Packit Service |
f629e6 |
.Fa FTSENT
|
|
Packit Service |
f629e6 |
structures will require that the path buffer be modified using the
|
|
Packit Service |
f629e6 |
information contained in that
|
|
Packit Service |
f629e6 |
.Fa FTSENT
|
|
Packit Service |
f629e6 |
structure's
|
|
Packit Service |
f629e6 |
.Fa fts_pathlen
|
|
Packit Service |
f629e6 |
field.
|
|
Packit Service |
f629e6 |
Any such modifications should be undone before further calls to
|
|
Packit Service |
f629e6 |
.Fn fts_read
|
|
Packit Service |
f629e6 |
are attempted.
|
|
Packit Service |
f629e6 |
The
|
|
Packit Service |
f629e6 |
.Fa fts_name
|
|
Packit Service |
f629e6 |
field is always
|
|
Packit Service |
f629e6 |
.Dv NULL Ns -terminated .
|
|
Packit Service |
f629e6 |
.Sh FTS_OPEN
|
|
Packit Service |
f629e6 |
The
|
|
Packit Service |
f629e6 |
.Fn fts_open
|
|
Packit Service |
f629e6 |
function takes a pointer to an array of character pointers naming one
|
|
Packit Service |
f629e6 |
or more paths which make up a logical file hierarchy to be traversed.
|
|
Packit Service |
f629e6 |
The array must be terminated by a
|
|
Packit Service |
f629e6 |
.Dv NULL
|
|
Packit Service |
f629e6 |
pointer.
|
|
Packit Service |
f629e6 |
.Pp
|
|
Packit Service |
f629e6 |
There are
|
|
Packit Service |
f629e6 |
a number of options, at least one of which (either
|
|
Packit Service |
f629e6 |
.Dv FTS_LOGICAL
|
|
Packit Service |
f629e6 |
or
|
|
Packit Service |
f629e6 |
.Dv FTS_PHYSICAL )
|
|
Packit Service |
f629e6 |
must be specified.
|
|
Packit Service |
f629e6 |
The options are selected by
|
|
Packit Service |
f629e6 |
.Em or Ns 'ing
|
|
Packit Service |
f629e6 |
the following values:
|
|
Packit Service |
f629e6 |
.Bl -tag -width "FTS_COMFOLLOW "
|
|
Packit Service |
f629e6 |
.It Dv FTS_COMFOLLOW
|
|
Packit Service |
f629e6 |
This option causes any symbolic link specified as a root path to be
|
|
Packit Service |
f629e6 |
followed immediately whether or not
|
|
Packit Service |
f629e6 |
.Dv FTS_LOGICAL
|
|
Packit Service |
f629e6 |
is also specified.
|
|
Packit Service |
f629e6 |
.It Dv FTS_LOGICAL
|
|
Packit Service |
f629e6 |
This option causes the
|
|
Packit Service |
f629e6 |
.Nm
|
|
Packit Service |
f629e6 |
routines to return
|
|
Packit Service |
f629e6 |
.Fa FTSENT
|
|
Packit Service |
f629e6 |
structures for the targets of symbolic links
|
|
Packit Service |
f629e6 |
instead of the symbolic links themselves.
|
|
Packit Service |
f629e6 |
If this option is set, the only symbolic links for which
|
|
Packit Service |
f629e6 |
.Fa FTSENT
|
|
Packit Service |
f629e6 |
structures
|
|
Packit Service |
f629e6 |
are returned to the application are those referencing non-existent files.
|
|
Packit Service |
f629e6 |
Either
|
|
Packit Service |
f629e6 |
.Dv FTS_LOGICAL
|
|
Packit Service |
f629e6 |
or
|
|
Packit Service |
f629e6 |
.Dv FTS_PHYSICAL
|
|
Packit Service |
f629e6 |
.Em must
|
|
Packit Service |
f629e6 |
be provided to the
|
|
Packit Service |
f629e6 |
.Fn fts_open
|
|
Packit Service |
f629e6 |
function.
|
|
Packit Service |
f629e6 |
.It Dv FTS_NOCHDIR
|
|
Packit Service |
f629e6 |
As a performance optimization, the
|
|
Packit Service |
f629e6 |
.Nm
|
|
Packit Service |
f629e6 |
functions change directories as they walk the file hierarchy.
|
|
Packit Service |
f629e6 |
This has the side-effect that an application cannot rely on being
|
|
Packit Service |
f629e6 |
in any particular directory during the traversal.
|
|
Packit Service |
f629e6 |
The
|
|
Packit Service |
f629e6 |
.Dv FTS_NOCHDIR
|
|
Packit Service |
f629e6 |
option turns off this optimization, and the
|
|
Packit Service |
f629e6 |
.Nm
|
|
Packit Service |
f629e6 |
functions will not change the current directory.
|
|
Packit Service |
f629e6 |
Note that applications should not themselves change their current directory
|
|
Packit Service |
f629e6 |
and try to access files unless
|
|
Packit Service |
f629e6 |
.Dv FTS_NOCHDIR
|
|
Packit Service |
f629e6 |
is specified and absolute
|
|
Packit Service |
f629e6 |
pathnames were provided as arguments to
|
|
Packit Service |
f629e6 |
.Fn fts_open .
|
|
Packit Service |
f629e6 |
.It Dv FTS_NOSTAT
|
|
Packit Service |
f629e6 |
By default, returned
|
|
Packit Service |
f629e6 |
.Fa FTSENT
|
|
Packit Service |
f629e6 |
structures reference file characteristic information (the
|
|
Packit Service |
f629e6 |
.Fa statp
|
|
Packit Service |
f629e6 |
field) for each file visited.
|
|
Packit Service |
f629e6 |
This option relaxes that requirement as a performance optimization,
|
|
Packit Service |
f629e6 |
allowing the
|
|
Packit Service |
f629e6 |
.Nm
|
|
Packit Service |
f629e6 |
functions to set the
|
|
Packit Service |
f629e6 |
.Fa fts_info
|
|
Packit Service |
f629e6 |
field to
|
|
Packit Service |
f629e6 |
.Dv FTS_NSOK
|
|
Packit Service |
f629e6 |
and leave the contents of the
|
|
Packit Service |
f629e6 |
.Fa statp
|
|
Packit Service |
f629e6 |
field undefined.
|
|
Packit Service |
f629e6 |
.It Dv FTS_PHYSICAL
|
|
Packit Service |
f629e6 |
This option causes the
|
|
Packit Service |
f629e6 |
.Nm
|
|
Packit Service |
f629e6 |
routines to return
|
|
Packit Service |
f629e6 |
.Fa FTSENT
|
|
Packit Service |
f629e6 |
structures for symbolic links themselves instead
|
|
Packit Service |
f629e6 |
of the target files they point to.
|
|
Packit Service |
f629e6 |
If this option is set,
|
|
Packit Service |
f629e6 |
.Fa FTSENT
|
|
Packit Service |
f629e6 |
structures for all symbolic links in the
|
|
Packit Service |
f629e6 |
hierarchy are returned to the application.
|
|
Packit Service |
f629e6 |
Either
|
|
Packit Service |
f629e6 |
.Dv FTS_LOGICAL
|
|
Packit Service |
f629e6 |
or
|
|
Packit Service |
f629e6 |
.Dv FTS_PHYSICAL
|
|
Packit Service |
f629e6 |
.Em must
|
|
Packit Service |
f629e6 |
be provided to the
|
|
Packit Service |
f629e6 |
.Fn fts_open
|
|
Packit Service |
f629e6 |
function.
|
|
Packit Service |
f629e6 |
.It Dv FTS_SEEDOT
|
|
Packit Service |
f629e6 |
By default, unless they are specified as path arguments to
|
|
Packit Service |
f629e6 |
.Fn fts_open ,
|
|
Packit Service |
f629e6 |
any files named
|
|
Packit Service |
f629e6 |
.Ql \&.
|
|
Packit Service |
f629e6 |
or
|
|
Packit Service |
f629e6 |
.Ql ..
|
|
Packit Service |
f629e6 |
encountered in the file hierarchy are ignored.
|
|
Packit Service |
f629e6 |
This option causes the
|
|
Packit Service |
f629e6 |
.Nm
|
|
Packit Service |
f629e6 |
routines to return
|
|
Packit Service |
f629e6 |
.Fa FTSENT
|
|
Packit Service |
f629e6 |
structures for them.
|
|
Packit Service |
f629e6 |
.It Dv FTS_WHITEOUT
|
|
Packit Service |
f629e6 |
Return whiteout entries, which are normally hidden.
|
|
Packit Service |
f629e6 |
.It Dv FTS_XDEV
|
|
Packit Service |
f629e6 |
This option prevents
|
|
Packit Service |
f629e6 |
.Nm
|
|
Packit Service |
f629e6 |
from descending into directories that have a different device number
|
|
Packit Service |
f629e6 |
than the file from which the descent began.
|
|
Packit Service |
f629e6 |
.El
|
|
Packit Service |
f629e6 |
.Pp
|
|
Packit Service |
f629e6 |
The argument
|
|
Packit Service |
f629e6 |
.Fn compar
|
|
Packit Service |
f629e6 |
specifies a user-defined function which may be used to order the traversal
|
|
Packit Service |
f629e6 |
of the hierarchy.
|
|
Packit Service |
f629e6 |
It
|
|
Packit Service |
f629e6 |
takes two pointers to pointers to
|
|
Packit Service |
f629e6 |
.Fa FTSENT
|
|
Packit Service |
f629e6 |
structures as arguments and
|
|
Packit Service |
f629e6 |
should return a negative value, zero, or a positive value to indicate
|
|
Packit Service |
f629e6 |
if the file referenced by its first argument comes before, in any order
|
|
Packit Service |
f629e6 |
with respect to, or after, the file referenced by its second argument.
|
|
Packit Service |
f629e6 |
The
|
|
Packit Service |
f629e6 |
.Fa fts_accpath ,
|
|
Packit Service |
f629e6 |
.Fa fts_path
|
|
Packit Service |
f629e6 |
and
|
|
Packit Service |
f629e6 |
.Fa fts_pathlen
|
|
Packit Service |
f629e6 |
fields of the
|
|
Packit Service |
f629e6 |
.Fa FTSENT
|
|
Packit Service |
f629e6 |
structures may
|
|
Packit Service |
f629e6 |
.Em never
|
|
Packit Service |
f629e6 |
be used in this comparison.
|
|
Packit Service |
f629e6 |
If the
|
|
Packit Service |
f629e6 |
.Fa fts_info
|
|
Packit Service |
f629e6 |
field is set to
|
|
Packit Service |
f629e6 |
.Dv FTS_NS
|
|
Packit Service |
f629e6 |
or
|
|
Packit Service |
f629e6 |
.Dv FTS_NSOK ,
|
|
Packit Service |
f629e6 |
the
|
|
Packit Service |
f629e6 |
.Fa fts_statp
|
|
Packit Service |
f629e6 |
field may not either.
|
|
Packit Service |
f629e6 |
If the
|
|
Packit Service |
f629e6 |
.Fn compar
|
|
Packit Service |
f629e6 |
argument is
|
|
Packit Service |
f629e6 |
.Dv NULL ,
|
|
Packit Service |
f629e6 |
the directory traversal order is in the order listed in
|
|
Packit Service |
f629e6 |
.Fa path_argv
|
|
Packit Service |
f629e6 |
for the root paths, and in the order listed in the directory for
|
|
Packit Service |
f629e6 |
everything else.
|
|
Packit Service |
f629e6 |
.Sh FTS_READ
|
|
Packit Service |
f629e6 |
The
|
|
Packit Service |
f629e6 |
.Fn fts_read
|
|
Packit Service |
f629e6 |
function returns a pointer to an
|
|
Packit Service |
f629e6 |
.Fa FTSENT
|
|
Packit Service |
f629e6 |
structure describing a file in
|
|
Packit Service |
f629e6 |
the hierarchy.
|
|
Packit Service |
f629e6 |
Directories (that are readable and do not cause cycles) are visited at
|
|
Packit Service |
f629e6 |
least twice, once in pre-order and once in post-order.
|
|
Packit Service |
f629e6 |
All other files are visited at least once.
|
|
Packit Service |
f629e6 |
(Hard links between directories that do not cause cycles or symbolic
|
|
Packit Service |
f629e6 |
links to symbolic links may cause files to be visited more than once,
|
|
Packit Service |
f629e6 |
or directories more than twice.)
|
|
Packit Service |
f629e6 |
.Pp
|
|
Packit Service |
f629e6 |
If all the members of the hierarchy have been returned,
|
|
Packit Service |
f629e6 |
.Fn fts_read
|
|
Packit Service |
f629e6 |
returns
|
|
Packit Service |
f629e6 |
.Dv NULL
|
|
Packit Service |
f629e6 |
and sets the external variable
|
|
Packit Service |
f629e6 |
.Va errno
|
|
Packit Service |
f629e6 |
to 0.
|
|
Packit Service |
f629e6 |
If an error unrelated to a file in the hierarchy occurs,
|
|
Packit Service |
f629e6 |
.Fn fts_read
|
|
Packit Service |
f629e6 |
returns
|
|
Packit Service |
f629e6 |
.Dv NULL
|
|
Packit Service |
f629e6 |
and sets
|
|
Packit Service |
f629e6 |
.Va errno
|
|
Packit Service |
f629e6 |
appropriately.
|
|
Packit Service |
f629e6 |
If an error related to a returned file occurs, a pointer to an
|
|
Packit Service |
f629e6 |
.Fa FTSENT
|
|
Packit Service |
f629e6 |
structure is returned, and
|
|
Packit Service |
f629e6 |
.Va errno
|
|
Packit Service |
f629e6 |
may or may not have been set (see
|
|
Packit Service |
f629e6 |
.Fa fts_info ) .
|
|
Packit Service |
f629e6 |
.Pp
|
|
Packit Service |
f629e6 |
The
|
|
Packit Service |
f629e6 |
.Fa FTSENT
|
|
Packit Service |
f629e6 |
structures returned by
|
|
Packit Service |
f629e6 |
.Fn fts_read
|
|
Packit Service |
f629e6 |
may be overwritten after a call to
|
|
Packit Service |
f629e6 |
.Fn fts_close
|
|
Packit Service |
f629e6 |
on the same file hierarchy stream, or, after a call to
|
|
Packit Service |
f629e6 |
.Fn fts_read
|
|
Packit Service |
f629e6 |
on the same file hierarchy stream unless they represent a file of type
|
|
Packit Service |
f629e6 |
directory, in which case they will not be overwritten until after a call to
|
|
Packit Service |
f629e6 |
.Fn fts_read
|
|
Packit Service |
f629e6 |
after the
|
|
Packit Service |
f629e6 |
.Fa FTSENT
|
|
Packit Service |
f629e6 |
structure has been returned by the function
|
|
Packit Service |
f629e6 |
.Fn fts_read
|
|
Packit Service |
f629e6 |
in post-order.
|
|
Packit Service |
f629e6 |
.Sh FTS_CHILDREN
|
|
Packit Service |
f629e6 |
The
|
|
Packit Service |
f629e6 |
.Fn fts_children
|
|
Packit Service |
f629e6 |
function returns a pointer to an
|
|
Packit Service |
f629e6 |
.Fa FTSENT
|
|
Packit Service |
f629e6 |
structure describing the first entry in a
|
|
Packit Service |
f629e6 |
.Dv NULL Ns -terminated
|
|
Packit Service |
f629e6 |
linked list of the files in the directory represented by the
|
|
Packit Service |
f629e6 |
.Fa FTSENT
|
|
Packit Service |
f629e6 |
structure most recently returned by
|
|
Packit Service |
f629e6 |
.Fn fts_read .
|
|
Packit Service |
f629e6 |
The list is linked through the
|
|
Packit Service |
f629e6 |
.Fa fts_link
|
|
Packit Service |
f629e6 |
field of the
|
|
Packit Service |
f629e6 |
.Fa FTSENT
|
|
Packit Service |
f629e6 |
structure, and is ordered by the user-specified comparison function, if any.
|
|
Packit Service |
f629e6 |
Repeated calls to
|
|
Packit Service |
f629e6 |
.Fn fts_children
|
|
Packit Service |
f629e6 |
will recreate this linked list.
|
|
Packit Service |
f629e6 |
.Pp
|
|
Packit Service |
f629e6 |
As a special case, if
|
|
Packit Service |
f629e6 |
.Fn fts_read
|
|
Packit Service |
f629e6 |
has not yet been called for a hierarchy,
|
|
Packit Service |
f629e6 |
.Fn fts_children
|
|
Packit Service |
f629e6 |
will return a pointer to the files in the logical directory specified to
|
|
Packit Service |
f629e6 |
.Fn fts_open ,
|
|
Packit Service |
f629e6 |
i.e., the arguments specified to
|
|
Packit Service |
f629e6 |
.Fn fts_open .
|
|
Packit Service |
f629e6 |
Otherwise, if the
|
|
Packit Service |
f629e6 |
.Fa FTSENT
|
|
Packit Service |
f629e6 |
structure most recently returned by
|
|
Packit Service |
f629e6 |
.Fn fts_read
|
|
Packit Service |
f629e6 |
is not a directory being visited in pre-order,
|
|
Packit Service |
f629e6 |
or the directory does not contain any files,
|
|
Packit Service |
f629e6 |
.Fn fts_children
|
|
Packit Service |
f629e6 |
returns
|
|
Packit Service |
f629e6 |
.Dv NULL
|
|
Packit Service |
f629e6 |
and sets
|
|
Packit Service |
f629e6 |
.Va errno
|
|
Packit Service |
f629e6 |
to zero.
|
|
Packit Service |
f629e6 |
If an error occurs,
|
|
Packit Service |
f629e6 |
.Fn fts_children
|
|
Packit Service |
f629e6 |
returns
|
|
Packit Service |
f629e6 |
.Dv NULL
|
|
Packit Service |
f629e6 |
and sets
|
|
Packit Service |
f629e6 |
.Va errno
|
|
Packit Service |
f629e6 |
appropriately.
|
|
Packit Service |
f629e6 |
.Pp
|
|
Packit Service |
f629e6 |
The
|
|
Packit Service |
f629e6 |
.Fa FTSENT
|
|
Packit Service |
f629e6 |
structures returned by
|
|
Packit Service |
f629e6 |
.Fn fts_children
|
|
Packit Service |
f629e6 |
may be overwritten after a call to
|
|
Packit Service |
f629e6 |
.Fn fts_children ,
|
|
Packit Service |
f629e6 |
.Fn fts_close
|
|
Packit Service |
f629e6 |
or
|
|
Packit Service |
f629e6 |
.Fn fts_read
|
|
Packit Service |
f629e6 |
on the same file hierarchy stream.
|
|
Packit Service |
f629e6 |
.Pp
|
|
Packit Service |
f629e6 |
.Em Option
|
|
Packit Service |
f629e6 |
may be set to the following value:
|
|
Packit Service |
f629e6 |
.Bl -tag -width "FTS_COMFOLLOW "
|
|
Packit Service |
f629e6 |
.It Dv FTS_NAMEONLY
|
|
Packit Service |
f629e6 |
Only the names of the files are needed.
|
|
Packit Service |
f629e6 |
The contents of all the fields in the returned linked list of structures
|
|
Packit Service |
f629e6 |
are undefined with the exception of the
|
|
Packit Service |
f629e6 |
.Fa fts_name
|
|
Packit Service |
f629e6 |
and
|
|
Packit Service |
f629e6 |
.Fa fts_namelen
|
|
Packit Service |
f629e6 |
fields.
|
|
Packit Service |
f629e6 |
.El
|
|
Packit Service |
f629e6 |
.Sh FTS_SET
|
|
Packit Service |
f629e6 |
The function
|
|
Packit Service |
f629e6 |
.Fn fts_set
|
|
Packit Service |
f629e6 |
allows the user application to determine further processing for the
|
|
Packit Service |
f629e6 |
file
|
|
Packit Service |
f629e6 |
.Fa f
|
|
Packit Service |
f629e6 |
of the stream
|
|
Packit Service |
f629e6 |
.Fa ftsp .
|
|
Packit Service |
f629e6 |
The
|
|
Packit Service |
f629e6 |
.Fn fts_set
|
|
Packit Service |
f629e6 |
function
|
|
Packit Service |
f629e6 |
returns 0 on success, and \-1 if an error occurs.
|
|
Packit Service |
f629e6 |
.Em Option
|
|
Packit Service |
f629e6 |
must be set to one of the following values:
|
|
Packit Service |
f629e6 |
.Bl -tag -width "FTS_COMFOLLOW "
|
|
Packit Service |
f629e6 |
.It Dv FTS_AGAIN
|
|
Packit Service |
f629e6 |
Re-visit the file; any file type may be re-visited.
|
|
Packit Service |
f629e6 |
The next call to
|
|
Packit Service |
f629e6 |
.Fn fts_read
|
|
Packit Service |
f629e6 |
will return the referenced file.
|
|
Packit Service |
f629e6 |
The
|
|
Packit Service |
f629e6 |
.Fa fts_stat
|
|
Packit Service |
f629e6 |
and
|
|
Packit Service |
f629e6 |
.Fa fts_info
|
|
Packit Service |
f629e6 |
fields of the structure will be reinitialized at that time,
|
|
Packit Service |
f629e6 |
but no other fields will have been changed.
|
|
Packit Service |
f629e6 |
This option is meaningful only for the most recently returned
|
|
Packit Service |
f629e6 |
file from
|
|
Packit Service |
f629e6 |
.Fn fts_read .
|
|
Packit Service |
f629e6 |
Normal use is for post-order directory visits, where it causes the
|
|
Packit Service |
f629e6 |
directory to be re-visited (in both pre and post-order) as well as all
|
|
Packit Service |
f629e6 |
of its descendants.
|
|
Packit Service |
f629e6 |
.It Dv FTS_FOLLOW
|
|
Packit Service |
f629e6 |
The referenced file must be a symbolic link.
|
|
Packit Service |
f629e6 |
If the referenced file is the one most recently returned by
|
|
Packit Service |
f629e6 |
.Fn fts_read ,
|
|
Packit Service |
f629e6 |
the next call to
|
|
Packit Service |
f629e6 |
.Fn fts_read
|
|
Packit Service |
f629e6 |
returns the file with the
|
|
Packit Service |
f629e6 |
.Fa fts_info
|
|
Packit Service |
f629e6 |
and
|
|
Packit Service |
f629e6 |
.Fa fts_statp
|
|
Packit Service |
f629e6 |
fields reinitialized to reflect the target of the symbolic link instead
|
|
Packit Service |
f629e6 |
of the symbolic link itself.
|
|
Packit Service |
f629e6 |
If the file is one of those most recently returned by
|
|
Packit Service |
f629e6 |
.Fn fts_children ,
|
|
Packit Service |
f629e6 |
the
|
|
Packit Service |
f629e6 |
.Fa fts_info
|
|
Packit Service |
f629e6 |
and
|
|
Packit Service |
f629e6 |
.Fa fts_statp
|
|
Packit Service |
f629e6 |
fields of the structure, when returned by
|
|
Packit Service |
f629e6 |
.Fn fts_read ,
|
|
Packit Service |
f629e6 |
will reflect the target of the symbolic link instead of the symbolic link
|
|
Packit Service |
f629e6 |
itself.
|
|
Packit Service |
f629e6 |
In either case, if the target of the symbolic link does not exist the
|
|
Packit Service |
f629e6 |
fields of the returned structure will be unchanged and the
|
|
Packit Service |
f629e6 |
.Fa fts_info
|
|
Packit Service |
f629e6 |
field will be set to
|
|
Packit Service |
f629e6 |
.Dv FTS_SLNONE .
|
|
Packit Service |
f629e6 |
.Pp
|
|
Packit Service |
f629e6 |
If the target of the link is a directory, the pre-order return, followed
|
|
Packit Service |
f629e6 |
by the return of all of its descendants, followed by a post-order return,
|
|
Packit Service |
f629e6 |
is done.
|
|
Packit Service |
f629e6 |
.It Dv FTS_SKIP
|
|
Packit Service |
f629e6 |
No descendants of this file are visited.
|
|
Packit Service |
f629e6 |
The file may be one of those most recently returned by either
|
|
Packit Service |
f629e6 |
.Fn fts_children
|
|
Packit Service |
f629e6 |
or
|
|
Packit Service |
f629e6 |
.Fn fts_read .
|
|
Packit Service |
f629e6 |
.El
|
|
Packit Service |
f629e6 |
.Sh FTS_CLOSE
|
|
Packit Service |
f629e6 |
The
|
|
Packit Service |
f629e6 |
.Fn fts_close
|
|
Packit Service |
f629e6 |
function closes a file hierarchy stream
|
|
Packit Service |
f629e6 |
.Fa ftsp
|
|
Packit Service |
f629e6 |
and restores the current directory to the directory from which
|
|
Packit Service |
f629e6 |
.Fn fts_open
|
|
Packit Service |
f629e6 |
was called to open
|
|
Packit Service |
f629e6 |
.Fa ftsp .
|
|
Packit Service |
f629e6 |
The
|
|
Packit Service |
f629e6 |
.Fn fts_close
|
|
Packit Service |
f629e6 |
function
|
|
Packit Service |
f629e6 |
returns 0 on success, and \-1 if an error occurs.
|
|
Packit Service |
f629e6 |
.Sh ERRORS
|
|
Packit Service |
f629e6 |
The function
|
|
Packit Service |
f629e6 |
.Fn fts_open
|
|
Packit Service |
f629e6 |
may fail and set
|
|
Packit Service |
f629e6 |
.Va errno
|
|
Packit Service |
f629e6 |
for any of the errors specified for the library functions
|
|
Packit Service |
f629e6 |
.Xr open 2
|
|
Packit Service |
f629e6 |
and
|
|
Packit Service |
f629e6 |
.Xr malloc 3 .
|
|
Packit Service |
f629e6 |
.Pp
|
|
Packit Service |
f629e6 |
The function
|
|
Packit Service |
f629e6 |
.Fn fts_close
|
|
Packit Service |
f629e6 |
may fail and set
|
|
Packit Service |
f629e6 |
.Va errno
|
|
Packit Service |
f629e6 |
for any of the errors specified for the library functions
|
|
Packit Service |
f629e6 |
.Xr chdir 2
|
|
Packit Service |
f629e6 |
and
|
|
Packit Service |
f629e6 |
.Xr close 2 .
|
|
Packit Service |
f629e6 |
.Pp
|
|
Packit Service |
f629e6 |
The functions
|
|
Packit Service |
f629e6 |
.Fn fts_read
|
|
Packit Service |
f629e6 |
and
|
|
Packit Service |
f629e6 |
.Fn fts_children
|
|
Packit Service |
f629e6 |
may fail and set
|
|
Packit Service |
f629e6 |
.Va errno
|
|
Packit Service |
f629e6 |
for any of the errors specified for the library functions
|
|
Packit Service |
f629e6 |
.Xr chdir 2 ,
|
|
Packit Service |
f629e6 |
.Xr malloc 3 ,
|
|
Packit Service |
f629e6 |
.Xr opendir 3 ,
|
|
Packit Service |
f629e6 |
.Xr readdir 3
|
|
Packit Service |
f629e6 |
and
|
|
Packit Service |
f629e6 |
.Xr stat 2 .
|
|
Packit Service |
f629e6 |
.Pp
|
|
Packit Service |
f629e6 |
In addition,
|
|
Packit Service |
f629e6 |
.Fn fts_children ,
|
|
Packit Service |
f629e6 |
.Fn fts_open
|
|
Packit Service |
f629e6 |
and
|
|
Packit Service |
f629e6 |
.Fn fts_set
|
|
Packit Service |
f629e6 |
may fail and set
|
|
Packit Service |
f629e6 |
.Va errno
|
|
Packit Service |
f629e6 |
as follows:
|
|
Packit Service |
f629e6 |
.Bl -tag -width Er
|
|
Packit Service |
f629e6 |
.It Bq Er EINVAL
|
|
Packit Service |
f629e6 |
The options were invalid.
|
|
Packit Service |
f629e6 |
.El
|
|
Packit Service |
f629e6 |
.Sh SEE ALSO
|
|
Packit Service |
f629e6 |
.Xr find 1 ,
|
|
Packit Service |
f629e6 |
.Xr chdir 2 ,
|
|
Packit Service |
f629e6 |
.Xr stat 2 ,
|
|
Packit Service |
f629e6 |
.Xr qsort 3 ,
|
|
Packit Service |
f629e6 |
.Xr symlink 7
|
|
Packit Service |
f629e6 |
.Sh STANDARDS
|
|
Packit Service |
f629e6 |
The
|
|
Packit Service |
f629e6 |
.Nm
|
|
Packit Service |
f629e6 |
utility was expected to be included in the
|
|
Packit Service |
f629e6 |
.St -p1003.1-88
|
|
Packit Service |
f629e6 |
revision.
|
|
Packit Service |
f629e6 |
But twenty years later, it still was not included in the
|
|
Packit Service |
f629e6 |
.St -p1003.1-2008
|
|
Packit Service |
f629e6 |
revision.
|