• 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/carbon/morefile/
1/*
2     File:       FileCopy.h
3
4     Contains:   A robust, general purpose file copy routine.
5
6     Version:    Technology: MoreFiles
7                 Release:    1.5.2
8
9     Copyright:  � 1992-2001 by 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 __FILECOPY__
29#define __FILECOPY__
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
64EXTERN_API( OSErr )
65FileCopy(
66  short              srcVRefNum,
67  long               srcDirID,
68  ConstStr255Param   srcName,
69  short              dstVRefNum,
70  long               dstDirID,
71  ConstStr255Param   dstPathname,
72  ConstStr255Param   copyName,
73  void *             copyBufferPtr,
74  long               copyBufferSize,
75  Boolean            preflight);
76
77
78/*
79    The FileCopy function duplicates a file and optionally renames it.
80    Since the PBHCopyFile routine is only available on some
81    AFP server volumes under specific conditions, this routine
82    either uses PBHCopyFile, or does all of the work PBHCopyFile
83    does.  The srcVRefNum, srcDirID and srcName are used to
84    determine the location of the file to copy.  The dstVRefNum
85    dstDirID and dstPathname are used to determine the location of
86    the destination directory.  If copyName <> NIL, then it points
87    to the name of the new file.  If copyBufferPtr <> NIL, it
88    points to a buffer of copyBufferSize that is used to copy
89    the file's data.  The larger the supplied buffer, the
90    faster the copy.  If copyBufferPtr = NIL, then this routine
91    allocates a buffer in the application heap. If you pass a
92    copy buffer to this routine, make its size a multiple of 512
93    ($200) bytes for optimum performance.
94
95    srcVRefNum      input:  Source volume specification.
96    srcDirID        input:  Source directory ID.
97    srcName         input:  Source file name.
98    dstVRefNum      input:  Destination volume specification.
99    dstDirID        input:  Destination directory ID.
100    dstPathname     input:  Pointer to destination directory name, or
101                            nil when dstDirID specifies a directory.
102    copyName        input:  Points to the new file name if the file is
103                            to be renamed or nil if the file isn't to
104                            be renamed.
105    copyBufferPtr   input:  Points to a buffer of copyBufferSize that
106                            is used the i/o buffer for the copy or
107                            nil if you want FileCopy to allocate its
108                            own buffer in the application heap.
109    copyBufferSize  input:  The size of the buffer pointed to
110                            by copyBufferPtr.
111    preflight       input:  If true, FileCopy makes sure there are enough
112                            allocation blocks on the destination volume to
113                            hold both the data and resource forks before
114                            starting the copy.
115
116    Result Codes
117        noErr               0       No error
118        readErr             �19     Driver does not respond to read requests
119        writErr             �20     Driver does not respond to write requests
120        badUnitErr          �21     Driver reference number does not
121                                    match unit table
122        unitEmptyErr        �22     Driver reference number specifies a
123                                    nil handle in unit table
124        abortErr            �27     Request aborted by KillIO
125        notOpenErr          �28     Driver not open
126        dskFulErr           -34     Destination volume is full
127        nsvErr              -35     No such volume
128        ioErr               -36     I/O error
129        bdNamErr            -37     Bad filename
130        tmfoErr             -42     Too many files open
131        fnfErr              -43     Source file not found, or destination
132                                    directory does not exist
133        wPrErr              -44     Volume locked by hardware
134        fLckdErr            -45     File is locked
135        vLckdErr            -46     Destination volume is read-only
136        fBsyErr             -47     The source or destination file could
137                                    not be opened with the correct access
138                                    modes
139        dupFNErr            -48     Destination file already exists
140        opWrErr             -49     File already open for writing
141        paramErr            -50     No default volume or function not
142                                    supported by volume
143        permErr             -54     File is already open and cannot be opened using specified deny modes
144        memFullErr          -108    Copy buffer could not be allocated
145        dirNFErr            -120    Directory not found or incomplete pathname
146        wrgVolTypErr        -123    Function not supported by volume
147        afpAccessDenied     -5000   User does not have the correct access
148        afpDenyConflict     -5006   The source or destination file could
149                                    not be opened with the correct access
150                                    modes
151        afpObjectTypeErr    -5025   Source is a directory, directory not found
152                                    or incomplete pathname
153
154    __________
155
156    Also see:   FSpFileCopy, DirectoryCopy, FSpDirectoryCopy
157*/
158
159/*****************************************************************************/
160
161EXTERN_API( OSErr )
162FSpFileCopy(
163  const FSSpec *     srcSpec,
164  const FSSpec *     dstSpec,
165  ConstStr255Param   copyName,
166  void *             copyBufferPtr,
167  long               copyBufferSize,
168  Boolean            preflight);
169
170
171/*
172    The FSpFileCopy function duplicates a file and optionally renames it.
173    Since the PBHCopyFile routine is only available on some
174    AFP server volumes under specific conditions, this routine
175    either uses PBHCopyFile, or does all of the work PBHCopyFile
176    does.  The srcSpec is used to
177    determine the location of the file to copy.  The dstSpec is
178    used to determine the location of the
179    destination directory.  If copyName <> NIL, then it points
180    to the name of the new file.  If copyBufferPtr <> NIL, it
181    points to a buffer of copyBufferSize that is used to copy
182    the file's data.  The larger the supplied buffer, the
183    faster the copy.  If copyBufferPtr = NIL, then this routine
184    allocates a buffer in the application heap. If you pass a
185    copy buffer to this routine, make its size a multiple of 512
186    ($200) bytes for optimum performance.
187
188    srcSpec         input:  An FSSpec record specifying the source file.
189    dstSpec         input:  An FSSpec record specifying the destination
190                            directory.
191    copyName        input:  Points to the new file name if the file is
192                            to be renamed or nil if the file isn't to
193                            be renamed.
194    copyBufferPtr   input:  Points to a buffer of copyBufferSize that
195                            is used the i/o buffer for the copy or
196                            nil if you want FileCopy to allocate its
197                            own buffer in the application heap.
198    copyBufferSize  input:  The size of the buffer pointed to
199                            by copyBufferPtr.
200    preflight       input:  If true, FSpFileCopy makes sure there are
201                            enough allocation blocks on the destination
202                            volume to hold both the data and resource forks
203                            before starting the copy.
204
205    Result Codes
206        noErr               0       No error
207        readErr             �19     Driver does not respond to read requests
208        writErr             �20     Driver does not respond to write requests
209        badUnitErr          �21     Driver reference number does not
210                                    match unit table
211        unitEmptyErr        �22     Driver reference number specifies a
212                                    nil handle in unit table
213        abortErr            �27     Request aborted by KillIO
214        notOpenErr          �28     Driver not open
215        dskFulErr           -34     Destination volume is full
216        nsvErr              -35     No such volume
217        ioErr               -36     I/O error
218        bdNamErr            -37     Bad filename
219        tmfoErr             -42     Too many files open
220        fnfErr              -43     Source file not found, or destination
221                                    directory does not exist
222        wPrErr              -44     Volume locked by hardware
223        fLckdErr            -45     File is locked
224        vLckdErr            -46     Destination volume is read-only
225        fBsyErr             -47     The source or destination file could
226                                    not be opened with the correct access
227                                    modes
228        dupFNErr            -48     Destination file already exists
229        opWrErr             -49     File already open for writing
230        paramErr            -50     No default volume or function not
231                                    supported by volume
232        permErr             -54     File is already open and cannot be opened using specified deny modes
233        memFullErr          -108    Copy buffer could not be allocated
234        dirNFErr            -120    Directory not found or incomplete pathname
235        wrgVolTypErr        -123    Function not supported by volume
236        afpAccessDenied     -5000   User does not have the correct access
237        afpDenyConflict     -5006   The source or destination file could
238                                    not be opened with the correct access
239                                    modes
240        afpObjectTypeErr    -5025   Source is a directory, directory not found
241                                    or incomplete pathname
242
243    __________
244
245    Also see:   FileCopy, DirectoryCopy, FSpDirectoryCopy
246*/
247
248/*****************************************************************************/
249
250#include "OptimizationEnd.h"
251
252#if PRAGMA_STRUCT_ALIGN
253    #pragma options align=reset
254#elif PRAGMA_STRUCT_PACKPUSH
255    #pragma pack(pop)
256#elif PRAGMA_STRUCT_PACK
257    #pragma pack()
258#endif
259
260#ifdef PRAGMA_IMPORT_OFF
261#pragma import off
262#elif PRAGMA_IMPORT
263#pragma import reset
264#endif
265
266#ifdef __cplusplus
267}
268#endif
269
270#endif /* __FILECOPY__ */
271
272