Return to BSD News archive
Path: euryale.cc.adfa.oz.au!newshost.anu.edu.au!harbinger.cc.monash.edu.au!simtel!news.sprintlink.net!howland.reston.ans.net!nntp.crl.com!crl.crl.com!not-for-mail From: ggrant@crl.com (Gary E. Grant) Newsgroups: comp.unix.misc,comp.unix.bsd.freebsd.misc Subject: Re: equivalent of ftw Date: 16 Nov 1995 12:21:02 -0800 Organization: This old house in montreal Lines: 68 Message-ID: <48g6fe$1pt@crl.crl.com> References: <48fvbg$ava@jupiter.planet.net> NNTP-Posting-Host: crl.com Keywords: unix, ftw, C lib Xref: euryale.cc.adfa.oz.au comp.unix.misc:19513 comp.unix.bsd.freebsd.misc:8997 In article <48fvbg$ava@jupiter.planet.net>, HCLA Deepak Goel <hcla@earth.planet.net> wrote: >Hi, > >I am porting an application to NextStep OS. >This application uses ftw C library call at many >places and it is not available with NextStep OS. > >Is there any known equivalent to ftw? >Is there any public domain library which includes >this function? Why don't you just 'roll your own ' FTW() ? Shouldnt take more than 10-20 minutes to write it in C/C++. FTW is a simple tree (traversal) routine. Else go to the FREEBSD sources for the system call ftw() and use that code on the NextStep o/s. Gary :-) ===================================== DESCRIPTION ftw() recursively descends the directory hierarchy rooted in path. For each object in the hierarchy, ftw() calls fn, passing it a pointer to a null-terminated character string containing the name of the object, a pointer to a stat() structure (see stat(2V)) containing information about the object, and an integer. Possible values of the integer, defined in the <ftw.h> header file, are 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 successfully be executed. If the integer is FTW_DNR, des- cendants of that directory will not be processed. If the integer is FTW_NS, the stat() structure will contain gar- bage. An example of an object that would cause FTW_NS to be passed to fn would be a file in a directory with read but without execute (search) permission. ftw() visits a directory before visiting any of its descen- dants. The tree traversal continues until the tree is exhausted, an invocation of fn returns a nonzero value, or some error is detected within ftw() (such as an I/O error). If the tree is exhausted, ftw() returns zero. If fn returns a nonzero value, ftw() stops its tree traversal and returns whatever value was 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. The depth argument limits the number of file descriptors so used. If depth is zero or negative, the effect is the same as if it were 1. depth must not be greater than the number of file descriptors currently available for use. ftw() will run more quickly if depth is at least as large as the number of levels in the tree. SEE ALSO stat(2V), malloc(3V) BUGS Because ftw() is recursive, it is possible for it to Sun Release 4.1 Last change: 22 November 1987 1