]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/morefile/FileCopy.h
removed assert(size != 0) from wxArrayString::Alloc(size) as it was inconsistent...
[wxWidgets.git] / src / mac / morefile / FileCopy.h
index 5f4c008e25a68acf8cb1e0e8418e4dcd0017fd33..a855f1f96f54271e3bed37b8436e85e965671968 100644 (file)
 /*
-**     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.
+     File:       FileCopy.h
+     Contains:   A robust, general purpose file copy routine.
+     Version:    Technology: MoreFiles
+                 Release:    1.5.2
+     Copyright:  © 1992-2001 by Apple Computer, Inc., all rights reserved.
+     Bugs?:      For bug reports, consult the following page on
+                 the World Wide Web:
+                     http://developer.apple.com/bugreporter/
+*/
+
+/*
+    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>
+#ifndef __MACTYPES__
+#include <MacTypes.h>
+#endif
+
+#ifndef __FILES__
 #include <Files.h>
+#endif
 
-#include "Optim.h"
+#include "Optimization.h"
+
+
+#if PRAGMA_ONCE
+#pragma once
+#endif
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
+#if PRAGMA_IMPORT
+#pragma import on
+#endif
+
+#if PRAGMA_STRUCT_ALIGN
+    #pragma options align=mac68k
+#elif PRAGMA_STRUCT_PACKPUSH
+    #pragma pack(push, 2)
+#elif PRAGMA_STRUCT_PACK
+    #pragma pack(2)
+#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
+EXTERN_API( OSErr )
+FileCopy(
+  short              srcVRefNum,
+  long               srcDirID,
+  ConstStr255Param   srcName,
+  short              dstVRefNum,
+  long               dstDirID,
+  ConstStr255Param   dstPathname,
+  ConstStr255Param   copyName,
+  void *             copyBufferPtr,
+  long               copyBufferSize,
+  Boolean            preflight);
+
+
+/*
+    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
+EXTERN_API( OSErr )
+FSpFileCopy(
+  const FSSpec *     srcSpec,
+  const FSSpec *     dstSpec,
+  ConstStr255Param   copyName,
+  void *             copyBufferPtr,
+  long               copyBufferSize,
+  Boolean            preflight);
+
+
+/*
+    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
 */
 
 /*****************************************************************************/
 
+#include "OptimizationEnd.h"
+
+#if PRAGMA_STRUCT_ALIGN
+    #pragma options align=reset
+#elif PRAGMA_STRUCT_PACKPUSH
+    #pragma pack(pop)
+#elif PRAGMA_STRUCT_PACK
+    #pragma pack()
+#endif
+
+#ifdef PRAGMA_IMPORT_OFF
+#pragma import off
+#elif PRAGMA_IMPORT
+#pragma import reset
+#endif
+
 #ifdef __cplusplus
 }
 #endif
 
-#include "OptimEnd.h"
+#endif /* __FILECOPY__ */
 
-#endif /* __FILECOPY__ */