• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/ap/gpl/amule/wxWidgets-2.8.12/src/mac/classic/morefile/
1/*
2     File:       IterateDirectory.h
3
4     Contains:   File Manager directory iterator routines.
5
6     Version:    Technology: MoreFiles
7                 Release:    1.5.2
8
9     Copyright:  � 1995-2001 by Jim Luther and Apple Computer, Inc., all rights reserved.
10
11     Bugs?:      For bug reports, consult the following page on
12                 the World Wide Web:
13
14                     http://developer.apple.com/bugreporter/
15
16*/
17
18/*
19    You may incorporate this sample code into your applications without
20    restriction, though the sample code has been provided "AS IS" and the
21    responsibility for its operation is 100% yours.  However, what you are
22    not permitted to do is to redistribute the source as "DSC Sample Code"
23    after having made changes. If you're going to re-distribute the source,
24    we require that you make it clear in the source that the code was
25    descended from Apple Sample Code, but that you've made changes.
26*/
27
28#ifndef __ITERATEDIRECTORY__
29#define __ITERATEDIRECTORY__
30
31#ifndef __MACTYPES__
32#include <MacTypes.h>
33#endif
34
35#ifndef __FILES__
36#include <Files.h>
37#endif
38
39#include "Optimization.h"
40
41
42#if PRAGMA_ONCE
43#pragma once
44#endif
45
46#ifdef __cplusplus
47extern "C" {
48#endif
49
50#if PRAGMA_IMPORT
51#pragma import on
52#endif
53
54#if PRAGMA_STRUCT_ALIGN
55    #pragma options align=mac68k
56#elif PRAGMA_STRUCT_PACKPUSH
57    #pragma pack(push, 2)
58#elif PRAGMA_STRUCT_PACK
59    #pragma pack(2)
60#endif
61
62/*****************************************************************************/
63
64typedef CALLBACK_API( void , IterateFilterProcPtr )(const CInfoPBRec *cpbPtr, Boolean *quitFlag, void *yourDataPtr);
65/*
66    This is the prototype for the IterateFilterProc function which is
67    called once for each file and directory found by IterateDirectory. The
68    IterateFilterProc gets a pointer to the CInfoPBRec that IterateDirectory
69    used to call PBGetCatInfo. The IterateFilterProc can use the read-only
70    data in the CInfoPBRec for whatever it wants.
71
72    If the IterateFilterProc wants to stop IterateDirectory, it can set
73    quitFlag to true (quitFlag will be passed to the IterateFilterProc
74    false).
75
76    The yourDataPtr parameter can point to whatever data structure you might
77    want to access from within the IterateFilterProc.
78
79    cpbPtr      input:  A pointer to the CInfoPBRec that IterateDirectory
80                        used to call PBGetCatInfo. The CInfoPBRec and the
81                        data it points to must not be changed by your
82                        IterateFilterProc.
83    quitFlag    output: Your IterateFilterProc can set quitFlag to true
84                        if it wants to stop IterateDirectory.
85    yourDataPtr input:  A pointer to whatever data structure you might
86                        want to access from within the IterateFilterProc.
87
88    __________
89
90    Also see:   IterateDirectory, FSpIterateDirectory
91*/
92#define CallIterateFilterProc(userRoutine, cpbPtr, quitFlag, yourDataPtr) \
93    (*(userRoutine))((cpbPtr), (quitFlag), (yourDataPtr))
94
95/*****************************************************************************/
96
97EXTERN_API( OSErr )
98IterateDirectory(
99  short                  vRefNum,
100  long                   dirID,
101  ConstStr255Param       name,
102  unsigned short         maxLevels,
103  IterateFilterProcPtr   iterateFilter,
104  void *                 yourDataPtr);
105
106
107/*
108    The IterateDirectory function performs a recursive iteration (scan) of
109    the specified directory and calls your IterateFilterProc function once
110    for each file and directory found.
111
112    The maxLevels parameter lets you control how deep the recursion goes.
113    If maxLevels is 1, IterateDirectory only scans the specified directory;
114    if maxLevels is 2, IterateDirectory scans the specified directory and
115    one subdirectory below the specified directory; etc. Set maxLevels to
116    zero to scan all levels.
117
118    The yourDataPtr parameter can point to whatever data structure you might
119    want to access from within the IterateFilterProc.
120
121    vRefNum         input:  Volume specification.
122    dirID           input:  Directory ID.
123    name            input:  Pointer to object name, or nil when dirID
124                            specifies a directory that's the object.
125    maxLevels       input:  Maximum number of directory levels to scan or
126                            zero to scan all directory levels.
127    iterateFilter   input:  A pointer to the routine you want called once
128                            for each file and directory found by
129                            IterateDirectory.
130    yourDataPtr     input:  A pointer to whatever data structure you might
131                            want to access from within the IterateFilterProc.
132
133    Result Codes
134        noErr               0       No error
135        nsvErr              -35     No such volume
136        ioErr               -36     I/O error
137        bdNamErr            -37     Bad filename
138        fnfErr              -43     File not found
139        paramErr            -50     No default volume or iterateFilter was NULL
140        dirNFErr            -120    Directory not found or incomplete pathname
141                                    or a file was passed instead of a directory
142        afpAccessDenied     -5000   User does not have the correct access
143        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
144
145    __________
146
147    See also:   IterateFilterProcPtr, FSpIterateDirectory
148*/
149
150/*****************************************************************************/
151
152EXTERN_API( OSErr )
153FSpIterateDirectory(
154  const FSSpec *         spec,
155  unsigned short         maxLevels,
156  IterateFilterProcPtr   iterateFilter,
157  void *                 yourDataPtr);
158
159
160/*
161    The FSpIterateDirectory function performs a recursive iteration (scan)
162    of the specified directory and calls your IterateFilterProc function once
163    for each file and directory found.
164
165    The maxLevels parameter lets you control how deep the recursion goes.
166    If maxLevels is 1, FSpIterateDirectory only scans the specified directory;
167    if maxLevels is 2, FSpIterateDirectory scans the specified directory and
168    one subdirectory below the specified directory; etc. Set maxLevels to
169    zero to scan all levels.
170
171    The yourDataPtr parameter can point to whatever data structure you might
172    want to access from within the IterateFilterProc.
173
174    spec            input:  An FSSpec record specifying the directory to scan.
175    maxLevels       input:  Maximum number of directory levels to scan or
176                            zero to scan all directory levels.
177    iterateFilter   input:  A pointer to the routine you want called once
178                            for each file and directory found by
179                            FSpIterateDirectory.
180    yourDataPtr     input:  A pointer to whatever data structure you might
181                            want to access from within the IterateFilterProc.
182
183    Result Codes
184        noErr               0       No error
185        nsvErr              -35     No such volume
186        ioErr               -36     I/O error
187        bdNamErr            -37     Bad filename
188        fnfErr              -43     File not found
189        paramErr            -50     No default volume or iterateFilter was NULL
190        dirNFErr            -120    Directory not found or incomplete pathname
191        afpAccessDenied     -5000   User does not have the correct access
192        afpObjectTypeErr    -5025   Directory not found or incomplete pathname
193
194    __________
195
196    See also:   IterateFilterProcPtr, IterateDirectory
197*/
198
199/*****************************************************************************/
200
201#include "OptimizationEnd.h"
202
203#if PRAGMA_STRUCT_ALIGN
204    #pragma options align=reset
205#elif PRAGMA_STRUCT_PACKPUSH
206    #pragma pack(pop)
207#elif PRAGMA_STRUCT_PACK
208    #pragma pack()
209#endif
210
211#ifdef PRAGMA_IMPORT_OFF
212#pragma import off
213#elif PRAGMA_IMPORT
214#pragma import reset
215#endif
216
217#ifdef __cplusplus
218}
219#endif
220
221#endif /* __ITERATEDIRECTORY__ */
222
223