ftw.3
上传用户:zibowangxu
上传日期:2007-01-04
资源大小:331k
文件大小:5k
源码类别:

Ftp客户端

开发平台:

Unix_Linux

  1. ."
  2. ." Copyright (c) 1999 WU-FTPD Development Group. 
  3. ." All rights reserved.
  4. ." 
  5. ." Portions Copyright (c) 1980, 1985, 1988, 1989, 1990, 1991, 1993, 1994 
  6. ." The Regents of the University of California.  Portions Copyright (c) 
  7. ." 1993, 1994 Washington University in Saint Louis.  Portions Copyright 
  8. ." (c) 1996, 1998 Berkeley Software Design, Inc.  Portions Copyright (c) 
  9. ." 1998 Sendmail, Inc.  Portions Copyright (c) 1983, 1995, 1996, 1997 Eric 
  10. ." P. Allman.  Portions Copyright (c) 1989 Massachusetts Institute of 
  11. ." Technology.  Portions Copyright (c) 1997 Stan Barber.  Portions 
  12. ." Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997 Free Software 
  13. ." Foundation, Inc.  Portions Copyright (c) 1997 Kent Landfield. 
  14. ."
  15. ." Use and distribution of this software and its source code are governed 
  16. ." by the terms and conditions of the WU-FTPD Software License ("LICENSE"). 
  17. ."
  18. ."     $Id: ftw.3,v 1.3 1999/08/27 14:45:11 wuftpd Exp $
  19. ."
  20. .TH TREEWALK 3 August 4, 1988
  21. .UC 4
  22. .SH NAME
  23. ftw, treewalk - tree walk
  24. .SH SYNOPSIS
  25. .nf
  26. .B #include <ftw.h>
  27. .PP
  28. .B ftw(path, function, maxfds)
  29. .B char *path;
  30. .B int (*function)(), maxfds;
  31. .B treewalk(path, function, maxfds, options)
  32. .B char *path;
  33. .B int (*function)(), maxfds, options;
  34. .fi
  35. .SH DESCRIPTION
  36. .PP
  37. The fItreewalkfP call descends the directory hierarchy rooted in
  38. fIpathfP, visiting each node in turn.  Visiting a node consists of
  39. calling the routine fIfunctionfP with three arguments.  The first
  40. is the current path name, the second a pointer to a stat structure
  41. containing information about the path name, and the third a flag
  42. value.  The declaration of the function may be as follows:
  43. .nf
  44. #include <sys/stat.h>
  45. function(path, st, flag)
  46. char *path;
  47. struct stat *st;
  48. int flag;
  49. .fi
  50. .PP
  51. The fIflagfP value will be one the following values, as specified in
  52. <fIftw.hfP>.
  53. .PP
  54. .RS
  55.  FTW_F a regular file
  56.  FTW_D a directory
  57.  FTW_D2 second visit to a directory
  58.  FTW_DNR an unreadable directory
  59.  FTW_NS an unknown type, the stat failed
  60. .RE
  61. .PP
  62. If the flag value is fIFTW_NSfP, the contents of the stat buffer are
  63. undefined.
  64. .PP
  65. fIMaxfdsfP governs the number of file descriptors that fItreewalkfP may
  66. use.  If passed as -1, no limit is set.  Unless fIfunctionfP needs
  67. to open files, -1 is the suggested behavior.
  68. .PP
  69. fIOptionsfP is a bit mask which changes the behavior of fItreewalkfP.
  70. Its value is set by or'ing together any of the following values specified
  71. in <fIftw.hfP>.
  72. .PP
  73. .RS
  74.  FTW_CHDIR fItreewalkfP may change directories
  75.  FTW_DIRLAST visit the node after its descendents
  76.  FTW_SYMLINK follow symbolic links
  77. .RE
  78. .PP
  79. fIFTW_CHDIRfP allows fItreewalkfP to descend the tree using the
  80. fIchdirfP(2) system call.  This makes fItreewalkfP run much faster.
  81. A side effect of this flag is that all path names passed to fIfunctionfP
  82. are relative, not absolute.
  83. .PP
  84. By default, fItreewalkfP does a depth-first search, visiting each node
  85. before any of its descendents.  If fIfunctionfP returns any other value
  86. than 0 or -1, fItreewalkfP will not continue, but will return this value
  87. to its caller.  If the returned value is -1, fItreewalkfP will continue,
  88. but no descendents of the current node will be visited.  The
  89. fIFTW_DIRLASTfP flag causes fItreewalkfP to visit the node again after
  90. all of its descendents have been visited.  The second visit to the directory
  91. will call fIfunctionfP with the fIFTW_D2fP flag instead of fIFTW_DfP.
  92. .PP
  93. If fIFTW_SYMLINKfP is set, fItreewalkfP will pass the result of a
  94. fIstatfP(2) call to fIfunctionfP, rather than an fIlstatfP(2) call.
  95. In the case of symbolic links pointing to directories, fItreewalkfP
  96. will continue down the directory tree pointed to by the link.  If
  97. fItreewalkfP is unable to indirect through the link, the node will
  98. be ignored and fIfunctionfP will not be called.  It should also be
  99. noted that if the symbolic links form a loop, fItreewalkfP will not
  100. detect this condition.
  101. .PP
  102. If fItreewalkfP detects any error other than EACCES (see fIFTW_NSfP,
  103. fIFTW_DNRfP, and fIFTW_CHDIRfP, above) or EMFILE (in the case of
  104. running out of file descriptors) it returns -1 to its caller, leaving
  105. fIerrnofP unchanged.
  106. .SH BUGS
  107. The fIpathfP string passed to fIfunctionfP is the buffer currently
  108. being processed by fItreewalkfP and must therefore be copied before
  109. any modifications are made.
  110. .SH HISTORY
  111. The fItreewalkfP routine is a superset of the fIftwfP routine as
  112. provided by System V.  fIFtwfP is available for compatibility.
  113. .SH SEE ALSO
  114. find(1), getdtablesize(2), stat(2), symlink(2), glob(3)