]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/morefile/FileCopy.h
latest CW additions
[wxWidgets.git] / src / mac / morefile / FileCopy.h
diff --git a/src/mac/morefile/FileCopy.h b/src/mac/morefile/FileCopy.h
new file mode 100644 (file)
index 0000000..5f4c008
--- /dev/null
@@ -0,0 +1,220 @@
+/*
+**     Apple Macintosh Developer Technical Support
+**
+**     FileCopy: A robust, general purpose file copy routine.
+**
+**     by Jim Luther, Apple Developer Technical Support Emeritus
+**
+**     File:           FileCopy.h
+**
+**     Copyright © 1992-1998 Apple Computer, Inc.
+**     All rights reserved.
+**
+**     You may incorporate this sample code into your applications without
+**     restriction, though the sample code has been provided "AS IS" and the
+**     responsibility for its operation is 100% yours.  However, what you are
+**     not permitted to do is to redistribute the source as "DSC Sample Code"
+**     after having made changes. If you're going to re-distribute the source,
+**     we require that you make it clear in the source that the code was
+**     descended from Apple Sample Code, but that you've made changes.
+*/
+
+#ifndef __FILECOPY__
+#define __FILECOPY__
+
+#include <Types.h>
+#include <Files.h>
+
+#include "Optim.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*****************************************************************************/
+
+pascal OSErr   FileCopy(short srcVRefNum,
+                                                long srcDirID,
+                                                ConstStr255Param srcName,
+                                                short dstVRefNum,
+                                                long dstDirID,
+                                                ConstStr255Param dstPathname,
+                                                ConstStr255Param copyName,
+                                                void *copyBufferPtr,
+                                                long copyBufferSize,
+                                                Boolean preflight);
+/*     ¦ Duplicate a file and optionally rename it.
+       The FileCopy function duplicates a file and optionally renames it.
+       Since the PBHCopyFile routine is only available on some
+       AFP server volumes under specific conditions, this routine
+       either uses PBHCopyFile, or does all of the work PBHCopyFile
+       does.  The srcVRefNum, srcDirID and srcName are used to
+       determine the location of the file to copy.  The dstVRefNum
+       dstDirID and dstPathname are used to determine the location of
+       the destination directory.  If copyName <> NIL, then it points
+       to the name of the new file.  If copyBufferPtr <> NIL, it
+       points to a buffer of copyBufferSize that is used to copy
+       the file's data.  The larger the supplied buffer, the
+       faster the copy.  If copyBufferPtr = NIL, then this routine
+       allocates a buffer in the application heap. If you pass a
+       copy buffer to this routine, make its size a multiple of 512
+       ($200) bytes for optimum performance.
+       
+       srcVRefNum              input:  Source volume specification.
+       srcDirID                input:  Source directory ID.
+       srcName                 input:  Source file name.
+       dstVRefNum              input:  Destination volume specification.
+       dstDirID                input:  Destination directory ID.
+       dstPathname             input:  Pointer to destination directory name, or
+                                                       nil when dstDirID specifies a directory.
+       copyName                input:  Points to the new file name if the file is
+                                                       to be renamed or nil if the file isn't to
+                                                       be renamed.
+       copyBufferPtr   input:  Points to a buffer of copyBufferSize that
+                                                       is used the i/o buffer for the copy or
+                                                       nil if you want FileCopy to allocate its
+                                                       own buffer in the application heap.
+       copyBufferSize  input:  The size of the buffer pointed to
+                                                       by copyBufferPtr.
+       preflight               input:  If true, FileCopy makes sure there are enough
+                                                       allocation blocks on the destination volume to
+                                                       hold both the data and resource forks before
+                                                       starting the copy.
+       
+       Result Codes
+               noErr                           0               No error
+               readErr                         Ð19             Driver does not respond to read requests
+               writErr                         Ð20             Driver does not respond to write requests
+               badUnitErr                      Ð21             Driver reference number does not
+                                                                       match unit table
+               unitEmptyErr            Ð22             Driver reference number specifies a
+                                                                       nil handle in unit table
+               abortErr                        Ð27             Request aborted by KillIO
+               notOpenErr                      Ð28             Driver not open
+               dskFulErr                       -34             Destination volume is full
+               nsvErr                          -35             No such volume
+               ioErr                           -36             I/O error
+               bdNamErr                        -37             Bad filename
+               tmfoErr                         -42             Too many files open
+               fnfErr                          -43             Source file not found, or destination
+                                                                       directory does not exist
+               wPrErr                          -44             Volume locked by hardware
+               fLckdErr                        -45             File is locked
+               vLckdErr                        -46             Destination volume is read-only
+               fBsyErr                         -47             The source or destination file could
+                                                                       not be opened with the correct access
+                                                                       modes
+               dupFNErr                        -48             Destination file already exists
+               opWrErr                         -49             File already open for writing
+               paramErr                        -50             No default volume or function not
+                                                                       supported by volume
+               permErr                         -54             File is already open and cannot be opened using specified deny modes
+               memFullErr                      -108    Copy buffer could not be allocated
+               dirNFErr                        -120    Directory not found or incomplete pathname
+               wrgVolTypErr            -123    Function not supported by volume
+               afpAccessDenied         -5000   User does not have the correct access
+               afpDenyConflict         -5006   The source or destination file could
+                                                                       not be opened with the correct access
+                                                                       modes
+               afpObjectTypeErr        -5025   Source is a directory, directory not found
+                                                                       or incomplete pathname
+       
+       __________
+       
+       Also see:       FSpFileCopy, DirectoryCopy, FSpDirectoryCopy
+*/
+
+/*****************************************************************************/
+
+pascal OSErr   FSpFileCopy(const FSSpec *srcSpec,
+                                                       const FSSpec *dstSpec,
+                                                       ConstStr255Param copyName,
+                                                       void *copyBufferPtr,
+                                                       long copyBufferSize,
+                                                       Boolean preflight);
+/*     ¦ Duplicate a file and optionally rename it.
+       The FSpFileCopy function duplicates a file and optionally renames it.
+       Since the PBHCopyFile routine is only available on some
+       AFP server volumes under specific conditions, this routine
+       either uses PBHCopyFile, or does all of the work PBHCopyFile
+       does.  The srcSpec is used to
+       determine the location of the file to copy.  The dstSpec is
+       used to determine the location of the
+       destination directory.  If copyName <> NIL, then it points
+       to the name of the new file.  If copyBufferPtr <> NIL, it
+       points to a buffer of copyBufferSize that is used to copy
+       the file's data.  The larger the supplied buffer, the
+       faster the copy.  If copyBufferPtr = NIL, then this routine
+       allocates a buffer in the application heap. If you pass a
+       copy buffer to this routine, make its size a multiple of 512
+       ($200) bytes for optimum performance.
+       
+       srcSpec                 input:  An FSSpec record specifying the source file.
+       dstSpec                 input:  An FSSpec record specifying the destination
+                                                       directory.
+       copyName                input:  Points to the new file name if the file is
+                                                       to be renamed or nil if the file isn't to
+                                                       be renamed.
+       copyBufferPtr   input:  Points to a buffer of copyBufferSize that
+                                                       is used the i/o buffer for the copy or
+                                                       nil if you want FileCopy to allocate its
+                                                       own buffer in the application heap.
+       copyBufferSize  input:  The size of the buffer pointed to
+                                                       by copyBufferPtr.
+       preflight               input:  If true, FSpFileCopy makes sure there are
+                                                       enough allocation blocks on the destination
+                                                       volume to hold both the data and resource forks
+                                                       before starting the copy.
+       
+       Result Codes
+               noErr                           0               No error
+               readErr                         Ð19             Driver does not respond to read requests
+               writErr                         Ð20             Driver does not respond to write requests
+               badUnitErr                      Ð21             Driver reference number does not
+                                                                       match unit table
+               unitEmptyErr            Ð22             Driver reference number specifies a
+                                                                       nil handle in unit table
+               abortErr                        Ð27             Request aborted by KillIO
+               notOpenErr                      Ð28             Driver not open
+               dskFulErr                       -34             Destination volume is full
+               nsvErr                          -35             No such volume
+               ioErr                           -36             I/O error
+               bdNamErr                        -37             Bad filename
+               tmfoErr                         -42             Too many files open
+               fnfErr                          -43             Source file not found, or destination
+                                                                       directory does not exist
+               wPrErr                          -44             Volume locked by hardware
+               fLckdErr                        -45             File is locked
+               vLckdErr                        -46             Destination volume is read-only
+               fBsyErr                         -47             The source or destination file could
+                                                                       not be opened with the correct access
+                                                                       modes
+               dupFNErr                        -48             Destination file already exists
+               opWrErr                         -49             File already open for writing
+               paramErr                        -50             No default volume or function not
+                                                                       supported by volume
+               permErr                         -54             File is already open and cannot be opened using specified deny modes
+               memFullErr                      -108    Copy buffer could not be allocated
+               dirNFErr                        -120    Directory not found or incomplete pathname
+               wrgVolTypErr            -123    Function not supported by volume
+               afpAccessDenied         -5000   User does not have the correct access
+               afpDenyConflict         -5006   The source or destination file could
+                                                                       not be opened with the correct access
+                                                                       modes
+               afpObjectTypeErr        -5025   Source is a directory, directory not found
+                                                                       or incomplete pathname
+       
+       __________
+       
+       Also see:       FileCopy, DirectoryCopy, FSpDirectoryCopy
+*/
+
+/*****************************************************************************/
+
+#ifdef __cplusplus
+}
+#endif
+
+#include "OptimEnd.h"
+
+#endif /* __FILECOPY__ */