Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ ftw(S) — Xenix 2.3.4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

stat(S)

malloc(S)



     FTW(S)                   XENIX System V                    FTW(S)



     Name
          ftw - Walks a file tree.

     Syntax
          #include <ftw.h>

          int ftw (path, fn, depth)
          char *path;
          int (*fn) ( );
          int depth;

     Description
          ftw recursively descends the directory hierarchy routed in
          path.  For each object in the hierarchy, ftw calls fn,
          passing it a pointer to a null-terminated character string.
          This string contains the name of the object, a pointer to a
          stat structure with information about the object, and an
          integer.  Possible values for the integer include FTW_F for
          a file, FTW_D for a directory, FTW_DNR for a directory that
          cannot be read, and FTW_NS for an object for which stat
          could not be successfully executed.  These values are
          defined in the <ftw.h> header file.  If the integer is
          FTW_DNR, descendants of the directory will not be processed.
          If the integer is FTW_NS, the stat structure will contain
          meaningless information.  For example, a file in a directory
          with read but without execute permission could cause FTW_FN
          to be passed to fn.

          ftw visits a directory before visiting any of its
          descendants.  The file tree traversal continues until the
          tree is exhausted, fn returns a nonzero value, or some error
          is detected within ftw (for example, an I/O error).  If the
          file tree is exhausted, ftw returns zero.  If fn returns a
          nonzero value, ftw stops traversing the file tree and
          returns the value returned by fn.  If ftw detects an error,
          it returns -1, and sets the error type in errno.

          ftw uses one file descriptor for each level in the tree.
          depth limits the number of file descriptors. This argument
          must not be greater than the number of file descriptors
          currently available for use.  Zero or negative values for
          depth are interpreted as 1.  ftw will run more quickly if
          depth is at least as large as the number of levels in the
          tree.

     See Also
          stat(S), malloc(S)

     Notes
          Because ftw is recursive, it can terminate with a memory
          fault when applied to very deep file structures.




     Page 1                                           (printed 8/7/87)





     FTW(S)                   XENIX System V                    FTW(S)



          ftw uses malloc(S) to allocate dynamic storage during its
          operation.  If ftw is forcibly terminated (for example, by
          longjmp being executed by fn or by an interrupt routine),
          ftw will not have a chance to free that storage, and it will
          remain permanently allocated.  A safe way to handle
          interrupts is to store the fact that an interrupt has
          occurred, and have fn return a nonzero value at its next
          invocation.















































     Page 2                                           (printed 8/7/87)



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